Struts2常用标签总结

一 介绍
1.Struts2的作用   
Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。
    Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术中使用。包括最常用的jsp页面,也可以说Velocity和FreeMarker等模板技术中的使用
2.Struts2分类
(1)UI标签:(User  Interface, 用户界面)标签,主要用于生成HTML元素标签,UI标签又可分为表单标签非表单标签
(2)非UI标签,主要用于数据访问,逻辑控制等的标签。非UI标签可分为流程控制标签(包括用于实现分支、循环等流程控制的标签)和数据访问标签(主要包括用户输出ValueStack中的值,完成国际化等功能的)
(3)ajax标签
3.Struts2标签使用前的准备:
(1)在要使用标签的jsp页面引入标签库:  
<%@ taglib uri="/struts-tags" prefix="s"%>
(2)在web.xml中声明要使用的标签    这样是struts2 2.3.1.2版本的引入方式
<filter>
        <filter-name>struts2</filter-name>
                         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
4.标签的使用
(1)property标签
    用于输出指定的值:
    <s:property value="%{@cn.csdn.hr.domain.User@Name}"/><br/>
        <s:property value="@cn.csdn.hr.domain.User@Name"/><Br/><!-- 以上两种方法都可以 -->
        <s:property value="%{@cn.csdn.hr.domain.User@study()}"/>
    以上可以访问某一个包的类的属性的集中方式,study()是访问方法的方法,并输出。
 
 
    以下用java代码代替的,访问某一个范围内的属性
    <%
    //采用pageContext对象往page范围内存入值来 验证#attr搜索顺序是从page开始的 ,搜索的顺序为:page,reques,session,application。
set存值的时候存到的是request中,在jsp页面中访问的时候不用加任何的标识符,即可直接访问,如果不同的作用域不一样了,
pageContext.setAttribute("name", "laoowang", PageContext.PAGE_SCOPE);
%>
<s:property value="#attr.name" />
 
 
假设在action中设置了不同作用域的类
不同的作用域的标签的访问:
       
  <h3>获取的是requet中的对象值</h3>
  第一种方式:<s:property value="#request.user1.realName"/>
  <br/>
  第二种方式:<s:property value="#request.user1['realName']"/>
   <br/>
  第三种方式:<s:property value="#user1.realName"/>
   <br/>
    第四种方式:<s:property value="#user1['realName']"/>
      <br/>
       第五种方式:${requestScope.user1.realName }  || ${requestScope.user1['realName'] }
        
   第六种:<s:property value="#attr.user1.realName"/>
  attr对象按page==>  request sessionapplictio找的
   
   
  <h3>获取session中的值</h3>
    第一种方式:<s:property value="#session.user1.realName"/>
  <br/>
  第二种方式:<s:property value="#session.user1['realName']"/>
   
   
    第五种方式:${sessionScope.user1.realName }  || ${sessionScope.user1['realName'] }
   
  <h3>获取application中的对象的值</h3>
    第一种方式:<s:property value="#application.user1.realName"/>
  <br/>
  第二种方式:<s:property value="#application.user1['realName']"/>
   
   
    第五种方式:${applicationScope.user1.realName }  || ${applicationScope.user1['realName'] }
     
(2)iterator标签的使用
    第一种:list集合
        <!-- 设置set集合  value-->
        <!-- status 可选属性,该属性指定迭代时的IteratorStatus实例 -->
        <!-- value="#attr.list"   list存放到了request中  可以value="#request.list"
                    statu.odd返回当前被迭代元素的索引是否是奇数
                -->
    <s:set name="list" value="{'a','b','c','d'}"></s:set>
        <s:iterator var="ent" value="#request.list" status="statu">
            <s:if test="%{#statu.odd}">
                <font color="red"><s:property value="#ent" />
                </font>
            </s:if>
            <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':'猩猩'}"></s:set>
            遍历Map:
            <br />
            <s:iterator value="#map">
                <s:property value="key" />:::<s:property value="value" />
                <Br />
            </s:iterator>\
 
第三种:集合的变量
<h3>遍历集合:::</h3>
            <div>
                <!-- 遍历出价格大于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>
            </div>
注:users是User的对象,price是User中的一个属性
 
