91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

struts2標簽的作用有哪些

發布時間:2020-12-04 15:39:32 來源:億速云 閱讀:126 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關struts2標簽的作用有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

先看一下Struts2標簽的分類吧。然后分類總結一下即可。

struts2標簽的作用有哪些

由于控制標簽用的比較多,所以放在了前邊。好首先看一下控制標簽吧。

一、控制標簽,JSTL大家應該都使用過,其實Struts2的控制標簽和那個特別像的,主要是對EL表達式滿足不了的進行補充使用。這里簡單看一下吧:

1. if……elseif……else,用來控制選擇輸出的標簽;

<span ><html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
  <title>s:if標簽測試</title> 
</head> 
<body> 
<!-- 在Stack Context中定義一個age屬性,其值為29 --> 
<s:set name="age" value="29"/> 
<!-- 如果Stack Context中的age屬性大于60 --> 
<s:if test="#age>60"> 
  老年人 
</s:if> 
<!-- 如果Stack Context中的age屬性大于35 --> 
<s:elseif test="#age>35"> 
  中年人 
</s:elseif> 
<!-- 如果Stack Context中的age屬性大于15 --> 
<s:elseif test="#age>15"> 
  青年人 
</s:elseif> 
<s:else> 
  少年 
</s:else> 
</body> 
</html>

</span> 

2.append:用于將多個集合拼接成一個新的集合;

<span ><html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
  <title>使用s:append標簽拼接集合和Map</title> 
</head> 
<body> 
<!-- 使用append將List和Map集合拼接在一起 
  新集合實際上是Map集合,其名字為newList --> 
<s:append var="newList"> 
  <s:param value="#{'Java':'ljh', 
    'C#':'lsz'}" /> 
  <s:param value="#{'0629',  
    '0404'}" /> 
</s:append> 
<table border="1" width="280"> 
<!-- 使用iterator迭代newList集合 --> 
<s:iterator value="#newList" status="st"> 
  <tr <s:if test="#st.odd"> 
    </s:if>> 
    <td><s:property value="key"/></td> 
    <td><s:property value="value"/></td> 
  </tr> 
</s:iterator> 
</table> 
</body> 
</html> 
</span> 

3.generator:是一個字符串解析器,用于將一個字符串解析成一個集合;

<span ><html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
  <title>使用s:generator生成集合</title> 
</head> 
<body> 
<table border="1" width="240"> 
<!-- 使用generator標簽將指定字符串解析成Iterator集合 
  在generator標簽內,得到的List集合位于ValueStack頂端 --> 
<s:generator val="'Java 
  ,C#, 
  C++'" separator=","> 
<!-- 沒有指定迭代哪個集合,直接迭代ValueStack頂端的集合 --> 
<s:iterator status="st"> 
  <tr <s:if test="#st.odd"> 
    </s:if>> 
    <td><s:property/></td> 
  </tr> 
</s:iterator> 
</s:generator> 
</table> 
</body> 
</html></span> 

4.iterator:是一個迭代器,用于將集合迭代輸出,這個比較使用哈,前邊都有,不再舉例;

5.merge:也是用于將多個集合拼接成一個新的集合,但是與append不同。append是將集合依次排列進行拼接,merge是第一個集合的第一個,第二個集合的第一個……第一個集合的第二個,第二個集合的第二個……;

<span ><html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
  <title>使用s:merge標簽迭代Map</title> 
</head> 
<body> 
<s:merge id="newList"> 
  <s:param value="#{'Java':'ljh', 
    'C#':'lsz'}" /> 
  <s:param value="#{'0629',  
    '0404'}" /> 
</s:merge> 
 
<table border="1" width="320"> 
<s:iterator value="#newList" status="st"> 
  <tr <s:if test="#st.odd"></s:if>> 
    <td><s:property value="key"/></td> 
    <td><s:property value="value"/></td> 
  </tr> 
</s:iterator> 
</table> 
</body> 
</html></span> 

6.sort:這個標簽用于將集合進行排序;

<span ><html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
  <title>使用s:sort對集合元素進行排序</title> 
</head> 
<body> 
<!-- 定義一個Comparator實例 --> 
<s:bean var="mycomparator" name="org.ljh.app.util.MyComparator"/> 
<!-- 使用自定義的排序規則對目標集合進行排序 --> 
<s:sort source="{'Java' 
  ,'C#' 
  ,'C++' 
  ,'Ajax' 
  ,'XML'}"  
  comparator="#mycomparator" 
  var="sortedList"/> 
