status="statu">? <s:if test="%{#statu.odd}">? color="red"><s:property value="#ent" />? </font>? <s:else>? <s:property value="#ent" />? </s:else>?</s:iterator>? ?第二
种:map集合中的使用? <h3>Map集合</h3>? <!-- map? 语法格式:# {key:value,key1:value1,key2:value2,.....} ? 以上的语法
中就直接生成了一个Map类型的集合,该Map对象中的每个key-value对象之间用英文的冒
号隔开 ? ,多个元素之间用逗号分隔。 ? --> </div>?? <s:set var="map" value="#{'1':'laowang','2':'老王','3':'猩猩 遍历Map:? <br />? <s:iterator value="#map"> <s:property value="key" />:::<s:property value="value" />? <Br
</s:iterator>\??第三种:集合的变量?<h3>遍历集合:::</h3>? <!-- 遍历出价格大于3000的 -->? <s:iterator var="uservalue="#session['users']">? <s:if <s:property value="#user['price']"/>? </s:if> </s:iterator>? ? ? color="blue"/><!-- $是取出价格 大于3000的最后一个值 -->? var="u" value="#session.users.{$(#this['price']>3000)}">? value="price"/>? </s:iterator>? </div>?注:users是User的
对象,price是User中的一个属性??简述一下iterator的介绍:?iterator标签用于对集合进
行迭代,这里的集合包含List、Set和数组。?<s:set name="listvalue="{'zhangming','xiaoi','liming'}" />?<s:iterator value="#list" status="st">? color=<s:if test="#st.odd">red</s:if><s:else>blue</s:else>>? /></font><br>?</s:iterator> ?value则使用ValueStack栈顶的集合。?id:可选属性,指定集合里元素的id。?status该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法:? int getCount(),
返回当前迭代了几个元素。? int getIndex(),返回当前迭代元素的索引。? isEven(),返回当前被迭代元素的索引是否是偶数? boolean isOdd(),返回当前被迭代元
素的索引是否是奇数? boolean isFirst(),返回当前被迭代元素是否是第一个元素。
boolean isLast(),返回当前被迭代元素是否是最后一个元素。???(3)if else语句的使用
<s:set name="age" value="21" />?<s:if test="#age==23">? test="#age==21">? 21?</s:elseif>?<s:else>? 都不等?</s:else> ??(4)URL标签
<!-- 声明一个URL地址 -->? <s:url action="test" namespace="/tag" <s:param name="username">laowangang</s:param>? name="id">12</s:param>? </s:url>? <s:a href="%{add}">测试 <s:a action="test" namespace="/tag"></s:a>? 以上的两个<s:a>标签的作用是一样的。?(5data标签?<%? pageContext.setAttribute("birth",neDate(200,03,10),PageContext.REQUEST_SCOPE);? %>? name="#request.birth" format="yyyy年MM月dd日"/>? <s:daname="#request.birth" nice="true"/>? 这个标签是按照format的格式去输出的。??(6表单?? ? <h1>from表单</h1>? <s:form namespace="/tag">? <s:textfield label="用户名" name="uname" tooltip="你的名
字" javascriptTooltip="false"></s:textfield>? <s:textarea cols="40" rows="20" tooltipDelay="300" tooltip="hi" label="备注javascriptTooltip="true"></s:textarea>? <s:password label="密码
Struts2 2.2.1 零配置总结
Struts2 2.2.1这个版本相对于长使用的Struts2 2.0.14版本变化很多。
一、Web.xml中使用的拦截器变化了,Struts2 2.2.1已经不推荐使用
org.apache.struts2.dispatcher.FilterDispatcher
现在推荐使用
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
这点改进官方说法是更好的支持Struts2与其他拦截器的共同使用
二、Struts2的零配置 Struts2 2.2.1与Struts2 2.0.14零配置方便发生了很大的变动,Struts2 2.0.14零配置Annotation由struts2-codebehind-plugin-2.0.14.jar支持,而最新版本中已经推荐使用struts2-convention-plugin-2.2.1.jar。主要有一下几点变动
1) @Result中的type属性由类类型变成字符串类型。
chain com.opensymphony.xwork2.ActionChainResult
dispatcher org.apache.struts2.dispatcher.ServletDispatcherResult
freemarker org.apache.struts2.views.freemarker.FreemarkerResult
httpheader org.apache.struts2.dispatcher.HttpHeaderResult
redirect org.apache.struts2.dispatcher.ServletRedirectResult
redirectAction org.apache.struts2.dispatcher.ServletActionRedirectResult stream org.apache.struts2.dispatcher.StreamResult
velocity org.apache.struts2.dispatcher.VelocityResult
xslt org.apache.struts2.views.xslt.XSLTResult
plainText org.apache.struts2.dispatcher.PlainTextResult
这是名称和类的映射关系
2) @Result value属性由location取代
3) 经典配置比较:
Structs2 2.0.14:
@Namespace("/")
@ParentPackage("default")
@Results({
@Result(name = Action.SUCCESS, type = ActionChainResult.class, ), @Result(name = "exception", value="error.jsp") value = "result", params = { "actionName", "chain", "namespace", "/" }
})
Structs2 2.2.1:
@Namespace("/")
@ParentPackage("default")
@Results({
@Result(name = Action.SUCCESS, type = “chain”, ), @Result(name = "exception", location="error.jsp") params = { "actionName", "chain", "namespace", "/" }
})
4) 使用零配置后命名规则变更,Struts2 2.0.14命名规则是首字符小写,例如HelloWorldAction的Action是helloWorld.action。Struts2 2.2.1默认是所有小写两个单词间使用-,对于HelloWorldAction的Action是hello-world.action。
Struts2 2.2.1可以通过在Struts.xml中加入配置恢复以前的命名规则:
<bean type="org.apache.struts2.convention.ActionNameBuilder" name="defaultConvention" class="org.apache.struts2.convention.DefaultActionNameBuilder"/>
<constant name="struts.convention.actionNameBuilder" value="defaultConvention"/>
5) Struts2 2.2.1的ChainIntercepter有Bug,导致使用chain Result时,两个Action中的内容不能复制,方法是自定一个ChainIntercepter,自定义的ChainIntercepter使用Struts2 2.0.14即可
struts2标签一写jsp页面的时候在struts2中用的是s标记先引入标记lttaglibprefixquotsquoturi…
1输出action中属性值在jsp页面中显示用ltspropertyvaluequot属性名quotgt如果是对象域则表示为lts…
Struts2常用标签总结Struts2常用标签总结002一介绍0031Struts2的作用Struts2标签库提供了主题模板支持…
001Struts2常用标签总结002一介绍0031Struts2的作用Struts2标签库提供了主题模板支持极大地简化了视图页面…
libviewopen1331393920xx2htmlStruts2常用标签总结一介绍1Struts2的作用Struts2标签库…
Struts2框架培训日志92020xxStruts2框架培训日志Struts框架的起源Struts是在20xx年5月发布第一个版…
Struts2项目开发总结注Struts2版本Struts216数据库Oracle9i所须架包commonslogging104j…
Day1一框架概述1三大框架是企业主流JavaEE开发的一套架构Struts2SpringHibernate2什么是框架为什么要学…
Struts2基础三种方式接收用户输入1使用领域对象接收用户输入2使用ModelDrivenaction页面示例注意代码黑体部分3…
1Struts2中Action通过什么方式获得用户从页面输入的数据又是通过什么方式把其自身的数据传给视图的Action从页面获取数…