zoukankan      html  css  js  c++  java
  • Struts2常用标签总结

    转自:http://www.open-open.com/lib/view/open1331393920452.html

    001 Struts2常用标签总结 

    002 一 介绍 

    003 1.Struts2的作用     

    004 Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。 

    005     Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术中使用。包括最常用的jsp页面,也可以说Velocity和FreeMarker等模板技术中的使用 

    006 2.Struts2分类 

    007 (1)UI标签:(User  Interface, 用户界面)标签,主要用于生成HTML元素标签,UI标签又可分为表单标签非表单标签 

    008 (2)非UI标签,主要用于数据访问,逻辑控制等的标签。非UI标签可分为流程控制标签(包括用于实现分支、循环等流程控制的标签)和数据访问标签(主要包括用户输出ValueStack中的值,完成国际化等功能的) 

    009 (3)ajax标签 

    010 3.Struts2标签使用前的准备: 

    011 (1)在要使用标签的jsp页面引入标签库:    

    012 <%@ taglib uri="/struts-tags" prefix="s"%> 

    013 (2)在web.xml中声明要使用的标签    这样是struts2 2.3.1.2版本的引入方式 

    014 <filter> 

    015         <filter-name>struts2</filter-name> 

    016            <filter-class>

                       org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

                     </filter-class> 

    017         </filter> 

    018 4.标签的使用 

    019 (1)property标签 

    020     用于输出指定的值: 

    021     <s:property value="%{@cn.csdn.hr.domain.User@Name}"/><br/

    022     <s:property value="@cn.csdn.hr.domain.User@Name"/><Br/><!-- 以上两种方法都可以 -->

    023     <s:property value="%{@cn.csdn.hr.domain.User@study()}"/

    024     以上可以访问某一个包的类的属性的集中方式,study()是访问方法的方法,并输出。 

    025   

    026   

    027     以下用java代码代替的,访问某一个范围内的属性 

    028     <% 

    029     //采用pageContext对象往page范围内存入值来 验证#attr搜索顺序是从page开始的 ,

              搜索的顺序为:page,reques,session,application。 

    030      set存值的时候存到的是request中,在jsp页面中访问的时候不用加任何的标识符,即可直接访问,

             如果不同的作用域不一样了, 

    031      pageContext.setAttribute("name", "laoowang", PageContext.PAGE_SCOPE); 

    032      %> 

    033 <s:property value="#attr.name" />  

    034   

    035   

    036 假设在action中设置了不同作用域的类 

    037 不同的作用域的标签的访问: 

    038         

    039   <h3>获取的是requet中的对象值</h3> 

    040   第一种方式:<s:property value="#request.user1.realName"/> 

    041   <br/> 

    042   第二种方式:<s:property value="#request.user1['realName']"/> 

    043    <br/> 

    044   第三种方式:<s:property value="#user1.realName"/> 

    045   <br/> 

    046   第四种方式:<s:property value="#user1['realName']"/> 

    047   <br/> 

    048   第五种方式:${requestScope.user1.realName }  || ${requestScope.user1['realName'] }         

    050   第六种:<s:property value="#attr.user1.realName"/> 

    051   attr对象按page==>  request sessionapplictio找的   

    054   <h3>获取session中的值</h3> 

    055   第一种方式:<s:property value="#session.user1.realName"/> 

    056   <br/> 

    057   第二种方式:<s:property value="#session.user1['realName']"/> 

    060   第五种方式:${sessionScope.user1.realName }  || ${sessionScope.user1['realName'] }   

    062   <h3>获取application中的对象的值</h3> 

    063     第一种方式:<s:property value="#application.user1.realName"/> 

    064   <br/> 

    065   第二种方式:<s:property value="#application.user1['realName']"/> 

      

    068   第五种方式:${applicationScope.user1.realName }  || ${applicationScope.user1['realName'] } 

    069       

    070 (2)iterator标签的使用 

    071     第一种:list集合 

    072         <!-- 设置set集合  value-->

    073         <!-- status 可选属性,该属性指定迭代时的IteratorStatus实例 -->

    074         <!-- value="#attr.list"   list存放到了request中  可以value="#request.list" 

    075                     statu.odd返回当前被迭代元素的索引是否是奇数 

    076          -->

    077     <s:set name="list" value="{'a','b','c','d'}"></s:set> 

    078         <s:iterator var="ent" value="#request.list" status="statu"> 

    079             <s:if test="%{#statu.odd}"> 

    080                 <font color="red"><s:property value="#ent" /> 

    081                 </font> 

    082             </s:if> 

    083             <s:else> 

    084         <s:property value="#ent" /> 

    085         </s:else> 

    086 </s:iterator> 

    087       

    088 第二种:map集合中的使用 

    089     <h3>Map集合</h3> 

    090                 <!-- map集合的特点:  

    091             语法格式:# {key:value,key1:value1,key2:value2,.....}    

    092             以上的语法中就直接生成了一个Map类型的集合,该Map对象中的每个key-value对象之间用英文的冒号隔开    

    093            ,多个元素之间用逗号分隔。    

    094                 -->

    095             </div> 

    097             <s:set var="map" value="#{'1':'laowang','2':'老王','3':'猩猩'}"></s:set> 

    098             遍历Map: 

    099             <br /> 

    100             <s:iterator value="#map"> 

    101                 <s:property value="key" />:::<s:property value="value" /> 

    102                 <Br /> 

    103             </s:iterator>\ 

    104   

    105 第三种:集合的变量 

    106 <h3>遍历集合:::</h3> 

    107             <div> 

    108                 <!-- 遍历出价格大于3000的 -->

    109                 <s:iterator var="user" value="#session['users']"> 

    110                     <s:if test="%{#user['price']>3000}"> 

    111                         <s:property value="#user['price']"/> 

    112                     </s:if> 

    113                 </s:iterator>             

    116                 <hr color="blue"/><!-- $是取出价格 大于3000的最后一个值 -->

    117                 <s:iterator var="u" value="#session.users.{$(#this['price']>3000)}"> 

    118                     <s:property value="price"/> 

    119                 </s:iterator> 

    120             </div> 

    121 注:users是User的对象,price是User中的一个属性 

    122   

    123 简述一下iterator的介绍: 

    124 iterator标签用于对集合进行迭代,这里的集合包含List、Set和数组。 

    125 <s:set name="list" value="{'zhangming','xiaoi','liming'}" /> 

    126 <s:iterator value="#list" status="st"> 

    127     <font color=<s:if test="#st.odd">red</s:if><s:else>blue</s:else>> 

    128     <s:property /></font><br> 

    129 </s:iterator>  

    130 value:可选属性,指定被迭代的集合,如果没有设置该属性,则使用ValueStack栈顶的集合。 

    131 id:可选属性,指定集合里元素的id。 

    132 status:可选属性,该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法: 

    133     int getCount(),返回当前迭代了几个元素。 

    134     int getIndex(),返回当前迭代元素的索引。 

    135     boolean isEven(),返回当前被迭代元素的索引是否是偶数 

    136     boolean isOdd(),返回当前被迭代元素的索引是否是奇数 

    137     boolean isFirst(),返回当前被迭代元素是否是第一个元素。 

    138     boolean isLast(),返回当前被迭代元素是否是最后一个元素。 

    139   
      
    141 (3)if else语句的使用 

    142     <s:set name="age" value="21" /> 

    143 <s:if test="#age==23"> 

    144     23 

    145 </s:if> 

    146 <s:elseif test="#age==21"> 

    147     21 

    148 </s:elseif> 

    149 <s:else> 

    150     都不等 

    151 </s:else>  

    152   

    153 (4)URL标签 

    154     <!-- 声明一个URL地址 -->

    155         <s:url action="test" namespace="/tag" var="add"> 

    156             <s:param name="username">laowangang</s:param> 

    157             <s:param name="id">12</s:param> 

    158         </s:url> 

    159         <s:a href="%{add}">测试URL</s:a> 

    160         <s:a action="test" namespace="/tag"></s:a> 

    161     以上的两个<s:a>标签的作用是一样的。 

    162 (5)data标签 

    163         <% 

    164             pageContext.setAttribute("birth",new Date(200,03,10),PageContext.REQUEST_SCOPE); 

    165         %> 

    166         <s:date name="#request.birth" format="yyyy年MM月dd日"/> 

    167         <s:date name="#request.birth" nice="true"/> 

    168     这个标签是按照format的格式去输出的。 

    169   

    170 (6)表单 
               
    173         <h1>from表单</h1> 

    174         <s:form action="test" namespace="/tag"> 

    175             <s:textfield label="用户名" name="uname" tooltip="你的名字" javascriptTooltip="false"></s:textfield> 

    176             <s:textarea  name="rmake" cols="40" rows="20" tooltipDelay="300" tooltip="hi" label="备注" javascriptTooltip="true"></s:textarea> 

    177             <s:password label="密码" name="upass"></s:password> 

    178             <s:file name="file" label="上传文件"></s:file> 

    179             <s:hidden name="id" value="1"></s:hidden> 

    180               

    181             <!--  

    182             <select name="edu"> 

    183                 <option value="listKey">listValue</option> 

    184              -->

    185             <s:select list="#{'1':'博士','2':'硕士'}" name="edu" label="学历" listKey="key" listValue="value"></s:select> 

    186               

    187             <s:select list="{'java','.net'}" value="java"></s:select><!-- value是选中的 -->

    188               

    189             <!-- 必须有name -->

    190             <s:checkbox label="爱好 " fieldValue="true" name="checkboxFiled1"></s:checkbox> 

    191               

    192             <!-- 多个checkbox -->

    193             <s:checkboxlist list="{'java','css','html','struts2'}" label="喜欢的编程语言" name="box" value="{'css','struts2'}"></s:checkboxlist> 

    194           

    195           

    196             <!-- map集合前要加# -->

    197             <s:checkboxlist list="#{1:'java',2:'css',3:'html',4:'struts2',5:'spring'}" label="喜欢的编程语言" name="boxs" value="{1,2}"></s:checkboxlist> 

    198                            

    200             <!-- listKey  

    201                 listValue 

    202                   

    203                 <input type="text" name="boxs" value="listKey">显示值listValue 

    204              -->

    205                       

    206             <!-- radio -->        

    207             <% 

    208                 //从服务器传过来值  

    209                 pageContext.setAttribute("sex","男",PageContext.REQUEST_SCOPE); 

    210                 pageContext.setAttribute("sex1","男",PageContext.REQUEST_SCOPE); 

    211              %> 

    212             <s:radio list="{'男','女'}" name="sex" value="#request.sex"></s:radio>                 

    215             <s:radio list="#{1:'男',2:'女'}" name="sex1" listKey="key" listValue="value" value="#request.sex1"></s:radio>          

    216           

    217             <!-- 防止表单提交的方式 -->

    218             <s:token></s:token> 

    219                               

    220             <s:submit value="提交"></s:submit> 

    221         </s:form>

  • 相关阅读:
    显示文件本地文件夹
    Select Dependencies选择依赖项
    搜索小技巧
    783. Minimum Distance Between BST Nodes BST节点之间的最小距离
    5. Longest Palindromic Substring 最长的回文子串
    12. Integer to Roman 整数转罗马数字
    3. Longest Substring Without Repeating Characters 最长的子串不重复字符
    539. Minimum Time Difference 最小时差
    43. Multiply Strings 字符串相乘
    445. Add Two Numbers II 两个数字相加2
  • 原文地址:https://www.cnblogs.com/PatrickLee/p/2640160.html
Copyright © 2011-2022 走看看