介绍
- Struts的作用
标签提供了主题,模板的支持,简化了视图页面的编写。语序在页面中使用自定义组件,满足了项目中页面显示复杂,多变的需求。
2. 分类
* UI标签,用于生成HTML元素的标签,可以分为表单标签和非表单标签
* 非UI标签,主要用于数据访问,逻辑控制等的标签。包括用于实现分支、循环等流程控制的标签和数据访问标签(主要包括用户输出ValueStack中的值,完成国际化等功能)
* ajax标签
使用前的准备
- 要在使用标签的jsp页面引入标签库
<%@ taglib url="/struts-tags" prefix="s"%>
- 在web.xml中药声明要使用的标签,这个是2.3版本的引入方式
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apche.strtues.dispatcher.ng.flter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
标签的使用
- property标签
用于输出指定的值:
<s:property value="${name}" /> <s:property value="name"> <s:property value=${@cm.csdn.hr.domain.Uer@study()}>
以上可以方位某一个包的类的属性的集中方式,study()是访问方法的方法,并输出。
假设在action中设置了不同作用域的类
不同的作用域的标签的访问- 获取request中的对象值
<s:property value="#request.user.name"> <s:property value="#request.user['name']"> <s:prpperty value="#attr.user.name">
其中attr是按照page-request-session-appliction的顺序来找的
- 获取session中的值(和取request中的值差不多)
<s:property value="#session.user.name">
- 获取application中的对象的值
<s:property value="#application.user.name">
5.iterator标签的使用
- list集合
先设置set集合 value
statue可选属性,该属性指定迭代时的iteratorStatus实例
list存放在request中,使用value=”#request.list”
statu.odd返回当前被迭代元素的索引是否是奇数
<s:set name="list" value="value{'a','b','c','d'}"><s:set>
<s:iterator var="ent" value="#request.list" status="statu">
<s:if tets="%{#statu.odd}">
<font color="red"><s:property value="#ent">
</font>
</s:if>
<s:property value="#ent" />
</s:else>
</s:iterator>
- map集合中的使用
map集合的特点:语法格式:#{key:value,key1:value1,key2:value2,…}
以上的语法就直接生成了一个Map类的集合,该Map对象中的每个key-value对象之间用英文的冒号隔开,对个元素之间用逗号。
<s:set var="map" value="#{'1':'张三','2':张三}"></s:set>
//遍历map
<br />
<s:iterator value="#map">
<s:property value="key" />:::<s:property value="value" />
<br />
</s:iterator>
- 集合的遍历
遍历出价格大于3000的
<s:iterator var="user" value="session['users']">
<s:if test="%{#user['price']>3000}">
<s:property value="#user['price']">
</s:if>
</s:iterator>
<hr color="blue" /><!--$是取出介个大于3000的最后一个值-->
<s:iterator var="u" value="session.users.{$(#this['price']>3000)}">
<s:property value="price" />
<s:iterator>
uers是User的对象,price是User中的一个属性
简述一下iterator的介绍
iterator标签用于对集合进行迭代,这里的集合包含list,set和数组。
其中:
value:可选属性,指定被集合迭代的集合,如果没有设置该属性,则使用ValueStack栈顶的集合
id:可选属性,该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法:
int getCount(),返回当前迭代了几个元素。
int getIndex(),返回当前迭代元素的索引。
boolean isEven(),返回当前被迭代元素的索引是否是偶数。
boolean isOdd(),返回当前被迭代元素是否是第一个奇数。
boolean idFirst(),返回当前被迭代元素是否是第一个元素。
boolean isLast(),返回当前被迭代元素是否是最后一个元素。
- if…else的使用
<s:set name="age" value="21" />
<s:if test="#age==23">
23
</s:if>
<s:esleif test="#age==21">
21
</s:eslseif>
<s:else>
not find
</s:else>
- 表单
通过登录代码来查看
系统中使用的一些标签
- 在form_include.jsp中
<s:textfield key="name" type="text" cssClass="text"></s:textfield>
- 在edit.jsp中
<s:form action="action" method="post" id="formId">
<s:hidden id="parameterId" name="parameterId"></s:hidden>
</s:form>
解释一下这几个常用的
- textfield
在系统中,from_include.jsp页面是对节点详细信息进行展示的页面
通过设置key值,来取得节点的name值
- form和传统的form没什么大的区别