structs 控制标签介绍

第一部分;代码

[java] view
plain
copyprint?

  1. //前端
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
  5. <title>Insert title here</title>
  6. </head>
  7. <body>
  8. 访问属性
  9. <a href="<%=contextPath %>/tags.action?username=u&password=p">tags</a>
  10. </body>
  11. </html>

[java] view
plain
copyprint?

  1. //struct.xml
  2. <constant name="struts.ui.theme" value="simple" />
  3. <package name="tags" extends="struts-default">
  4. <action name="tags" class="com.struts2.tags.TagsAction">
  5. <result>/tags.jsp</result>
  6. </action>
  7. </package>

[java] view
plain
copyprint?

  1. //类包
  2. package com.struts2.tags;
  3. import com.opensymphony.xwork2.ActionSupport;
  4. public class TagsAction extends ActionSupport {
  5. private String password;
  6. private String username;
  7. public TagsAction() {
  8. }
  9. public String execute() {
  10. this.addFieldError("fielderror.test", "wrong!");
  11. return SUCCESS;
  12. }
  13. public String getPassword() {
  14. return password;
  15. }
  16. public String getUsername() {
  17. return username;
  18. }
  19. public void setPassword(String password) {
  20. this.password = password;
  21. }
  22. public void setUsername(String username) {
  23. this.username = username;
  24. }
  25. }

[java] view
plain
copyprint?

  1. //展示
  2. </head>
  3. <body>
  4. <ol>
  5. <li>property: <s:property value="username"/> </li>
  6. <li>property 取值为字符串: <s:property value="‘username‘"/> </li>
  7. <li>property 设定默认值: <s:property value="admin" default="管理员"/> </li>
  8. <li>property 设定HTML: <s:property value="‘<hr/>‘" escape="false"/> </li>
  9. <hr />
  10. <li>set 设定adminName值(默认为request 和 ActionContext): <s:set var="adminName" value="username" /></li>
  11. <li>set 从request取值: <s:property value="#request.adminName" /></li>
  12. <li>set 从ActionContext取值: <s:property value="#adminName" /></li>
  13. <%--<li>set 设定范围: <s:set name="adminPassword" value="password" scope="page"/></li>
  14. <li>set 从相应范围取值: <%=pageContext.getAttribute("adminPassword") %></li>
  15. --%>
  16. <li>set 设定var,范围为ActionContext: <s:set var="adminPassword" value="password" scope="session"/></li>
  17. <li>set 使用#取值: <s:property value="#adminPassword"/> </li>
  18. <li>set 从相应范围取值: <s:property value="#session.adminPassword"/> </li>
  19. <hr />
  20. <%--<li>push:<s:set name="myDog" value="new com.bjsxt.struts2.ognl.Dog(‘oudy‘)"></s:set></li>
  21. <li>
  22. push:<s:push value="#myDog">
  23. <s:property value="name"/>
  24. </s:push>
  25. </li>
  26. <li>push: <s:property value="name"/></li>
  27. --%>
  28. <hr />
  29. <li>bean 定义bean,并使用param来设定新的属性值:
  30. <s:bean name="com.bjsxt.struts2.tags.Dog" >
  31. <s:param name="name" value="‘pp‘"></s:param>
  32. <s:property value="name"/>
  33. </s:bean>
  34. </li>
  35. <li>bean 查看debug情况:
  36. <s:bean name="com.bjsxt.struts2.tags.Dog" var="myDog">
  37. <s:param name="name" value="‘oudy‘"></s:param>
  38. </s:bean>
  39. 拿出值:
  40. <s:property value="#myDog.name"/>
  41. </li>
  42. <hr />
  43. <li>include _include1.html 包含静态英文文件
  44. <s:include value="/_include1.html"></s:include>
  45. </li>
  46. <li>include _include2.html 包含静态中文文件
  47. <s:include value="/_include2.html"></s:include>
  48. </li>
  49. <li>include _include1.html 包含静态英文文件,说明%用法
  50. <s:set var="incPage" value="%{‘/_include1.html‘}" />
  51. <s:include value="%{#incPage}"></s:include>
  52. </li>
  53. <hr />
  54. <li>if elseif else:
  55. age = <s:property value="#parameters.age[0]" /> <br />
  56. <s:set var="age" value="#parameters.age[0]" />
  57. <s:if test="#age < 0">wrong age!</s:if>
  58. <s:elseif test="#parameters.age[0] < 20">too young!</s:elseif>
  59. <s:else>yeah!</s:else><br />
  60. <s:if test="#parameters.aaa == null">null</s:if>
  61. </li>
  62. <hr />
  63. <li>遍历集合:<br />
  64. <s:iterator value="{1, 2, 3}" >
  65. <s:property/> |
  66. </s:iterator>
  67. </li>
  68. <li>自定义变量:<br />
  69. <s:iterator value="{‘aaa‘, ‘bbb‘, ‘ccc‘}" var="x">
  70. <s:property value="#x.toUpperCase()"/> |
  71. </s:iterator>
  72. </li>
  73. <li>使用status:<br />
  74. <s:iterator value="{‘aaa‘, ‘bbb‘, ‘ccc‘}" status="status">
  75. <s:property/> |
  76. 遍历过的元素总数:<s:property value="#status.count"/> |
  77. 遍历过的元素索引:<s:property value="#status.index"/> |
  78. 当前是偶数?:<s:property value="#status.even"/> |
  79. 当前是奇数?:<s:property value="#status.odd"/> |
  80. 是第一个元素吗?:<s:property value="#status.first"/> |
  81. 是最后一个元素吗?:<s:property value="#status.last"/>
  82. <br />
  83. </s:iterator>
  84. </li>
  85. <li>
  86. <s:iterator value="#{1:‘a‘, 2:‘b‘, 3:‘c‘}" >
  87. <s:property value="key"/> | <s:property value="value"/> <br />
  88. </s:iterator>
  89. </li>
  90. <li>
  91. <s:iterator value="#{1:‘a‘, 2:‘b‘, 3:‘c‘}" var="x">
  92. <s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
  93. </s:iterator>
  94. </li>
  95. <li>
  96. <s:fielderror fieldName="fielderror.test" theme="simple"></s:fielderror>
  97. </li>
  98. </ol>
  99. </body>
  100. </html>