简述一下iterator的介绍:
iterator标签用于对集合进行迭代,这里的集合包含List、Set和数组。
<s:set name="list" value="{'zhangming','xiaoi','liming'}" />
<s:iterator value="#list" status="st">
    <font color=<s:if test="#st.odd">red</s:if><s:else>blue</s:else>>
    <s:property /></font><br>
</s:iterator>
value:可选属性,指定被迭代的集合,如果没有设置该属性,则使用ValueStack栈顶的集合。
id:可选属性,指定集合里元素的id。
status:可选属性,该属性指定迭代时的IteratorStatus实例。该实例包含如下几个方法:
    int getCount(),返回当前迭代了几个元素。
    int getIndex(),返回当前迭代元素的索引。
    boolean isEven(),返回当前被迭代元素的索引是否是偶数
    boolean isOdd(),返回当前被迭代元素的索引是否是奇数
    boolean isFirst(),返回当前被迭代元素是否是第一个元素。
    boolean isLast(),返回当前被迭代元素是否是最后一个元素。
 
 
(3)if else语句的使用
    <s:set name="age" value="21" />
<s:if test="#age==23">
    23
</s:if>
<s:elseif test="#age==21">
    21
</s:elseif>
<s:else>
    都不等
</s:else>
 
(4)URL标签
    <!-- 声明一个URL地址 -->
        <s:url action="test" namespace="/tag" var="add">
            <s:param name="username">laowangang</s:param>
            <s:param name="id">12</s:param>
        </s:url>
        <s:a href="%{add}">测试URL</s:a>
        <s:a action="test" namespace="/tag"></s:a>
    以上的两个<s:a>标签的作用是一样的。
(5)data标签
<%
            pageContext.setAttribute("birth",new Date(200,03,10),PageContext.REQUEST_SCOPE);
         %>
        <s:date name="#request.birth" format="yyyy年MM月dd日"/>
        <s:date name="#request.birth" nice="true"/>
    这个标签是按照format的格式去输出的。
 
(6)表单
 
             
        <h1>from表单</h1>
        <s:form action="test" namespace="/tag">
            <s:textfield label="用户名" name="uname" tooltip="你的名字" javascriptTooltip="false"></s:textfield>
            <s:textarea  name="rmake" cols="40" rows="20" tooltipDelay="300" tooltip="hi" label="备注" javascriptTooltip="true"></s:textarea>
            <s:password label="密码" name="upass"></s:password>
            <s:file name="file" label="上传文件"></s:file>
            <s:hidden name="id" value="1"></s:hidden>
             
            <!--
            <select name="edu">
                <option value="listKey">listValue</option>
             -->
            <s:select list="#{'1':'博士','2':'硕士'}" name="edu" label="学历" listKey="key" listValue="value"></s:select>
             
            <s:select list="{'java','.net'}" value="java"></s:select><!-- value是选中的 -->
             
            <!-- 必须有name -->
            <s:checkbox label="爱好 " fieldValue="true" name="checkboxFiled1"></s:checkbox>
             
            <!-- 多个checkbox -->
            <s:checkboxlist list="{'java','css','html','struts2'}" label="喜欢的编程语言" name="box" value="{'css','struts2'}"></s:checkboxlist>
         
         
            <!-- map集合前要加# -->
            <s:checkboxlist list="#{1:'java',2:'css',3:'html',4:'struts2',5:'spring'}" label="喜欢的编程语言" name="boxs" value="{1,2}"></s:checkboxlist>
             
             
            <!-- listKey
                listValue
                 
                <input type="text" name="boxs" value="listKey">显示值listValue
             -->
                     
            <!-- radio -->       
            <%
                //从服务器传过来值
                pageContext.setAttribute("sex","男",PageContext.REQUEST_SCOPE);
                pageContext.setAttribute("sex1","男",PageContext.REQUEST_SCOPE);
             %>
            <s:radio list="{'男','女'}" name="sex" value="#request.sex"></s:radio>   
             
             
            <s:radio list="#{1:'男',2:'女'}" name="sex1" listKey="key" listValue="value" value="#request.sex1"></s:radio>        
         
            <!-- 防止表单提交的方式 -->
            <s:token></s:token>
                             
            <s:submit value="提交"></s:submit>
        </s:form>

