国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - struts2標簽總結_動力節點Java學院整理

struts2標簽總結_動力節點Java學院整理

2020-12-28 10:00liujiahan Java教程

這篇文章主要為大家詳細總結了struts2標簽的使用方法,和學習資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

struts2標簽總結_動力節點Java學院整理

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<span style="font-size:18px;"><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:用于將多個集合拼接成一個新的集合;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<span style="font-size:18px;"><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">
    style="background-color:#bbbbbb"</s:if>>
    <td><s:property value="key"/></td>
    <td><s:property value="value"/></td>
  </tr>
</s:iterator>
</table>
</body>
</html>
</span>

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<span style="font-size:18px;"><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">
    style="background-color:#bbbbbb"</s:if>>
    <td><s:property/></td>
  </tr>
</s:iterator>
</s:generator>
</table>
</body>
</html></span>

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<span style="font-size:18px;"><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">style="background-color:#bbbbbb"</s:if>>
    <td><s:property value="key"/></td>
    <td><s:property value="value"/></td>
  </tr>
</s:iterator>
</table>
</body>
</html></span>

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<span style="font-size:18px;"><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">
    style="background-color:#bbbbbb"</s:if>>
    <td><s:property/></td>
  </tr>
</s:iterator>
</table>
</body>
</html></span>
?
1
2
3
4
5
6
7
8
9
10
<span style="font-size:18px;">public class MyComparator implements Comparator
{
 //決定兩個元素大小的方法
 public int compare(Object element1, Object element2)
 {
  //根據元素字符串長度來決定大小 
  return element1.toString().length()
   - element2.toString().length();
 }
}</span>

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<span style="font-size:18px;"><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 style="font-family: SimSun; ">'Java'</span></span><pre name="code" class="html"><span style="font-size:18px;"> ,'C#'
  ,'C++'
  ,'Ajax'
  ,'XML'</span></pre><span style="font-size:18px;">}" 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">style="background-color:#bbbbbb"</s:if>><td><s:property/></td></tr></s:iterator></table></body></html></span>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
<span style="font-size:18px;">//用戶自定義的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,不包含. 

?
1
2
3
4
<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標簽內,一旦超出,剛剛放入的對象立即被移除

用法:

?
1
2
3
4
5
<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標簽總結_動力節點Java學院整理

簡單看一個componet標簽:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<span style="font-size:18px;"><html>
<head>
  <title>使用s:component標簽</title>
</head>
<body>
<h3>使用s:component標簽</h3>
使用默認主題(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>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲成人免费在线 | 久久久久久国产精品 | 电影一级毛片 | 久久精品国产亚洲一区二区三区 | 欧美精品成人 | 激情五月婷婷 | 欧美激情专区 | 一区二区三区中文字幕 | 国产精品美女久久久久久久久久久 | 九九热精品在线播放 | 精品久久久久久久人人人人传媒 | 国产特级毛片aaaaaa毛片 | 四虎视频 | 久久国产精品久久久久久电车 | 色网站在线视频 | 69久久| 三级视频在线 | 国产不卡精品视频 | 亚洲欧美久久 | 国产一区在线不卡 | 日韩资源在线 | 亚洲午夜网站 | 国产精品99久久 | 麻豆国产尤物av尤物在线观看 | 男人久久久 | 欧州一区二区三区 | 成人国产精品156免费观看 | 黄色影视在线免费观看 | 国产区视频| 99中文字幕 | 中文字幕在线视频第一页 | 综合久久综合久久 | 欧美日韩91| 一区二区在线 | 中文学幕专区 | 特黄特色大片免费视频观看 | 538在线精品| www中文字幕 | 欧美一级免费看 | 91久草视频 | 国产精品美女久久久久久免费 |