第二部分:分析

前端:<a href="<%=contextPath %>/tags.action?username=u&password=p">tags</a>点击之后,传递了给

tag.action两个参数username和password。

-> struct.xml配置,调用TagsAction.java类,初始化对象,并对对象设置初值。

[java] view
plain
copyprint?

  1. <package name="tags" extends="struts-default">
  2. <action name="tags" class="com.struts2.tags.TagsAction">
  3. <result>/tags.jsp</result>
  4. </action>
  5. </package>

-> 根据struct.xml配置的结果信息,将结果传递到<result>/tags.jsp</result>中说明的tag.jsp中进行显示,并通过标签进

行取值操作;

第三部分:通用标签操作

[java] view
plain
copyprint?

  1. property标签:
  2. <li>property: <s:property value="username"/> </li>
  3. <li>property 取值为字符串: <s:property value="‘username‘"/> </li>
  4. <li>property 设定默认值: <s:property value="admin" default="管理员"/> </li>
  5. <li>property 设定HTML: <s:property value="‘<hr/>‘" escape="false"/> </li>

分析:

property 取值为字符串: <s:property value="‘username‘"/>,当标签中的s:proerty中的值为双引号里面加上单引号时,表

示将单引号里面的值当做字符串进行处理。

[java] view
plain
copyprint?

  1. set标签:
  2. <li>set 设定adminName值(默认为request 和 ActionContext): <s:set var="adminName" value="username" /></li>
  3. <li>set 从request取值: <s:property value="#request.adminName" /></li>
  4. <li>set 从ActionContext取值: <s:property value="#adminName" /></li>
  5. <s:debug></s:debug>
  6. <li>set 设定var,范围为ActionContext: <s:set var="adminPassword" value="password" scope="session"/></li>
  7. <li>set 使用#取值: <s:property value="#adminPassword"/> </li>
  8. <li>set 从相应范围取值: <s:property value="#session.adminPassword"/> </li>