輸出page范圍的sortedList屬性:<br/> 
${pageScope.sortedList} 
<table border="1" width="300"> 
<!-- 迭代page范圍內的sortedList屬性 --> 
<s:iterator status="st" value="#attr.sortedList">  
  <tr <s:if test="#st.odd"> 
    </s:if>> 
    <td><s:property/></td> 
  </tr> 
</s:iterator> 
</table> 
</body> 
</html></span> 
<span >public class MyComparator implements Comparator 
{ 
 //決定兩個元素大小的方法 
 public int compare(Object element1, Object element2) 
 { 
  //根據元素字符串長度來決定大小  
  return element1.toString().length() 
   - element2.toString().length(); 
 } 
}</span> 

7.subset:這個標簽用于截取集合的部分元素,形成新的子集合。

<span ><html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
  <title>使用s:subset標簽截取集合元素</title> 
</head> 
<body> 
<!-- 定義一個Decider Bean --> 
<s:bean var="mydecider" name="org.ljh.app.util.MyDecider"/> 
<!-- 使用自定義的Decider實例來截取目標集合,生成子集 
  指定var屬性,將生成的Itertor放入pageScope中 --> 
<s:subset source="{<span >'Java'</span></span><pre name="code" class="html"><span > ,'C#' 
  ,'C++' 
  ,'Ajax' 
  ,'XML'</span></pre><span >}" decider="#mydecider"var="newList"/>直接輸出page范圍的newList屬性:<br/>${pageScope.newList}<table border="1" width="240"><!-- 迭代page范圍內的newList屬性 --><s:iterator status="st" value="#attr.newList"><tr <s:if test="#st.odd"></s:if>><td><s:property/></td></tr></s:iterator></table></body></html></span> 

<span >//用戶自定義的Decider類,實現了SubsetIteratorFilter.Decider接口 
public class MyDecider  
  implements SubsetIteratorFilter.Decider 
{ 
  //實現Decider接口必須實現的decide方法, 
  //該方法決定集合中的元素是否被選入子集 
  public boolean decide(Object element) throws Exception 
  { 
    String str = (String)element; 
    //如果集合元素(字符串)中包含Java EE子串,即可被選入子集 
    return str.indexOf("Java") > 0; 
  } 
}</span> 

二、數據標簽,自我感覺數據標簽用的不是很多:

action標簽,可以允許在jsp頁面中直接調用Action,在調用Action時候,可以指定需要被調用的Action的name和namespace.
如果指定了executeResult參數的屬性值為true,該標簽會把Action的處理結果(視圖資源)包含到本頁面中.
使用action標簽指定屬性有:

     id: 可選屬性,作為該Action的引用ID
     name:必選屬性,指定調用Action
     namespace:可選屬性,指定該標簽調用Action所屬namespace
     executeResult:可選屬性,指定是否將Action的處理結果包含到本頁面中.默認值為false,不包含. 

<s:actionname="actionTag!default" executeResult="true"namespace="/generic/dataTag">
<paramname="username" value=" "/>給action屬性復制
<paramname="email"    value=" "/>
</s:action>

bean 實例化一個javabean 使用Param傳入屬性 (get/set)
name 實例化的javabean的實現類
var可選  指定則實例放入棧的上下文 允許用var直接使用
注意:bean標簽內創建javabean實例位于棧頂,bean結束移除值棧,除非指定var則通過上下文訪問

date格式化輸出日期,指定日期與當天日期的時間差
formart  指定格式格式日期       注意:不欲nice同時指定,如果同時指定。則忽略formart
nice  是否指定日期與當前日期差值
name必填  格式化的日期值
var  對象放入值棧,在date結束可以通過該屬性的值引用 

<constanname="sruts.custom.i18n.resources"value="ApplicationResources" />
<s:datename="#date" formart="yyyy年MM月dd日"/>

debug標簽:

用于輔助調試.在頁面上生成超鏈接,可以查看值棧,和StackContext中所有信息
id 鈣元素的一個引用id

include:講一個jsp或者servlet包含到當前頁面
value  包含的JSP或Servlet。
可以指定多個param子標簽傳參

param標簽:為其它標簽提供參數
name設置的參數的名字 (set)  value設置的參數的值
用法

①<paramname="color"> 
②<paramname="color" value="   'color'   "/>

