Struts标签学习

来源:互联网 发布:大数据分析师 编辑:程序博客网 时间:2024/06/07 02:16
struts标签学习
4.1 首先需要引入struts标签库
<%@ taglib prefix="html" uri="http://strusts.apache.org/tags-html" %>

4.2 html 标签实例
<html:button property="uname" value="提交"></html:button>  
实际上 上面这句话等价于 <input type="button" name="uname" value="提交" />

4.3 html标签中base标签
<html:base ref="www.baidu.com" /> 
<a href="#">goto</a>
因为上面的超链接没有设置值,但是由于有base标签,当点击上面那个超链接的时候还是会跳转到百度

4.5 html标签中<html:image> 和<html:img>的区别
<html:image>  表示像图片按钮那样的东西     等价于<input type="image" name="" src="" />
<html:img>  表示真正的图片                 等价于:<img src="" >

4.6  html标签 中超链接的形式
<html:link href="www.baidu.com" >百度</html:link>  等价于<a href="www.baidu.com">百度</a>

4.7 struts的html标签,如果涉及到输入信息,struts框架认为需要跟一个表单类对应,而且应当
放到一个<html:form>中,这样才能正常使用
如果没有对应的表单,直接写<html:text>会报错
而且,如果<html:checkbox property="fruit" value="apple">apple</html:checkbox>
如果在表单的属性中没有fruit属性,也会报错,也就是说,struts的标签很严格
<html:text>  等价于:<input type="text" />

4.8 <html:form> 中的action的值不需要带上项目名称
如:  <html:form action="/login.do" method="post">
 </html:form>

4.9 在使用了struts标签库的页面中,也可以直接使用常用的html元素  

4.10  用struts标签,当填写表单后,点击提交,会跳到另外一个页面,然后点击回退键,退回后的页面上的数据仍然保留
着,而如果是普通的表单的话,点击回退后,退到原表单,表单数据会被清空的!!这算是struts标签的好处

4.11 struts中如果出现中文乱码,需要使用过滤器,当设置编码方式的时候,可以直接在过滤器中配置:
在web.xml文件中:
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.zy.filter.MyFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

这样配置后,需要在读取配置的时候,去读取设置的值:
在init方法中,可以使用:
在外面定义个全局变量
private String encoding;  //因为需要在doFilter()方法中使用
public void init(FilterConfig filterConfig) throws ServletException{
encoding = filterConfig.getInitParameter("encoding");
}
然后就可以在doFilter()方法中设置,这样就没有把编码方式写死
arg0.setCharacterEncoding(encoding);

4.12 如果有多个过滤器,书写有先后的顺序,写在前面的过滤器,先过滤
比如,外面可以先写个编码方式的过滤器,再写个关键字的过滤器,那么就
应该保证编码方式的过滤器在前面,关键字的过滤器在后面

4.13 在过滤器中可以对关键字过滤,对相应的关键字进行判断,跳转的话,需要使用
ServletRequest 对象的getRequestDispatcher("").forward(arg0,arg1);进行跳转

直接return 就行

5. struts标签中 bean标签的使用
5.1 <bean:write> 用于输出信息
request.setAttribute("abc","hello");
<bean:write name="abc" >这样就可以输出hello了
注意:这里不能用${abc}

<bean:write>输出对象的属性
Cat cat = new Cat();
cat.setName("maomi");
cat.setAge(3);
request.setAttribute("cat1",cat);
输出的话:
<bean:write name="cat1" property="name">   输出cat1的 setName()方法

5.2  bean:message 标签用来从指定的local中取回国际化的消息并输出,
在这个过程中我们还可以传递5个以内的参数,
messageKey 可以通过key直接指定,也可以通过name和property间接指定
messageKey  是在messageresources文件中定义的,可以在
struts-config.xml文件中使用<message-resources>来设置resources文件

注意:jdk安装目录下的bin路径下有个native2ascii.exe文件
如果属性文件设置编码是utf-8,但是在页面上出现中文乱码信息,则可以
通过在资源文件中配置该中文为其对应的ascii码,用上面的native2ascii 就可以查询中文对应的ascii码


5.3 在messageresources 属性文件中可以配置如下:
key1 = welcome{0}
err1= hello {0}

上面的0代表第一个参数,最多能够配置5个参数
取出参数:
<bean:message key="key1" arg0="jone" />
<bean:message key="err1" arg0="用户名为空" />

这样在页面上输出:welcome jone   hello 用户名为空
也就是说:用arg0中的参数,替代资源文件中的{0}的位置

5.4 <bean:define id="keke" name="abc" value="hello" scope="request" ></bean:define>
这句话的意思是在request域中放入id为keke,名称为abc,值为hello的对象
可以通过name或者id去取出

5.5 struts的logic标签,logic标签库主要用于管理和条件相关的输出,对某些对象进行迭代输出,
和流程管理,常用的有:logic:iterate logic:present  logic:notPresent

5.6 如何设置myeclipse中编译过程中的错误和警告
window --->preference---->Java---->Compiler--->Errors/Warning
Generic types 泛型

6. logic标签的使用 
Cat cat1 = new Cat();
cat1.setName("aaa");
Cat cat2 = new Cat();
cat2.setName("aaa");
Cat cat3 = new Cat();
cat3 setName("aaa");
ArrayList al = new ArrayList();
al.add(cat1);
al.add(cat2);
al.add(cat3);
request.setAttribute("cats",al);
<logic:iterate id="mycat" name="cats">
<bean:write name="mycat" property="name">  或者${mycat.name}
</logic:iterate>
这样就是使用了logic的iterate标签
通用原则如下:jstl,el表达式,struts标签

6.1 logic的empty标签 判空标签
<logic:empty name="ee">
如果上面的属性不存在,就会显示这句话
</logic:empty>

6.2  logic中判断大小的标签,<logic:greaterThan>
<logic:iterate id="mycat" name="cats">   cats 是cat的集合对象
<logic:greaterThan name="mycat" value="20" property="age">
<bean:write name="mycat" property="name"/> 年龄大于20<br>
</logic:greaterThan>
</logic:iterate>

7.分派action(dispatchAction)
为什么要有dispatchAction? 
因为,如果对于每一个请求都写一个action与之对应,那么,随着功能的增加,
程序中的action的个数就会越来越多,这样会使得程序显得很臃肿,
所以有了dispatchAction 
好处:①使得程序更加简洁 ②利于维护和扩展

原创粉丝点击