Struts2学习之二--Struts2标签介绍
Struts2的介绍及总结
Struts2在WebWork基础上发展起来的,可扩展的JAVA EE web框架。
框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。
Action类:Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。
Struts2提供一个ActionSupport基类去实现常用的接口。
Action接口不是必须的,任何有execute标识的POJO 对象都可以用作Struts2的Action对象。
线程模式:Struts2Action对象为每一个请求产生一个实例,因此没有线程安全问题。
Servlet依赖:Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。
如果需要,Struts2 Action仍然可以访问初始的request和response。
但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
可测试性:Struts2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。
捕获输入:Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。
Action属性能够通过web页面上的taglibs访问。
表达式语言:Struts 2 使用"ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。
ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
Struts2不仅支持JSTL,Struts2 还可使用OGNL进行类型转换。
提供基本和常用对象的转换器。
校验:Struts2支持通过validate方法和XWork校验框架来进行校验。
XWork 校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性。
struts2标签详解[1]
要在jsp中使用Struts2的标志,先要指明标志的引入。
通过jsp的代码的顶部加入以下的代码:<%@taglib prefix="s" uri="/struts-tags" %>If elseif else描述:执行基本的条件流转。
参数:例子:<s:set name="age" value="61"/><s:if test="${age > 60}">老年人</s:if><s:elseif test="${age > 35}">中年人</s:elseif><s:elseif test="${age > 15}" id="wawa">青年人</s:elseif><s:else>少年</s:else><s:set name="name" value="<%="'"+request.getParameter("name")+"'"%>"/><%System.out.println(request.getParameter("name"));%><s:if test="#name=='zhaosoft'">zhaosoft here</s:if><s:elseif test="#name=='zxl'">zxl here</s:elseif><s:else>other is here</s:else>Iterator(迭代)描述:用于遍历集合(java.util.Collection)或枚举值(java.util.iterator) 参数I18n(国际化操作)描述:加载资源包到值堆栈。
Struts2标签库
method
否
指定使用Action旳措施
encode
否
指定是否需要对祈求参数进行编码
includeContex t
否
指定是否需要将目前上下文涉及在URL地址中
anchor id
否
指定URL旳锚点
否
指定该url元素旳引用ID,使用该属性时,生成旳URL不16会 在页面上输出,但能够引用
<h3>s:url生成一种URL地址</h3> 指定value属性旳形式,生成相对途径<br /> <s:url value="reg.action" /> 指定value属性旳形式,生成绝对途径<br /> <s:url value="/reg.action" /><hr /> 指定action属性,而且使用param传入参数旳形式<br /> <s:url action="reg">
<s:param name="method" value="'list'" /> </s:url> 指定action属性,和namespace联合使用<br /> <s:url action="reg" namespace="/admin">
Struts2 表单标签简介
5.5 Struts2 表单标签简介如果有对 HTML 比较熟悉的读者,肯定知道诸如 select 、 chekbox 这些HTML 标签的使用方式。
这些标签其实是可以归类为表单标签。
在 Struts2 中除了这些基本的 HTML 标签的定义外,它还定义了许多特殊的但又基于前述这些HTML 表单标签的个性化标签。
这些表单标签各具特色,是很值得介绍的。
在开发中负责 view 层功能开发的开发人员如果使用这些标签,就能发现 Struts2 提供了多么丰富的 view 层功能。
5.5.1 基础表单标签使用介绍技术要点本节代码具体介绍各个基础表单标签的使用方式。
这些标签其实都可以用HTML 的表单标签来实现。
读者可以了解 Struts2 的这部分表单标签和原有HTML 表单标签实现功能几乎是相同的。
基础表单标签使用。
基础表单标签功能演示。
演示代码基础表单标签的 JSP 文件:Java代码1.<!------------------文件名:basicFormTag.jsp--------------->2.<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%>3.<%@ taglib prefix="s" uri="/struts-tags"%>4.………5. <body>6. <h3 align="left">7.基础表单标签使用范例(可使用HTML标签替代)8. </h3>9. <h3 align="left">10. checkbox标签使用范例11. </h3>12. <p>13. <s:checkbox label="别墅" name="bieshu" value="true" />14. <s:checkbox label="公寓" name="gongyu" />15. </p>16. <h3 align="left">17. checkboxlist标签使用范例18. </h3>19. <p>20. <s:checkboxlist label="材料" list="{'进户门套油漆', '踢脚线', '大理石', '吊顶'}"21. name="material" />22. </p>23. <h3 align="left">24. file标签使用范例25. </h3>26. <p>27. <s:file name="file" accept="text/*"/>28. <s:file name="file" accept="image/jpeg"></s:file>29. </p>30. <h3 align="left">31. select标签使用范例32. </h3>33. <p>34. <s:select label="下拉框示例" name="material" headerKey="0" headerValue=" "35. list="#{'01':'进户门套油漆','02':'踢脚线','03':'大理石','04':'吊顶'}" />36. </p>37. <h3 align="left">38. optgroup标签使用范例39. </h3>40. <p>41. <s:select label="示例" name="material" headerKey="0" headerValue=" "42. list="#{'01':'进户门套油漆','02':'踢脚线','03':'大理石','04':'吊顶'}" >43.44.45. <s:optgroup label="材料品牌"46.47. list="#{'01':'多乐士超易洗','02':'绿太阳'}"/>48.49. </s:select>50.51. </p>52.53. <h3 align="left">54.55. radio标签使用范例56.57. </h3>58.59. <p>60.61. <s:radio label="材料" list="{'进户门套油漆', '踢脚线', '大理石', '吊顶'}"62.63. name="material"/>64.65. </p>66.67. <h3 align="left">68.69. textarea标签使用范例70.71. </h3>72.73. <p>74.75. <s:textarea label="输入文本" labelposition="left" name="textarea" cols="40" rows="10"/>76.77. </p>78.79. <h3 align="left">80.81. textfield标签使用范例82.83. </h3>84.85. <p>86.87. <s:textfield label="输入文本" name="textfield" size="40" maxlength="10"/>88.89. </p>90.91. <h3 align="left">92.93. password标签使用范例94.95. </h3>96.97. <p>98.99. <s:password label="输入密码" name="password" size="20" maxlength="8"/> 100.101. </p>102.103. </body>104.105.</html>功能演示如图 5.18 和图 5.19 。
struts标签使用
HTML:
只能用js写了.事实上struts2 的datetimepicker也是js的封装.
隐藏域:
strut2:
<s:hidden name="Value"/>
struts2的select标签中,常用的有以下几个属性:
(1)struts2中的select 标签中,必须设置的属性只有一个,即是list。
(2)select标签的list中必须有值,不然会报错。如果没有值,可以加上headerKey, headerValue,这样就可以通过了。如:
<select name="lst_QproProduce" id="lst_QproProduce">
<option value="1" selected>英语</option>
<option value="2" selected>汉语</option>
toggleType="wipe"
toggleDuration="300"
displayFormat="yyyy-MM-dd"
name="orderMain.orderDate"/>
说明:${orderMain.orderDate}取类的值,这个参数也可不写,用name就可以。
代码
<s:select name="geElement.childType" list="childTypeList" listKey="key"
struts2资料2
Struts2 标签库详解Struts2标签库包括:OGNLStruts2标签分类控制标签:(if, elseif,else, iterator, append, merge, generator, subset, sort)数据标签:(bean, param,date, debug, include, set, url, push)OGNLObject-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(ExpressionLanguage,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性:,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。
Struts2默认的表达式语言是OGNLOGNL的符号--#:1、访问OGNL上下文和Action上下文,#相当于ActionContext.getContext() .2、构造Map用于过滤和投影(projecting)集合?——所有匹配选择逻辑的元素^——只提取符合选择逻辑的第一个元素$——只提取符合选择逻辑的最后一个元素范例:<s:iterator value="#{'china':'中国','usa':'美国','e':'俄国'}" var="c"><s:property value="#c.key"/>--<s:propertyvalue="#c.value"/><br/></s:iterator>范例:<s:property value="#attr.list.{sname}[0]"/><s:property value="#attr.list.{$#this.sid== 3}.{sname}[0]"/>支持对象方法调用:<s:property value="#attr.p.doSomeThing('李四')"/>调用保存在pageContext中的Student对象的doSomeThing()[N]语法:从ValueStack的第N个位置开始取值top关键字:取出最顶端的对象示例::<s:push value="'阿拉伯联合酋长国'"><s:property value="[0].top"/></s:push>从ValueStack中的第0个位置开始取出最顶部的对象,返回为”阿拉伯联合酋长国”Struts2标签分类1.分类:Struts2标签库:用户界面标签库(表单/非表单标签库),非用户界面标签库(控制标签库,数据访问标签库),ajax支持标签库2.导入taglib<%@taglib prefix=“s”uri=“/struts-tags” %>控制标签1、条件标签if…elseif…else主要属性:: test : 测试条件范例:<%! Random rnd = newRandom(); %><% int n = rnd.nextInt(200);pageContext.setAttribute("n", n); %><s:if test="#attr.n % 7 == 0">恭喜,您中了一等奖! </s:if><s:elseif test="#attr.n % 5 ==0">恭喜,您中了二等奖! </s:elseif><s:else>欢迎惠顾!</s:else>2、迭代标签iterator用于循环数组,集合和Map属性:value:数组,集合或Mapvar:当前元素status:当前元素的状态index,count,even,odd,first,last示例:遍历List<s:iterator value="{'中华人民共和国', '美利坚合众国', '阿拉伯联合酋长国'}" var="cur"status="st"><s:property value="#st.count"/><s:property value="#cur"/><br/></s:iterator>遍历Map<s:iterator value="#{1: '中国', 2: '美国', 3: '日本'}" var="cur"><s:property value="#cur.key"/><s:property value="#cur.value"/><br/></s:iterator>3、集合合并标签append和merge将多个集合合并成一个集合属性::var - 新集合的名称示例:<s:appendvar="newCollection"><s:param value="{'中国', '美国', '日本'}"></s:param><s:param value="{'德国', '泰国', '新加坡'}"></s:param></s:append><s:iterator value="#newCollection"var="cur"><s:property value="#cur"/><br/></s:iterator>注:merge用法和append相同,结果的组织不一样.4、字符串分割标签generator将一个字符串按照指定分隔符分割成一个字符串数组separator: 分隔符val(value): 字符串count:字符串數組中元素個數示例:<s:generator separator=","val="'中,华人,民共和,国'" var="arr"/><s:iterator value="#arr"var="cur"><s:property value="#cur"/><Br/></s:iterator>5、集合子集标签subset从集合中取出一个子集,注意:子集被放在值栈的顶部,subset标签执行完后子集自动移除属性::source: 集合start: 起始索引count: 子集中元素个数示例:<s:subset source="{'中国', '美国', '日本', '德国', '泰国', '新加坡'}" start="1"count="3"><s:iterator var="cur"><s:property value="#cur"/></s:iterator></s:subset>6、排序标签sort根据定义的排序规则,对集合中的元素进行排序,排序后生成的新的集合放在值栈顶部,标签结束后自动删除.属性::comparator: 实现Comparator的类source: 集合示例:<s:bean name="com.aptech.sorted.LengthSorted"var="ls“/><s:sort comparator="#ls"source="{'中1','88w','777','6666'}"><s:iterator><s:property/><br/></s:sort>数据标签1、设置变量标签set用于设置一个新变量,并将新变量放入指定的作用域中属性:Var: 新变量的引用Value:值示例:<s:set var="v1"value="'中华人民共和国'" scope="page"></s:set><s:property value="#attr.v1"/>注:如果不指定,默认放在Stack Context中2、栈顶置值标签push将某个值置于值栈的顶部,标签结束后,将从值栈中移除.属性:value: 即值示例:<s:push value="'中华人民共和国'" ><s:property/></s:push>3、javabean创建标签bean用于创建javabean的实例,如果设置了var值,则存于Stack Context,否则,标签结束后自动移除. 属性:name: javabean类名(带包)var: 名称示例:<s:bean name="com.aptech.entity.Student"var="stu"><s:param name="sid">1</s:param><s:param name="sname">张三好</s:param><s:param name="sbirthday">2009-9-9</s:param></s:bean><s:property value="#stu.sbirthday"/>4、日期格式化标签date格式化日期并输出属性:name:日期format:格式化字符串示例:<%pageContext.setAttribute("d", new Date()); %><s:date name="#attr.d"format="yyyy年MM月dd日HH时mm分ss秒"/> 5、调试标签debug用于当前环境下Value Stack和stackcontext中保存的数据6、资源包含标签include用于将一个html,jsp或servlet包含到当前页面中,使用param传递参数属性:value:包含页面名称示例:<s:include value="MyHtml.html"></s:include>7、URL生成标签url生成URL地址,可以通过param标签传递请求参数,如果参数为中文,自动编码属性:value: url值action: action名称,自动加上.action示例:<s:url value="control.jsp"var="url"><s:param name="id">中华人民共和国</s:param></s:url><a href="<s:propertyvalue="#url" />">链接</a><s:url action="test"var="url2"></s:url><s:property value="#url2"/>8、数据输出标签property用于输出值栈,Stack Context中的数据属性:value:要输出的值如果输出值栈中的值,不用#如果输出Stack Context中的值,要用#如果省略value,表示取出值栈的栈顶对象输出总结OGNL是标签的基础,要理解OGNL的基本使用,在struts2中,OGNL必须和标签紧密配合控制标签包含一组条件判断标签和一组集合遍历和操作标签数据标签包含一组数据访问相关的标签。
通过代码实例跟我学Struts2框架从入门到精通——Struts2框架系统的标签库及iterator标签的应用示例
1.1通过代码实例跟我学Struts2框架从入门到精通——Struts2框架系统的标签库及iterator标签的应用示例1.1.1标签技术概述1、为什么要提出标签库(1)分离页面和逻辑处理几乎是每个MVC框架的重要组成部分。
从Struts1开始,到Webwork2,SpringMVC,都有自己的定义的一套标签库。
但标签库,只是框架的一部分,为了解决页面显示数据、封装简单页面逻辑而产生的类HTML标记的组件。
(2)标签产生的初衷在JSP诞生之初,JSP提供了在HTML代码中嵌入Java代码的特性。
这种特性使得我们可以比较容易的利用Java这种强类型语言的优势,完成许多复杂的业务逻辑。
不过随着时间的推移,我们发现在HTML代码中嵌入过多的Java代码,非常不利于JSP 的维护和扩展。
对于动辄上千行的JSP代码,很多时候,程序员基本丧失了对JSP的维护能力。
基于上述的这个问题,我们尝试使用一种新的技术,来解决上面这些问题。
这也就是标签产生的初衷:1)尽量避免在JSP页面中使用Java代码,而改用类似HTML的标签的形式来表达页面逻辑,让逻辑与显示分离,提高JSP的可维护性;2)由于HTML自身的标签的表达能力不足,通过使用JSP Tag,可以对HTML语义进行扩展,从而完成许多HTML自身标签无法完成的工作2、应用标签技术的优缺点(1)主要的优点1)标签产生的初衷没有错,它的存在,能够简化JSP开发的难度,并对HTML的许多标签进行功能扩展;2)标签从效果上的确在一定程度上解决了在JSP页面中,避免使用Java代码的情况3)由于Java的语法与表现能力上的优势,使用Taglib能够极大程度的封装成块的HTML代码,从而形成一套完整的页面组件,能够极大的简化页面开发(2)主要的缺点●标签只是为了尝试避免在JSP页面中使用Java代码,实际上,这种情况很难避免。
有时候,为了达到这个目的,反而带来了更多的代码和沉重的维护成本。
Struts2的OGNL标签详解
Struts2的OGNL标签详解一、Struts2可以将所有标签分成3类:UI标签:主要用于生成HTML元素的标签。
非UI标签:主要用于数据库访问,逻辑控制等标签。
Ajax标签:用于Ajax支持的标签。
对于UI标签,则有可以分为两类:表当标签:表单标签主要用与生成HTML页面的from元素,以及普通表单元素的标签。
非表单标签:非表单标签主要用于生成页面的树、Tab页等。
流程控制标签:主要包含用于实现分页、循环等流程的标签。
数据访问标签:主要包含用于输出ValueStack中的值,完成国际化等功能的标签。
Struts2标签库分类图:二、使用Struts2标签库的准备:1、在Web.Xml文件中增加标签库d定义。
(如果应用使用的是Servlet2.3以前)2、现在jsp中使用taglib编辑指令导入标签库,然后才可以使用标签。
三、Struts2的OGNL标签:OGNL是Object Graphic Navigation Language的缩写,它是一个开源项目。
Struts2框架使用OGNL作为默认的表达式语言。
在传统的OGNL表达式求值中,系统会假设系统只要一个根对象,但Struts2的Stack Context需要多个“根”对象,其中ValueStacke只是多个“根”对象的其中之一。
假设:使用标签OGNL表达式求值,不是用Struts2的OGNL表达式是求之。
如果系统的Context中包含两个对象:foo对象,它在Context中的名字为foo;bar对象, 并且它在Context中的名为bar。
将foo对象设置成Context的根对象。
返回foo.getBlah()方法的返回值#foo.blah返回bar.getBlah()方法的返回值#bar.blah可以看出ONGL表达式的语法非正常简洁。
Struts2不知根据表达式从ValueStack中取的对象,还可以直接从对象中获取属性。
Struts2提供了一个特殊的OGNL ProperAccessories(属性访问器),它可以自动搜寻栈内的所有实体(从上到下),直接找到求值表达式匹配的属性。
Struts2 标签详解
S truts2 标签详解详细的说明了struts2所有标签由整理版权属 以及原作者。
由于标签太多难做目录索引,如果你觉得有目录索引更好,请到/p/myjdemo/downloads/list下载CHM版本的Struts2标签详解,谢谢。
aa标签创建一个HTML超链接,等价于HTML 的<a href=""....示范代码:<s:a href="login.action">登陆</s:a>action使用action标签可以允许在JSP页面中直接调用Action,因为需要调用Action,故可以指定需要被调用Action的name以及namespace。
如果指定了executeResult参数的属性值为true,该标签还会把Action的处理结果(视图支援)包含到本页面中来。
action标签的属性:id:可选属性,该属性将会作为该Action的引用IDname:必填属性,指定该标签调用哪个Actionnamespace:可选,指定该标签调用的Action所在的namespace. executeResult:可选,指定是否要将Action的处理结果页面包含到本页面。
默认是false,即不包含ignoreContextParams:可选,它指定该页面中的请求参数是否需要传入调用的Action、默认是false,即将本页的请求参数传入被调用的Action。
下面是本示例应用中的Action类,包含连个处理逻辑。
代码如下public class TagAction extednds ActionSupport{//封装用户请求参数的author属性private String author;//author的get和set的方法,省略……public String execute() throws Exception{return "done";}public String login() throws Exception{ServletActionContext.getRequest().setAttribute("author",getAuthor());return "done";}}上面的Action类包含两个处理逻辑,可以在struts.xml文件中通过指定method属性来将该Action类映射成两个逻辑Action。
struts2标签详解
struts2标签详解收藏52、action前缀使用action前缀,取代form标签指定的action,导向到另一个action进行处理。
<s:form action="login"><s:textfield name="ername" label="用户名"></s:textfield><s:textfield name="user.password" label="密码"></s:textfield><s:submit value="登陆"></s:submit><s:submit value="注册" name="action:register"></s:submit></s:form>2、redirect前缀使用redirect前缀请求重定向到其他的url,甚至可以是web英语程序外部的url。
<s:form action="login"><s:textfield name="ername" label="用户名"></s:textfield><s:textfield name="user.password" label="密码"></s:textfield><s:submit value="登陆"></s:submit><s:submit value="搜索" name="redirect:"></s:submit></s:form>2、redirect-action前缀使用redirect-action前缀请求重定向到其他的action.<s:form action="login"><s:textfield name="ername" label="用户名"></s:textfield><s:textfield name="user.password" label="密码"></s:textfield><s:submit value="登陆"></s:submit><s:submit value="搜索" name="redirect-action:register"></s:submit></s:form>reset标签reset标签输出一个重置按钮名称必需默认类型描述type否inputString要使用的重置按钮的内容,input、button<s:reset value="重置"></s:reset><s:reset type="button" label="重置"></s:reset>updownselect标签updownselect标签创建一个带有上下移动的按钮的列表框,可以通过上下移动按钮来调整列表框的选项的位置。
struts标签
<h3>获取application中的对象的值</h3>
第一种方式:<s:property value="#er1.realName"/>
<br/>
第二种方式:<s:property value="#er1['realName']"/>
<br/>
第三种方式:<s:property value="#user1.realName"/>
<br/>
第四种方式:<s:property value="#user1['realName']"/>
<br/>
第五种方式:${er1.realName } || ${er1['realName'] }
<font color="red"><s:property value="#ent" />
</font>
</s:if>
<s:else>
<s:property value="#ent" />
</s:else>
</s:iterator>
第二种:map集合中的使用
<br/>
第二种方式:<s:property value="#er1['realName']"/>
第五种方式:${er1.realName } || ${er1['realName'] }
struts2,标签,表格
竭诚为您提供优质文档/双击可除struts2,标签,表格篇一:struts2常用标签总结struts2常用标签总结一介绍1.struts2的作用struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。
实现了更好的代码复用。
struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。
struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术中使用。
包括最常用的jsp页面,也可以说Velocity和Freemarker等模板技术中的使用2.struts2分类(1)ui标签:(userinterface,用户界面)标签,主要用于生成html元素标签,ui标签又可分为表单标签非表单标签(2)非ui标签,主要用于数据访问,逻辑控制等的标签。
非ui标签可分为流程控制标签(包括用于实现分支、循环等流程控制的标签)和数据访问标签(主要包括用户输出Valuestack中的值,完成国际化等功能的)(3)ajax标签3.struts2标签使用前的准备:(1)在要使用标签的jsp页面引入标签库:(2)在web.xml中声明要使用的标签这样是struts22.3.1.2版本的引入方式struts2org.apache.struts2.dispatcher.ng.filter.strutsprepa reandexecuteFilter4.标签的使用(1)property标签用于输出指定的值:以-->以上可以访问某一个包的类的属性的集中方式,study()是访问方法的方法,并输出。
以下用java代码代替的,访问某一个范围内的属性//采用pagecontext对象往page范围内存入值来验证#attr搜索顺序是从page开始的,搜索的顺序为:page,reques,session,application。
Struts 2讲义 (4)
Struts 2 讲义(4)--Struts2标签1.1.1Struts2标签组成Struts2框架的标签库主要分为用户界面标签(UI标签)、非用户界面标签和AJAX标签三类。
⑴用户界面标签(UI标签):主要用来生成HTML元素的标签:●表单标签:主要用于生成HTML页面的FORM元素以及普通表单元素的标签。
●非表单标签:主要用于生成页面上的Tree、Tab页等。
⑵非用户界面标签(非UI标签):主要用于数据访问、逻辑控制等:●数据访问标签:主要包含用于输出值栈中的值,完成国际化等功能的标签。
●流程控制标签:主要包含用于实现分支、循环等流程控制的标签。
⑶AJAX标签:用于支持Ajax效果。
其中非UI标签和UI标签除了功能不一样之外,最大的区别是UI标签支持模板和主题。
1.1.2Struts2 标签使用自定义标签库通常都有一个标签库描述文件(Tag Library Descriptor,TLD),其中记录了标签的名字、标签处理器类,标签的属性等信息,在JSP中使用标签描述符来解释在JSP页面中使用的自定义标签。
Strus2标签库的描述文件在struts-core-2.0.11.jar压缩文件的MET-INF目录下找到struts-tags.tld文件,这个文件定义了Struts2的标签。
要在JSP页面中引用Struts2标签库,需要使用taglib指令。
在JSP代码的顶部加入以下的代码:<%@ taglib prefix=”s” uri=”/struts-tags”%>Struts2的标签库都支持动态数据的访问,标签的属性都可以使用OGNL表达式,Struts2标签的属性具有类型,一般分为字符串类型和非字符串类型。
⑴对于字符串类型属性的访问,使用下面的语法:<s:include value=”%{字符串名}”/>include标签的value属性都是字符串类型,Struts2会对这个属性进行解析,查找符合“%{…}”样式的字符串,然后将括号之间的内容作为OGNL表达式进行求值,如果属性中没有“%{…}”样式的字符串,属性的值将直接被当成字符串处理。
struts2标签库使用
struts2标签库使用在工程中使用struts2标签一、struts2标签定义文件在struts2-core-2.0.11.1\META-INF 下面,文件名为struts-tags.tld二、如果工程使用了servlet2.3规范,要做两件事,就能在工程中使用struts2标签了1: 在web.xml中增加标签库的定义<taglib><taglib-uri>/struts-tags</taglib-uri><taglib-location>/WEB-INF/lib/struts2-core-2.0.11.1.jar</taglib-location></taglib>/struts-tags 是struts2标签库默认的URI,建议使用这个名称2 在JSP中使用taglib编译指令导入标签库<%@ taglib prefix="s" uri="/struts-tags" %>三、如果使用servlet2.4规范,不须要在web.xml中增加标签库定义,只要做一件事,就行1 在JSP中使用taglib编译指令导入标签库<%@ taglib prefix="s" uri="/struts-tags" %>------------------------------------------------------------------------------------------------------------------------------------------A:<s:a href=""></s:a>-----超链接,类似于html里的<a></a> <s:action name=""></s:action>-----执行一个view里面的一个action<s:actionerror/>-----如果action的errors有值那么显示出来<s:actionmessage/>-----如果action的message有值那么显示出来<s:append></s:append>-----添加一个值到list,类似于list.add();<s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajaxB:<s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值C:<s:checkbox></s:checkbox>-----复选框<s:checkboxlist list=""></s:checkboxlist>-----多选框<s:combobox list=""></s:combobox>-----下拉框<s:component></s:component>-----图像符号D:<s:date/>-----获取日期格式<s:datetimepicker></s:datetimepicker>-----日期输入框<s:debug></s:debug>-----显示错误信息<s:div></s:div>-----表示一个块,类似于html的<div></div> <s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>-----双下拉框E:<s:if test=""></s:if><s:elseif test=""></s:elseif><s:else></s:else>-----这3个标签一起使用,表示条件判断F:<s:fielderror></s:fielderror>-----显示文件错误信息<s:file></s:file>-----文件上传<s:form action=""></s:form>-----获取相应form的值G:<s:generator separator="" val=""></s:generator>----和<s:iterator>标签一起使用H:<s:head/>-----在<head></head>里使用,表示头文件结束<s:hidden></s:hidden>-----隐藏值I:<s:i18n name=""></s:i18n>-----加载资源包到值堆栈<s:include value=""></s:include>-----包含一个输出,servlet 或jsp页面<s:inputtransferselect list=""></s:inputtransferselect>-----获取form的一个输入<s:iterator></s:iterator>-----用于遍历集合L:<s:label></s:label>-----只读的标签M:<s:merge></s:merge>-----合并遍历集合出来的值O:<s:optgroup></s:optgroup>-----获取标签组<s:optiontransferselect doubleList="" list="" doubleName=""></s:optiontransferselect>-----左右选择框P:<s:param></s:param>-----为其他标签提供参数<s:password></s:password>-----密码输入框<s:property/>-----得到'value'的属性<s:push value=""></s:push>-----value的值push到栈中,从而使property标签的能够获取value的属性R:<s:radio list=""></s:radio>-----单选按钮<s:reset></s:reset>-----重置按钮S:<s:select list=""></s:select>-----单选框<s:set name=""></s:set>-----赋予变量一个特定范围内的值<s:sort comparator=""></s:sort>-----通过属性给list分类<s:submit></s:submit>-----提交按钮<s:subset></s:subset>-----为遍历集合输出子集T:<s:tabbedPanel id=""></s:tabbedPanel>-----表格框<s:table></s:table>-----表格<s:text name=""></s:text>-----I18n文本信息<s:textarea></s:textarea>-----文本域输入框<s:textfield></s:textfield>-----文本输入框<s:token></s:token>-----拦截器<s:tree></s:tree>-----树<s:treenode label=""></s:treenode>-----树的结构U:<s:updownselect list=""></s:updownselect>-----多选择框<s:url></s:url>-----创建url。
struts2常用标签详解
struts2标签详解A:<s:a xhref=""></s:a>-----超链接,类似于html里的<a></a><s:action name=""></s:action>-----执行一个view里面的一个action<s:actionerror/>-----如果action的errors有值那么显示出来<s:actionmessage/>-----如果action的message有值那么显示出来<s:append></s:append>-----添加一个值到list,类似于list.add();<s:autocompleter></s:autocompleter>-----自动完成<s:combobox>标签的内容,这个是ajaxB:<s:bean name=""></s:bean>-----类似于struts1.x中的,JavaBean的值C:<s:checkbox></s:checkbox>-----复选框<s:checkboxlist list=""></s:checkboxlist>-----多选框<s:combobox list=""></s:combobox>-----下拉框<s:component></s:component>-----图像符号D:<s:date/>-----获取日期格式<s:datetimepicker></s:datetimepicker>-----日期输入框<s:debug></s:debug>-----显示错误信息<s:div></s:div>-----表示一个块,类似于html的<div></div><s:doubleselect list="" doubleName="" doubleList=""></s:doubleselect>-----双下拉框E:<s:if test="#name=‟hujianqiang‟">asdfasdf</s:if><s:elseif test=""></s:elseif><s:else></s:else>-----这3个标签一起使用,表示条件判断F:<s:fielderror></s:fielderror>-----显示文件错误信息<s:file></s:file>-----文件上传<s:form action=""></s:form>-----获取相应form的值G:<s:generator separator="" val=""></s:generator>----和<s:iterator>标签一起使用H:<s:head/>-----在<head></head>里使用,表示头文件结束<s:hidden></s:hidden>-----隐藏值I:<s:i18n name=""></s:i18n>-----加载资源包到值堆栈<s:include value=""></s:include>-----包含一个输出,servlet或jsp页面<s:inputtransferselect list=""></s:inputtransferselect>-----获取form的一个输入<s:iterator></s:iterator>-----用于遍历集合L:<s:label></s:label>-----只读的标签M:<s:merge></s:merge>-----合并遍历集合出来的值O:<s:optgroup></s:optgroup>-----获取标签组<s:optiontransferselect doubleList="" list="" doubleName=""></s:optiontransferselect>-----左右选择框P:<s:param></s:param>-----为其他标签提供参数<s:password></s:password>-----密码输入框<s:property/>-----得到'value'的属性<s:push value=""></s:push>-----value的值push到栈中,从而使property标签的能够获取value的属性R:<s:radio list=""></s:radio>-----单选按钮<s:reset></s:reset>-----重置按钮S:<s:select list=""></s:select>-----单选框<s:set name=""></s:set>-----赋予变量一个特定范围内的值<s:sort comparator=""></s:sort>-----通过属性给list分类<s:submit></s:submit>-----提交按钮<s:subset></s:subset>-----为遍历集合输出子集T:<s:tabbedPanel id=""></s:tabbedPanel>-----表格框<s:table></s:table>-----表格<s:text name=""></s:text>-----I18n文本信息<s:textarea></s:textarea>-----文本域输入框<s:textfield></s:textfield>-----文本输入框<s:token></s:token>-----拦截器<s:tree></s:tree>-----树<s:treenode label=""></s:treenode>-----树的结构U:<s:updownselect list=""></s:updownselect>-----多选择框<s:url></s:url>-----创建urlStruts2常用的Ajax标签Struts2为了简化Ajax过程,提供了一些常用的Ajax标签,对于一些更复杂的Ajax通信过程,我们可以使用JSON插件来实现。
Struts2_01 Struts2简介_使用Struts2_参数传递_资费列表
1. Struts2简介1.1. 什么是Struts21.1.1. Struts2的概念Struts2是轻量级的MVC框架,它主要解决了请求分发的问题,重心在于控制层和表现层。
轻量级,指的是Struts2具有较低的侵入性,就是它对我们业务代码的依赖程度很低,简单来说,在使用Struts2框架时,我们的业务代码中基本上不需要import 它的包。
Struts2实现了MVC,满足了MVC设计思想。
在我们使用Struts2做开发的时候,就相当于使用了MVC,这是Struts2自动帮助我们实现的,是默认的、隐含的,我们不需要再写特别的代码来实现MVC了。
作为一个框架,Struts2提供了一系列的API,我们可以使用它们来简化代码的编写,从而提升开发效率。
这些API复用程度很高,对业务代码的依赖性也很小,甚至很多是Struts2自动调用的,因此在很大程度上,我们的开发变得可以复用。
Struts2解决请求分发的问题,我们会在后面为什么使用Struts2中讲解。
重心在控制层和表现层,是纵观整个Struts2理论课程来看的,从中我们会体会到这一点,随着大家对Struts2的逐步了解,届时我们再回顾这一点。
1.1.2. 什么是MVCMVC是代码的分层思想,是软件设计领域经典的设计模式。
它根据代码功能的不同,将一个软件的代码分为3部分,即模型、视图、控制器,这3部分代码的含义和功能如下。
1、M-Model 模型模型(Model)的职责是负责业务逻辑。
包含两层:业务数据和业务处理逻辑。
比如实体类、DAO、Service都属于模型层。
2、V-View 视图视图(View)的职责是负责显示界面和用户交互(收集用户信息)。
属于视图的组件是不包含业务逻辑和控制逻辑的JSP。
3、C-Controller 控制器控制器是模型层M和视图层V之间的桥梁,用于控制流程。
比如:在Servlet 项目中的单一控制器ActionServlet。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Struts2学习之二--Struts2标签介绍热12已有 14625 次阅读 2009-07-12 18:53[顶]3G移动--Android开发工程师全能班(转) Struts2学习之二--Struts2标签介绍在上一篇文章《为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节。
如果,您看完《为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我。
我的E-MAIL:Max.M.Yuan@。
在介绍常用标志前,我想先从总体上,对Struts 1.x与Struts 2.0的标志库(Tag Library)作比较。
分类将标志库按功能分成HTML、Tiles、Logic和Bean等几部分严格上来说,没有分类,所有标志都在URI为“/struts-tags”命名空间下,不过,我们可以从功能上将其分为两大类:非UI标志和UI标志表达式语言(expression languages)不支持嵌入语言(EL)OGNL、JSTL、Groovy和Velcity以上表格,纯属个人总结,如有所不足或错误,请不吝指正好了,我要开始介绍“常用”(这里所谓的“常用”,是指在已往工作中使用Struts里经常用到的)的标志了。
1.非UI标志o if、elseif和else描述:执行基本的条件流转。
参数:名称必需默认类型描述备注test 是Boolean 决定标志里内容是否显示的表达式else标志没有这个参数id 否Object/String 用来标识元素的id。
在UI和表单中为HTML的id属性例子:<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Condition Flow</title></head><body><h3>Condition Flow</h3><!--这里有点小技巧:本来可以用#[0]来获得,请求中name的值。
但是,在我实现include例子时,无论我用param标志给name赋任何值,#parameters里面不会含有任何值,所以#也为空值。
其原因为:当使用include标志时,被包含的页面(included)里#paramete rs拿到的是包含页面里的请求参数。
因此,这里必须手工调用request.getParameter("name")。
--><s:set name="name" value="<%= "'" + request.getParameter("na me") + "'" %>" /><s:if test="#name == 'Max'">Max's file here</s:if><s:elseif test="#name == 'Scott'">Scott's file here</s:elseif><s:else>Other's file here</s:else></body></html>例1 condition.jspo iterator描述:用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)。
参数:名称必需默认类型描述status 否String 如果设置此参数,一个IteratorStatus的实例将会压入每个遍历的堆栈value 否Object/String 要遍历的可枚举的(iteratable)数据源,或者将放入新列表(List)的对象id 否Object/String 用来标识元素的id。
在UI和表单中为HTML的id属性例子:<%@ page contentType="text/html; charset=UTF-8" %><%@ page import="java.util.List" %><%@ page import="java.util.ArrayList" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%List list = new ArrayList();list.add("Max");list.add("Scott");list.add("Jeffry");list.add("Joe");list.add("Kelvin");request.setAttribute("names", list);%><html><head><title>Iterator</title></head><body><h3>Names: </h3><!--1、此处的空property元素用于获得当前iterator的值2、status被设成stuts,在iterator的里面就可以通过#stuts取得IteratorStatus的对象。
IteratorStatus类包含当前序号信息,如是否第一个或最后一个,是否为奇数序号。
这些信息在我们做格式化的时候,显得非常有用。
--><ol><s:iterator value="#s" status="stuts "><s:if test="#stuts.odd == true"><li>White <s:property /></li></s:if><s:else><li style="background-color:gray"><s:property /> </li></s:else></s:iterator></ol></body></html>例2 iterator.jspo i18n描述:加载资源包到值堆栈。
它可以允许text标志访问任何资源包的信息,而不只当前action 相关联的资源包。
参数:value 是Object/String 资源包的类路径(如com.xxxx.resources.AppMsg)id 否Object/String 用来标识元素的id。
在UI和表单中为HTML的id属性例子:HelloWorld=Hello Wrold!例3 classes\ ApplicationMessages.properties<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>Internationization</title></head><body><h3><s:i18n name="ApplicationMessages"><s:text name="HelloWorld"/></s:i18n></h3></body></html>例3 i18n.jspo include描述:包含一个servlet的输出(servlet或jsp的页面)。
参数:名称必需默认类型描述value 是String 要包含的jsp或servletid 否Object/String 用来标识元素的id。
在UI和表单中为HTML的id属性例子:<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Iterator</title></head><body><h3>Interator Page</h3><s:include value="/condition.jsp"><s:param name="name">Max</s:param></s:include><h3>i18n</h3><s:include value="/i18n.jsp"/></body></html>例4 include.jspo param描述:为其他标签提供参数,比如include标签和bean标签. 参数的name属性是可选的,如果提供,会调用Component的方法addParameter(String, Object), 如果不提供,则外层嵌套标签必须实现UnnamedParametric接口(如TextTag)。