push:將某個值放到值棧的棧頂
value必填:指定放入值棧的棧值!但是只在push標簽內,一旦超出,剛剛放入的對象立即被移除

用法:

<s:pushvalue="#session.user">
<s:propertyvalue="username">
<s:propertyvalue="sex">
<s:propertyvalue="emai">
</s:push>

set:用于將某個只放入指定范圍內
定義一個新變量。將已有值放入新變量。并放入指定范圍
value  指定一個表達式,計算的結果賦變量,如果沒有指定value屬性,默認將棧頂對象賦給變量。
var  指定該屬性,改值放入到值棧中
scope指定新變量防止的范圍,可選application,session request page action(默認)  如果指定為action放入request并放入action值棧
name變量名字

i18n  text標簽  支持國際化信息
i18n將資源包放入值棧   name資源屬性名字   指定資源包的基名
text從資源包中獲取信息 title   獲取鍵為title的消息
通過i18n放入的資源包只能在標簽體內訪問
text可以單獨使用。首先查找資源包的基名與調用action類名相同的資源包,意味著,可以在action類所在的包中創建與Action類名相同的的資源文件,可以嵌套param指定消息文本的參數,順序對應參數索引順序
<s:i18nname="AppliactionResources">
<s:textname="title"/>    name資源屬性名字   id指定屬性,文本內容不會輸出,而是保存在值棧中,在text結束后,可以通過屬性的值來引用
</s:i18n> 

public class TextTagAction  extends ActionSupport{}   《topic-21》

url標簽用于創建URL地址,定義param附加請求參數
action value  指定生成URL的Action和URL。前一個會附加.action。如果兩個都沒有則以當前地址為地址值
 achor 可選  指定url的錨點
encode 可選   對指定參數進行編碼 不支持cookie改寫url支持session
escapeamp  是否將&轉義為&amp
var  將鏈接值放入到值棧
includeContext是否將當前上下文包含在URL地址
includeParams是否包含請求參數,改屬性值只能為none,getall
method 指定使用action的方法
namespace指定action所屬的命名空間
portletmode指定portle模式
scheme指定url使用的協議

property標簽,用于輸出值棧中的對象的屬性值
value指定要輸出的對象屬性  沒有則輸出棧頂
default  可選   value為null輸出改值
escape 是否專一輸出內容中的html 

三、表單標簽,這個就是form下的Struts2提供的標簽,供界面顯示用的,其實用的更少,一般情況下,我們都會拿easy-ui,dwz等一些專門做界面的框架進行替換。其實說簡單一點就像HTML里邊的各種標簽,這里不再進行贅述

四、非標單標簽,主要用于生成一些非表單的可視化元素,例如tab頁面,輸出HTML頁面的樹形結構等,當然也用來顯示Action里封裝的信息。簡單介紹一下:

struts2標簽的作用有哪些

簡單看一個componet標簽:

<span ><html> 
<head> 
  <title>使用s:component標簽</title> 
</head> 
<body> 
<h4>使用s:component標簽</h4> 
使用默認主題(xhtml),默認主題目錄(template)<br/>  
使用mytemplate.jsp作為視圖組件 
<s:component template="mytemplate.jsp"> 
  <s:param name="list" value="{'Java' 
  ,'C#' 
  ,C++'}"/> 
</s:component> 
<hr/> 
使用自定義主題,自定義主題目錄<br/>  
使用myAnotherTemplate.jsp作為視圖組件 
<s:component 
  templateDir="myTemplateDir" 
  theme="myTheme" 
  template="myAnotherTemplate.jsp"> 
  <s:param name="list" value=" 
  {'Java' 
  ,'C#' 
  ,C++'}"/> 
</s:component> 
</body> 
</html> 
</span> 

看完上述內容,你們對struts2標簽的作用有哪些有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

静宁县| 克东县| 肥乡县| 台东县| 昭平县| 科技| 中西区| 图木舒克市| 深水埗区| 广河县| 小金县| 华亭县| 郴州市| 江源县| 江华| 铜陵市| 赞皇县| 彭阳县| 长泰县| 越西县| 和顺县| 新干县| 亚东县| 紫云| 福州市| 田东县| 凭祥市| 临高县| 昔阳县| 五家渠市| 南和县| 武安市| 时尚| 景洪市| 三亚市| 弥渡县| 安龙县| 桂东县| 探索| 资兴市| 柏乡县|