java學(xué)習(xí)

          java學(xué)習(xí)

           

          struts2的標(biāo)簽ognl

          Struts2常用標(biāo)簽總結(jié)

          一 介紹

          1Struts2的作用

          Struts2標(biāo)簽庫(kù)提供了主題、模板支持,極大地簡(jiǎn)化了視圖頁(yè)面的編寫,而且,struts2的主題、模板都提供了很好的擴(kuò)展性。實(shí)現(xiàn)了更好的代碼復(fù)用。Struts2允許在頁(yè)面中使用自定義組件,這完全能滿足項(xiàng)目中頁(yè)面顯示復(fù)雜,多變的需求。

          Struts2的標(biāo)簽庫(kù)有一個(gè)巨大的改進(jìn)之處,struts2標(biāo)簽庫(kù)的標(biāo)簽不依賴于任何表現(xiàn)層技術(shù),也就是說strtus2提供了大部分標(biāo)簽,可以在各種表現(xiàn)技術(shù)中使用。包括最常用的jsp頁(yè)面,也可以說VelocityFreeMarker等模板技術(shù)中的使用

          2Struts2分類

          1UI標(biāo)簽:(User  Interface, 用戶界面)標(biāo)簽,主要用于生成HTML元素標(biāo)簽,UI標(biāo)簽又可分為表單標(biāo)簽非表單標(biāo)簽

          2)非UI標(biāo)簽,主要用于數(shù)據(jù)訪問,邏輯控制等的標(biāo)簽。非UI標(biāo)簽可分為流程控制標(biāo)簽(包括用于實(shí)現(xiàn)分支、循環(huán)等流程控制的標(biāo)簽)和數(shù)據(jù)訪問標(biāo)簽(主要包括用戶輸出ValueStack中的值,完成國(guó)際化等功能的)

          3ajax標(biāo)簽

          3Struts2標(biāo)簽使用前的準(zhǔn)備:

          1)在要使用標(biāo)簽的jsp頁(yè)面引入標(biāo)簽庫(kù):

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

          2)在web.xml中聲明要使用的標(biāo)簽 這樣是struts2 2.3.1.2版本的引入方式

          <filter>

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

           <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

          </filter>

          4.標(biāo)簽的使用

          1property標(biāo)簽

          用于輸出指定的值:

          <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()}"/>

          以上可以訪問某一個(gè)包的類的屬性的集中方式,study()是訪問方法的方法,并輸出。

          以下用java代碼代替的,訪問某一個(gè)范圍內(nèi)的屬性

          <%

          //采用pageContext對(duì)象往page范圍內(nèi)存入值來 驗(yàn)證#attr搜索順序是從page開始的 ,搜索的順序?yàn)椋?/font>pagerequessessionapplication

          set存值的時(shí)候存到的是request中,在jsp頁(yè)面中訪問的時(shí)候不用加任何的標(biāo)識(shí)符,即可直接訪問,如果不同的作用域不一樣了,

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

          %>

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

          假設(shè)在action中設(shè)置了不同作用域的類

          不同的作用域的標(biāo)簽的訪問:

            

            <h3>獲取的是requet中的對(duì)象值</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對(duì)象按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中的對(duì)象的值</h3>

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

            <br/>

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

            

            

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

          2iterator標(biāo)簽的使用

          第一種:list集合

          <!-- 設(shè)置set集合  value-->

          <!-- status 可選屬性,該屬性指定迭代時(shí)的IteratorStatus實(shí)例 -->

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

          statu.odd返回當(dāng)前被迭代元素的索引是否是奇數(shù)

          -->

          <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集合的特點(diǎn): 

            語(yǔ)法格式:# {key:value,key1:value1,key2:value2,.....}   

           以上的語(yǔ)法中就直接生成了一個(gè)Map類型的集合,Map對(duì)象中的每個(gè)key-value對(duì)象之間用英文的冒號(hào)隔開   

             ,多個(gè)元素之間用逗號(hào)分隔。   

          -->

          </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>

          <!-- 遍歷出價(jià)格大于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"/><!-- $是取出價(jià)格 大于3000的最后一個(gè)值 -->

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

          <s:property value="price"/>

          </s:iterator>

          </div>

          注:usersUser的對(duì)象,priceUser中的一個(gè)屬性

          簡(jiǎn)述一下iterator的介紹:

          iterator標(biāo)簽用于對(duì)集合進(jìn)行迭代,這里的集合包含ListSet和數(shù)組。

          <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:可選屬性,指定被迭代的集合,如果沒有設(shè)置該屬性,則使用ValueStack棧頂?shù)募稀?/font>

          id:可選屬性,指定集合里元素的id

          status:可選屬性,該屬性指定迭代時(shí)的IteratorStatus實(shí)例。該實(shí)例包含如下幾個(gè)方法:

          int getCount(),返回當(dāng)前迭代了幾個(gè)元素。

          int getIndex(),返回當(dāng)前迭代元素的索引。

          boolean isEven(),返回當(dāng)前被迭代元素的索引是否是偶數(shù)

          boolean isOdd(),返回當(dāng)前被迭代元素的索引是否是奇數(shù)

          boolean isFirst(),返回當(dāng)前被迭代元素是否是第一個(gè)元素。

          boolean isLast(),返回當(dāng)前被迭代元素是否是最后一個(gè)元素。

          3if else語(yǔ)句的使用

          <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> 

          4URL標(biāo)簽

          <!-- 聲明一個(gè)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}">測(cè)試URL</s:a>

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

          以上的兩個(gè)<s:a>標(biāo)簽的作用是一樣的。

          5data標(biāo)簽

          <%

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

                %>

               <s:date name="#request.birth" format="yyyyMMdd"/>

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

          這個(gè)標(biāo)簽是按照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="學(xué)歷" 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>

              

               <!-- 多個(gè)checkbox -->

          <s:checkboxlist list="{'java','css','html','struts2'}" label="喜歡的編程語(yǔ)言" name="box" value="{'css','struts2'}"></s:checkboxlist>

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

          <s:checkboxlist list="#{1:'java',2:'css',3:'html',4:'struts2',5:'spring'}" label="喜歡的編程語(yǔ)言" name="boxs" value="{1,2}"></s:checkboxlist>

          <!-- listKey 

          listValue

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

           -->

              

          <!-- radio -->

          <%

          //從服務(wù)器傳過來值 

          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>

          posted on 2013-04-12 17:07 楊軍威 閱讀(234) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          • 隨筆 - 391
          • 文章 - 34
          • 評(píng)論 - 20
          • 引用 - 0

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 区。| 平阴县| 岳阳市| 会昌县| 拉孜县| 泽州县| 永清县| 静宁县| 绥中县| 德兴市| 巴彦淖尔市| 刚察县| 富蕴县| 翁牛特旗| 弥勒县| 库尔勒市| 万载县| 闽侯县| 额尔古纳市| 封丘县| 娄底市| 新宁县| 塔河县| 长武县| 福清市| 岫岩| 陇南市| 镇平县| 上高县| 康乐县| 星子县| 天气| 淮南市| 高台县| 德化县| 民乐县| 兰溪市| 荔波县| 威信县| 新竹县| 正定县|