struts2.0的标签库(简介)
用过struts1.x的人都知道,标签库有html、bean、logic、tiles,
而struts2.0里的标签却没有分类,只用在jsp头文件加上
<%@ taglib prefix="s" uri="/struts-tags" %>
就能使用struts2.0的标签库
下面就介绍下每个标签的用法(有错请指正):
A:
-----超链接,类似于html里的
-----执行一个view里面的一个action
-----如果action的errors有值那么显示出来
-----如果action的message有值那么显示出来
-----添加一个值到list,类似于list.add();
-----自动完成标签的内容,这个是ajax
B:
-----类似于struts1.x中的,JavaBean的值
C:
-----复选框
-----多选框
-----下拉框
-----图像符号
D:
-----获取日期格式
-----日期输入框
-----显示错误信息
-----表示一个块,类似于html的
-----双下拉框
E:
-----这3个标签一起使用,表示条件判断
F:
-----显示文件错误信息
-----文件上传
-----获取相应form的值
G:
----和标签一起使用
H:
-----在里使用,表示头文件结束
-----隐藏值
I:
-----加载资源包到值堆栈
-----包含一个输出,servlet或jsp页面
-----获取form的一个输入
-----用于遍历集合
L:
-----只读的标签
M:
-----合并遍历集合出来的值
O:
-----获取标签组
-----左右选择框
P:
-----为其他标签提供参数
-----密码输入框
-----得到'value'的属性
-----value的值push到栈中,从而使property标签的能够获取value的属性
R:
-----单选按钮
-----重置按钮
S:
-----单选框
-----赋予变量一个特定范围内的值
-----通过属性给list分类
-----提交按钮
-----为遍历集合输出子集
T:
-----表格框
-----表格
-----I18n文本信息
-----文本域输入框
-----文本输入框
-----拦截器
-----树
-----树的结构
U:
-----多选择框
-----创建url
.html标签
1.html元素的标签:
a1. 链接中的name
a2. 链接到站点外
a3. 同一个应用
如:包含请求参数:
包含单个请求变量:<% String stringBean = "Value to Pass on URL";
pageContext.setAttribute("stringBean", stringBean);%>
//要有范围
包含多个请求变量: <% java.util.HashMap myMap = new java.util.HashMap();
myMap.put("myString", new String("myStringValue") );
myMap.put("myArray", new String[] { "str1", "str2", "str3" });
pageContext.setAttribute("map", myMap);%>
url
b.: //也可以包含单个或多个请求变量
2.基本表单标签:,,,,
Cancel :Action中的取消事件:
FormBasicForm fbf = (FormBasicForm) form;
if (isCancelled(request)) { fbf.setStatus("Cancel was pressed!");
return (mapping.findForward("success")); }//表示取消选中
else { fbf.setStatus("Submit was pressed!");
return (mapping.findForward("success")); }
3.下拉列表和多选列表
// multiple下拉可多选
Orange //基本的页面输入
//从资源文件中显示
<% Vector colorCollection = new Vector(); colorCollection.add(
new org.apache.struts.util.LabelValueBean("Pink", "htmlselect.pink"));
colorCollection.add( // Pink为label htmlselect.pink为value
new org.apache.struts.util.LabelValueBean("Brown", "htmlselect.brown"));
pageContext.setAttribute("colorCollection", colorCollection); %>
// labelProperty显示值
4.显示错误消息: errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("key") );
a.显示全局:
b.显示特定字段: errors.add("checkbox1", new ActionMessage("error.checkbox"));
//bundle资源文件
5.显示信息:
a.//如果为true则从全局中搜索
则:ActionMessages actionMessages=new ActionMessages();
actionMessages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage(“key”));
saveMessages(request,actionMessages);
b.从一定的范围中查找:
则:protected void saveMessages(HttpServletRequest request,ActionMessages messages){
...request.setAttribute(GLOBAL_MESSAGE_key,messages); }
二:Struts Bean标签
1.访问http请求信息和JSP对象
a. // value为默认值
<% if (cookie.getValue().equals("firsttime")) {
Cookie c = new Cookie("cookiedemo", "Hi Linda!");
c.setComment("A test cookie");c.setMaxAge(3600);response.addCookie(c);} %>
输出:
b.
c. //检索JSP范围,隐含对象
d. // value为默认值
检索多值:
通过链接传递参数:
循环输出:<% for (int i=0; i ");} %>
2.访问WEB应用资源:
a. //默认资源文件中:hello=Hello,{0}
<% request.setAttribute("stringBean","hello"); SomeBean bean=new SomeBean();
bean.setName("hello"); request.setAttribute("someBean",bean); %>
通过变量名或javaBean得到key值再访问资源文件:
// bundle不能省,只能访问资源文件
b. 同,但将WEB资源存放在一个变量中,有forward,page,href
3.定义或输出javaBean,bean:write标签filter为true时会将特殊符号转换成普通字符串
a.value属性:
name和property属性:<% request.setAttribute("sessionBean", session); %>
// contextBean为javax.servlet.ServletContext类型,实例化
name和type属性(用于复制):
三.Struts Logic标签:
1.逻辑判断:(greatEqual,lessEqual,greatThan...)
<% Cookie c = new Cookie("username", "Linda"); c.setComment("A test cookie");
c.setMaxAge(3600); response.addCookie(c); %>
a.UserName is Linda
b. <% SomeBean bean=new SomeBean(); bean.setName("Linda");
request.setAttribute("someBean",bean);%>
not Tom
c. <% request.setAttribute("number","100"); %>
"100" 小于"100.0a"
2.字符串匹配:变量中是否包含指定的字符串
<% request.setAttribute("authorName", "LindaSun");%>
a.
has the string 'Sun' in it.
//还有end属性
starts with the string 'Linda'.
3.判断指定内容是否存在
<% ActionErrors errors = new ActionErrors();
errors.add("totallylost", new ActionMessage("application.totally.lost"));
request.setAttribute(Globals.ERROR_KEY, errors);
request.setAttribute("myerrors",errors);request.setAttribute("emptyString","");%>
a. emptyString is empty!
b.
判断指定的安全角色,用户,cookie,header或javaBean是否存在
c. 在范围内检索key
从Globals.MESSAGE_KEY中检索,不同于Globals.ERROR_KEY
从指定的ActionMessages对象中检索
4.请求转发或重定向a.,与配置中同名
b.,也有page,href和forward三种属性
5.循环遍历//offset为开始位置,indexId为序号
a. 遍历集合<% Vector animals=new Vector(); animals.addElement("Dog");
animals.addElement("Cat"); animals.addElement("Bird");
request.setAttribute("Animals", animals);%>
.
b. 遍历Map<% HashMap h= new HashMap();String fruits[ ] = {"apple","orange","banana"};
h.put("Fruits", fruits); request.setAttribute("catalog", h); %>
//如果value不是集合就不用嵌套了
四.利用Tiles模板和Tiles组件创建复合式网页
1.在web.xml中配置所需要的url和location
2.建立tiles的xml文件放在WEB-INF下:
3.在struts配置文件中配置TilesPlugin插件(ctrl+n):
4.在Action已经存在ActionServlet,并在struts配置文件中配置Action来调用Tiles组件
ForwardAction为Action内置对象,专门负责转发功能,在将请求转发给parameter的组件
5.在index.jsp中插入Tiles组件<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
6.在layout.jsp文件中进行布局并设计好其他页面:
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>
备注:在需要出现的页面只有写就可以插入框架,根据definition中的content改变主体。
7.Tiles组件的组合(type="definition")以示区别
//将一个组件put成另一个组件的元素