分析:

在set里面可以设置作用范围值:scope

scope 默认为action,可以取得的scope有五个:The scope in which to assign the variable. Can be application,

session, request, page, or action.

[java] view
plain
copyprint?

  1. bean标签:
  2. <li>bean 定义bean,并使用param来设定新的属性值:
  3. <s:bean name="com.struts2.tags.Dog" >
  4. <s:param name="name" value="‘pp‘"></s:param>
  5. <s:property value="name"/>
  6. </s:bean>
  7. </li>
  8. <li>bean 查看debug情况:
  9. <s:bean name="com.struts2.tags.Dog" var="myDog">
  10. <s:param name="name" value="‘oudy‘"></s:param>
  11. </s:bean>
  12. 拿出值:
  13. <s:property value="#myDog.name"/>
  14. </li>

分析:

bean标签

参数name的类型为String,作用是The class name of the bean to be instantiated (must respect JavaBean

specification),定义一个需要实例化的类。

取值的方法:都是以#开头,家伙是哪个变量名称

#adminPassword

#session.adminPassword

#myDog.name

注意一下两种不同:

<s:bean name="com.struts2.tags.Dog" >

s:bean执行开始时,会构造一个对象入栈到栈顶,执行完毕之后从栈顶取出。

<s:bean name="com.struts2.tags.Dog" var="myDog">

执行之后放在Stack Context

[java] view
plain
copyprint?

  1. include标签
  2. <s:set var="incPage" value="%{‘/_include1.html‘}" />
  3. <s:include value="%{#incPage}"></s:include>

%{}作用:将其强制转为ognl表达式;

第四部分:控制标签操作

[java] view
plain
copyprint?

  1. <hr />
  2. <li>if elseif else:
  3. age = <s:property value="#parameters.age[0]" /> <br />
  4. <s:set var="age" value="#parameters.age[0]" />
  5. <s:if test="#age < 0">wrong age!</s:if>
  6. <s:elseif test="#parameters.age[0] < 20">too young!</s:elseif>
  7. <s:else>yeah!</s:else><br />
  8. <s:if test="#parameters.aaa == null">null</s:if>
  9. </li>
  10. <hr />

通过set设置短名称;

第五部分:遍历标签

[java] view
plain
copyprint?

  1. <li>遍历集合:<br />
  2. <s:iterator value="{1, 2, 3}" >
  3. <s:property/> |
  4. </s:iterator>
  5. </li>
  6. <li>自定义变量:<br />
  7. <s:iterator value="{‘aaa‘, ‘bbb‘, ‘ccc‘}" var="x">
  8. <s:property value="#x.toUpperCase()"/> |
  9. </s:iterator>
  10. </li>

分析:字符串集合,var = "x"相当于for循环里面定义的临时变量,集合中的每个值取出来,每循环一次把值放到x里面。利用#进行访问就可以。

[java] view
plain
copyprint?

  1. <li>使用status:<br />
  2. <s:iterator value="{‘aaa‘, ‘bbb‘, ‘ccc‘}" status="status">
  3. <s:property/> |
  4. 遍历过的元素总数:<s:property value="#status.count"/> |
  5. 遍历过的元素索引:<s:property value="#status.index"/> |
  6. 当前是偶数?:<s:property value="#status.even"/> |
  7. 当前是奇数?:<s:property value="#status.odd"/> |
  8. 是第一个元素吗?:<s:property value="#status.first"/> |
  9. 是最后一个元素吗?:<s:property value="#status.last"/>
  10. <br />
  11. </s:iterator>
  12. </li>