struct2常用标签的更多相关文章

  1. HTML常用标签

    HTML常用标签: HTML文档格式: 首先,HTML是一种超文本标签语言,它是制作网页的基础. 其次,HTML文档中至少包含基本的和成对的<html> </html>.< ...

  2. html常用标签介绍

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

  3. HTML常用标签总结

    HTML 的常用标签总结 <font size="字体大小1-7" color="red或0xff00ff" face="字体类型(楷体等)&q ...

  4. html新增一些常用标签

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. [刘阳Java]_MyBatis_映射文件的常用标签总结_第5讲

    MyBatis中常用标签的总结,简单给出自己的总结 MyBatis映射文件中的标签使用介绍1.<select>:用于编写查询语句用的标签 id:表示当前<select>标签的唯 ...

  6. CSS常用标签

    CSS常用标签 一 CSS文字属性 color : #999999; /*文字颜色*/ font-family : 宋体,sans-serif; /*文字字体*/ font-size : 9pt; / ...

  7. HTML基础(一)——一般标签、常用标签和表格

    第一部分  HTML <html>    --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> ...

  8. HTML-学习笔记(常用标签)

    本篇博客讲一讲HTML中的标签 HTML 标题 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的.<h1> 定义最大的标题.<h6> ...

  9. 帝国CMS文章随机调用等一些常用标签

    1.帝国CMS文章随机调用等一些常用标签 [e:loop={'news',10,18,0,'newstime>UNIX_TIMESTAMP()-86400*7','onclick desc'}] ...

随机推荐

  1. 某5道CF水题

    1.PolandBall and Hypothesis 题面在这里! 大意就是让你找一个m使得n*m+1是一个合数. 首先对于1和2可以特判,是1输出3,是2输出4. 然后对于其他所有的n,我们都可以 ...

  2. [bzoj1012](JSOI2008)最大数maxnumber(Fenwick Tree)

    Description 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度. 2. ...

  3. POJ 2139 Six Degrees of Cowvin Bacon (弗洛伊德最短路)

    题意:奶牛拍电影,如果2个奶牛在同一场电影里演出,她们的合作度是1,如果ab合作,bc合作,ac的合作度为2,问哪一头牛到其他牛的合作度平均值最小再乘100 思路:floyd模板题 #include& ...

  4. 激活Debian 7 的桌面(把图标放在桌面上)

    转:http://www.acyoo.com/archives/3017.html Debian 7的默认桌面是Gnome 3,  刚装好时无法在桌面进行任何操作,不过只需要设置一下就可以了: 左上角 ...

  5. Arch linux

    这里将介绍Arch Linux使用问题的解决方法,在这里拿出来和大家分享一下Linux目前较适用于小型的网络,Arch Linux 是个针对 i686i686/x86-64 优化的 Linux 发行版 ...

  6. EasyUI datagrid 复选框可以多选但不能全选功能实现

    1.功能需求:  实现多选,但是不能够全选功能 2.js代码 //帮卖列表页面,可以多选但是不能够全选实现 $(".datagrid-header-check").children ...

  7. 使用神经网络识别手写数字Using neural nets to recognize handwritten digits

    The human visual system is one of the wonders of the world. Consider the following sequence of handw ...

  8. cocos2d-x 学习笔录:将iOS项目编译成Andriod项目

    一.Android 环境搭建 1.安装Andriod-NDK(Native Development Kit) 新建一个文件夹(eg:NDK),解压Android-NDK,将解压文件与压缩包放在一个目录 ...

  9. JS 图片转Base64

    JS 图片转Base64 有时候需要向HTML中插入一张图片,可苦于上线后找不到一个合适的网盘来存储这些图片,有没有一种办法能将图片转换成文字,然后直接插入HTML中呢,通过Base64编码就可以解决 ...

  10. echarts图形报表缓存问题(option数据缓存)

    这几天我在工作中用到了echarts开发报表.每次查询出来的数据都是新的,但是echart展现的图形报表却还是之前的数据.网上找了搜索了很多次也没能解决,后面加了技术群才解决的. 我开始已经确定是报表 ...