分析:status作用If specified, an instanceof IteratorStatus will be pushed into stack upon each iteration

s:property取出循环的当前值。通过对status取值,来得到循环情况

[java] view
plain
copyprint?

  1. <li>
  2. <s:iterator value="#{1:‘a‘, 2:‘b‘, 3:‘c‘}" >
  3. <s:property value="key"/> | <s:property value="value"/> <br />
  4. </s:iterator>
  5. </li>
  6. <li>
  7. <s:iterator value="#{1:‘a‘, 2:‘b‘, 3:‘c‘}" var="x">
  8. <s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
  9. </s:iterator>
  10. </li>

分析:定义map时,需要在前面加上#;

时间: 2024-10-19 06:23:30

structs 控制标签介绍的相关文章

struts2官方 中文教程 系列十二:控制标签

介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项目:struts_basic2 本帖地址:struts2官方 中文教程 系列十二:控制标签 即 http://www.cnblogs.com/linghaoxinpian/p/6941683.html 下载本章节代码 struts2 if标签 我们在thankyou.jsp中添加如下代码: <s:i

Struts2之控制标签

Struts2的控制标签,主要用于完成流程控制,以及对ValueStack中的控制,控制标签可以完成输出流程的控制,例如循环.分支等操作,也可以完成对集合的合并.排序等操作. 1.常用的控制标签有:if.elseif.else.iterator.append.merge.generator.subset.sort等. 下面分别对这些控制标签进行介绍,并介绍如何使用这些控制标签: (1).if.elseif.else标签:if标签用来控制基本的条件处理流程,通常和else标签或者elseif标签连

[应用篇]-JSTL之C标签介绍

JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:forEach.forTokens 4.URL操作标签:import.url.redirect 只用JSTL需要大家引入两个JAR包 jstl-1.2.jar和standard-1.1.2.jar 使用标签时,一定要在jsp文件头加入以下代码: <%@taglib prefix="c"

html常用标签介绍

常用标签介绍 文本 最常用的标签可能是<font>了,它用于改变字体,字号,文字颜色. 点击查看效果 <font size="6">6</font><font size="4">4</font><font color="red" size="5">红色的5</font><font face="黑体">黑体的字&l

struts2 标签介绍

计应134班(实验班) 陈兴 Struts2常用标签总结一 介绍1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码复用.Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求. Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术中使用.包括最常用的js

一、JSP标签介绍,自定义标签

p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-size: 16.0000pt } h1 { margin-top: 17.0000pt; margin-bottom: 16.5000pt; margin-left: 21.6000pt; text-indent: -21.6000pt; page-break-after: avoid; page-

3.Struts2配置文件标签介绍

Struts2的很多核心功能都是由拦截器实现的. struts-default.xml中定义了这些拦截器与Result类型. 所以,不继承struts-default包,Struts2提供的很多核心功能是无法使用的. 1.package标签 配置包时必须指定name属性,该属性值可以任意取名,但必须唯一. 其与Java的类包间无对应关系.若其他包要继承该包,则必须通过该属性进行引用. 包的namespace属性用于定义该包的命名空间. 命名空间是访问该包下Action的路径的一部分. 此属性可以

Struts2标签--控制标签

参考博客:http://www.open-open.com/lib/view/open1342167592890.html Struts2标签库 包括: OGNL Struts2标签分类 控制标签 :(if, elseif,else, iterator, append, merge, generator, subset, sort) 数据标签 :(bean, param,date, debug, include, set, url, push) 控制标签: (1): If elseif  els

struts2学习(8)struts标签1(数据标签、控制标签)

一.struts2标签简介: struts标签很多,功能强大,这是优点: 但是缺点的话,性能方面可能会,各方面速度啊啥的会降低:有人比较测试,struts性能比jstl低很多: 二.struts2数据标签: com.cy.model.Student.java: package com.cy.model; public class Student { private int id; private String name; private int age; public Student() { s