亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Struts之logic標簽庫詳解

2019-11-26 16:18:33
字體:
來源:轉載
供稿:網友
1.logic:empty
logic:empty標簽是用來判斷是否為空的。如果為空,該標簽體中嵌入的內容就會被處理。該標簽用于以下情況:
當Java對象為null時
當String對象為""時
當java.util.Collection對象中的isEmpty()返回true時
當java.util.Map對象中的isEmpty()返回true時
下面的代碼示例了logic:empty標簽判斷集合persons是否為空:
<logic:empty name="listForm" property = "persons">
<div>集合persons為空!</div>
</logic:empty>

2.logic:notEmpty
該標簽的應用正好和logic:empty標簽相反。

3.logic:equal
該標簽為等于比較符。
eg1. 比較用戶的狀態屬性是否1,若為1,輸出"啟用";
eg2. 如果上例中的value值是動態獲得的,例如需要通過bean:write輸出,因struts不支持標簽嵌套,可采用EL來解決該問題。
logic:equal
這里要介紹的不只是logic:equal(=)標簽,而是要介紹一類標簽,這類標簽完成比較運算,包括:
logic:equal(=)
logic:notEqual(!=)
logic:greaterEqual(>=)
logic:lessEqual(<=)
logic:graterThan(>)
logic:lessThan(<)
該類標簽的用法類似,我們只介紹logic:equal標簽,其它的留給您自己去完成。
logic:equal是用來判斷是否相等的。如果相等,該標簽體中嵌入的內容就會被處理。該標簽用于以下情況:
比較由該標簽的cookie屬性指定的cookie的值是否與該標簽的value屬性值相等。
比較由該標簽的header屬性指定的header的值是否與該標簽的value屬性值相等。
比較由該標簽的name屬性指定的JSP Bean是否與該標簽的value屬性值相等(property屬性不出現)或比較由該標簽的name屬性指定的JSP Bean中的property屬性值是否與該標簽的value屬性值相等。
比較由該標簽的parameter屬性指定的參數值(request中)是否與該標簽的value屬性值相等。

4. logic:notEqual
該標簽意義與logic:equal相反,使用方法類似,略。

5. logic:forward
該標簽用于實現頁面導向,查找配置文件的全局forward。struts-config.xml文件中全局轉向
eg. <logic:forward name="redirect"/>

6. logic:greaterEqual
為大于等于比較符。
eg. 當某學生的成績大于等于60時,輸出“及格”:
<logic:greaterEqual name="student" property="scores" value="60">
及格
</logic:greaterEqual>

7. logic:greaterThan
此為大于比較符,使用方法同logic:greaterEqual;

8. logic:lessEqual
此為小于等于比較符,使用方法同logic:greaterEqual;

9. logic:lessThan
此為小于比較符,使用方法同logic:greaterEqual;

10. logic:match
此標簽比較對象是否相等;
logic:match標簽用來處理子串匹配問題。
如果指定的值匹配該標簽就會創建其標簽體內的內容。該標簽用于以下情況:
檢查具有指定名稱的cookie是否與該標簽的value匹配。
檢查具有指定名稱的header是否與該標簽的value匹配。
檢查具有指定名稱的JSP Bean是否與該標簽的value匹配 或 檢查具有指定名稱的JSP Bean中的property屬性值是否與該標簽的value匹配。
檢查request中指定名稱的參數值是否與該標簽的value匹配。
下面的代碼示例了logic:match標簽的典型用法:
eg0.
復制代碼 代碼如下:

<logic:present header="User-Agent">
<logic:match header="User-Agent" value="MSIE 6.0">
MS IE 6.0
</logic:match>
</logic:present>

eg1. 檢查在request范圍內的name屬性是否包含"hello"串:
復制代碼 代碼如下:

<logic:match name="name" scope="request" value="hello">
<bean:write name="name"/>中有一個“hello”串。
</logic:match>

eg2. 檢查在request范圍內的name屬性是否已“hello”作為起始字符串:
復制代碼 代碼如下:

<logic:match name="name" scope="request" value="hello" location="start">
<bean:write name="name"/>以“hello”作為起始字符串。
</logic:match>

eg3.
復制代碼 代碼如下:

<logic:match header="user-agent" value="Windows">
你運行的是Windows系統
</logic:match>

11. logic:notMatch
logic:notMatch標簽的應用正好和logic:match標簽相反。
此標簽用于比較對象是否不相同,與logic:match意義相反,使用方法類似

12. logic:messagePresent
該標簽用于判斷ActionMessages/ActionErrors對象是否存在;
logic:messagesPresent標簽用于以下情況:
在request作用域中存在一個ActionMessages對象,標簽的property屬性和ActionMessages中的property對應。
在request作用域中存在一個ActionErrors對象,標簽的property屬性和ActionErrors中的property對應。
存在一個String對象,將其轉換(構造)成ActionMessage然后在添加到ActionMessages中。
存在一個String Array對象,將數組中的每一個String轉換成一個ActionMessage,在將其添加到ActionMessages中。
標簽的message屬性值為true時將以Globals.MESSAGE_KEY為key在request作用域中查找Message,其它情況下,將name的值作為key查找,如果name 沒有出現,默認值為Globals.ERROR_KEY。
下面的代碼示例了logic:messagesPresent標簽的典型用法:
eg1.
復制代碼 代碼如下:

<logic:messagesPresent>
<ul>
<html:messages id="message">
<li><bean:write name="message"/></li>
</html:messages>
</ul>
</logic:messagesPresent>

eg2.
如果存在error信息,將其全部輸出:
復制代碼 代碼如下:

<logic:messagePresent property="error">
<html:messages property="error" id="err" >
<bean:write name="err"/>
</html:messages>
</logic:messagePresent >

13. logic:messagesNotPresent
標簽logic:messagesNotPresent的應用正好和logic:messagesPresent的應用相反。
該標簽用于判斷ActionMessages/ActionErrors對象是否不存在,使用方法與logic:messagePresent類似

14. logic:present
此標簽用于判斷request對象傳遞參數是否存在。
如果指定的值出現該標簽就會創建其標簽體內的內容。該標簽用于以下情況:
檢查具有指定名稱的cookie是否出現。
檢查具有指定名稱的header是否出現。
檢查具有指定名稱的JSP Bean是否出現 或 檢查具有指定名稱的JSP Bean中的property屬性是否出現。
檢查request中指定名稱的參數是否出現。
檢查當前的認證用戶是否與指定的安全角色相關聯。
檢查當前認證的主體是否具有指定的名字。
eg1. user對象和它的name屬性在request中都存在時,輸出相應字符串:
復制代碼 代碼如下:

<logic:present name="user" property="name">
user對象和該對象的name屬性都存在
</logic:present>

eg2. 若有一個名字為“hello”的JavaBean,輸出對應字符串:
<logic:present name="hello" >
有一個名字為“hello”的JavaBean。
</logic:present>
eg3.
<logic:present header="user-agent">
we got a user-agent header.
</logic:present>
eg4.
下面的代碼示例了logic:present標簽檢查具有指定名稱User-Agent的header是否出現:
<logic:present header="User-Agent">
您的瀏覽器是<bean:header id="userAgent" name="User-Agent"/>
<bean:write name="userAgent"/>。<br/>
</logic:present>
15. logic:notPresent
此標簽用于判斷request對象傳遞參數是否不存在,意義與了logic:present相反,使用方法類似。
logic:notPresent標簽的應用正好和logic:present標簽相反。
16. logic:iterator
用于顯示列表為collection的值(List ,ArrayList,HashMap等)。
logic:iterate標簽用來迭代集合,您可以使用如下方式來為這個標簽指定其要疊代的集合:
使用一個運行時表達式,這個表達式的值是一個集合。
用name屬性引用一個JSP Bean,這個JSP Bean本身就是一個集合。
用name屬性引用一個JSP Bean,這個JSP Bean的一個屬性是一個集合,這時可以聯合使用property來指定這個集合。
上面所提到的集合可以是:
對象類型或原子類型的數組(Array)。
java.util.Collection的實現,包括ArrayList,Vector。
java.util.Enumeration的實現。
java.util.Iterator的實現。
java.util.Map的實現,包括HashMap,Hashtable和TreeMap。
如果您疊代的集合中含有null的值,這時需要采取一定的措施,因為這時logic:iterate不會在page作用域中創建對象。一般是使用<logic:present>標簽或<logic:notPresent>標簽來判斷一下。
下面是logic:iterate疊代ArrayList的示例的對象引用關系和部分代碼:
圖示 3. logic:iterate中對象的引用關系
圖中的persons列表是在ListAction中填充的,在這里只是簡單的加入了三個Person對象,在實際的應用中這些數據應該取自數據庫。具體的代碼如下:
復制代碼 代碼如下:

public ActionForward execute(ActionMapping mapping,ActionForm. form,
HttpServletRequest request, HttpServletResponse response) {
ListForm. listForm. = (ListForm) form;
List<Person> persons = new ArrayList<Person>();
Person person1 = new Person();
person1.setId("00001");
person1.setName("趙辰");
Person person2 = new Person();
person2.setId("00002");
person2.setName("李為芳");
Person person3 = new Person();
person3.setId("00003");
person3.setName("王微");
persons.add(person1);
persons.add(person2);
persons.add(person3);
listForm.setPersons(persons);
return mapping.findForward("success");
}

標簽輸出的結果為:
00001-->趙辰
00002-->李為芳
00003-->王微
eg1. 逐一輸出用戶列表(empList)中用戶的姓名:
<logic:iterate id="emp" name="empList">
<bean:write name="emp" property="name"/><br>
</logic:iterate>
eg2. 從用戶列表中輸出從1開始的兩個用戶的姓名
<logic:iterate id="emp" name="empList" indexId="index" offset="1" length="2">
<bean:write name="index"/>.<bean:write name="emp" property="name"/><br>
</logic:iterate>
eg3. logic:iterator標簽的嵌套舉例
<logic:iterate id="emp" indexId="index" name="empList">
<bean:write name="index"/>. <bean:write name="emp" property="name"/><br>
<logic:iterate id="address" name="emp" property="addressList" length="3" offset="1">
<bean:write name="address"/><br>
</logic:iterate>
</logic:iterate>
17. logic:redirect
該標簽用于實現頁面轉向,可傳遞參數。
eg. <logic:redirect />
18. logic:forward和logic:redirect的比較
----------------------------------------------------------------------------------------------------------------
將forward和redirect這兩個動作放到一起對比著介紹更加有利于理解,基于此原因也就將logic:forward和logic:redirect這兩個標簽也拿到這里一起介紹了。

讓我們看看這兩個動作的區別:
forward是在servlet內部執行,瀏覽器完全不會感知到這個動作,原始的url也不會改變,瀏覽器重新裝載的話也只是對原始的請求進行簡單的重復。
redirect則分成兩個步驟:第一步是web應用程序告訴瀏覽器第二個url,然后瀏覽器向第二個url發送請求。
redirect比forward慢,因為瀏覽器要做二次請求。還有就是要注意,在第一次的請求作用域(request作用域)內的bean對于第二次請求是不可見的。
理解了上面描述的區別也就知道了什么時候該選用logic:forward標簽什么時候該選用logic:redirect標簽了。
logic:forward標簽完成PageContext.forward()或 HttpServletResponse.sendRedirect(),如何選擇由控制器決定。logic:redirect標簽完成 HttpServletResponse.sendRedirect()。
在使用logic:redirect標簽時我們可以向使用html:link一樣構造baseurl和query參數。如果您感興趣可以參考html:link標簽。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线播放日韩精品| 久久av红桃一区二区小说| 尤物yw午夜国产精品视频明星| 久久久999成人| 色噜噜亚洲精品中文字幕| 欧美最猛性xxxxx亚洲精品| 狠狠躁夜夜躁人人躁婷婷91| 国产精彩精品视频| 国产91对白在线播放| 91产国在线观看动作片喷水| 96精品久久久久中文字幕| 欧美巨大黑人极品精男| 美女福利视频一区| 欧美日韩一区二区在线| 亚洲欧洲日韩国产| 亚洲 日韩 国产第一| 亚洲精品国精品久久99热| www.日韩不卡电影av| 国产精品成人品| 欧美日韩在线视频首页| 亚洲精品在线看| 国产精品久久久久久久av大片| 久久国产加勒比精品无码| 国外日韩电影在线观看| 久久久久免费精品国产| 亚洲一级黄色片| 色综合视频一区中文字幕| www.日韩.com| 欧美性猛交xxxx免费看漫画| 亚洲视频axxx| www高清在线视频日韩欧美| 97在线看免费观看视频在线观看| 亚洲精品一区二区久| 欧美麻豆久久久久久中文| 亚洲丝袜在线视频| 国产区亚洲区欧美区| 国产精品天天狠天天看| 国产一区二区色| 一区二区三区 在线观看视| 久久精品免费播放| 精品日本美女福利在线观看| 精品国产鲁一鲁一区二区张丽| 欧美中文字幕第一页| 久久人人爽国产| 亚洲欧洲中文天堂| 57pao国产成人免费| 国产精品久久久久久久电影| 最近2019年中文视频免费在线观看| 亚洲性夜色噜噜噜7777| 久久久精品视频成人| 精品视频偷偷看在线观看| 日本19禁啪啪免费观看www| 国产a∨精品一区二区三区不卡| 91成人在线观看国产| 在线视频日本亚洲性| 庆余年2免费日韩剧观看大牛| 亚洲欧美另类人妖| 91欧美精品成人综合在线观看| 日韩成人免费视频| 成人激情电影一区二区| 91免费国产视频| 91精品国产综合久久久久久久久| 一区二区三区www| 久久精品视频99| 亚洲第一中文字幕在线观看| 国产精品欧美一区二区| 久久成人亚洲精品| 亚洲午夜未满十八勿入免费观看全集| 久久99热这里只有精品国产| 中文字幕在线看视频国产欧美| 国产精品热视频| 亚洲欧洲在线观看| 亚洲天堂免费在线| 久久中文字幕视频| 国产精品吹潮在线观看| 亚洲精品免费一区二区三区| 国产欧美一区二区三区在线看| 久久久久北条麻妃免费看| 国产精品久久久久久久久久小说| 不卡av电影在线观看| xxxx欧美18另类的高清| 亚洲桃花岛网站| 91网站在线看| 国产精品视频大全| 疯狂做受xxxx欧美肥白少妇| 岛国精品视频在线播放| 欧美激情精品久久久久久变态| 国产香蕉一区二区三区在线视频| 国内免费久久久久久久久久久| 久久精品视频亚洲| 日韩高清欧美高清| 欧美精品一二区| 欧美成人sm免费视频| 日韩av在线免费| 久久伊人精品一区二区三区| 97精品伊人久久久大香线蕉| 国产欧美一区二区三区久久人妖| 韩国国内大量揄拍精品视频| 九九精品在线视频| 亚洲一区亚洲二区| 日本一区二三区好的精华液| 国产精品av在线播放| 日韩在线一区二区三区免费视频| 欧美日韩亚洲系列| 国产性色av一区二区| 一区二区国产精品视频| 欧美日韩中文在线观看| 91精品视频观看| 一区二区三区无码高清视频| 欧美亚洲成人xxx| 日韩毛片中文字幕| 国产精品亚洲аv天堂网| 国产亚洲精品va在线观看| 久久在线视频在线| 性亚洲最疯狂xxxx高清| 欧美午夜性色大片在线观看| 日韩电影中文字幕一区| 自拍视频国产精品| 欧美精品videossex88| 日韩成人在线视频网站| 欧美激情亚洲视频| 欧美大肥婆大肥bbbbb| 日韩电影中文字幕一区| 日韩美女激情视频| 岛国精品视频在线播放| 午夜精品在线观看| 91日本在线视频| 丝袜亚洲另类欧美重口| 蜜臀久久99精品久久久久久宅男| 日本在线精品视频| 欧美视频13p| 国产午夜精品全部视频播放| 欧美视频裸体精品| 亚洲free性xxxx护士hd| 中文综合在线观看| 日韩av免费在线播放| 久久欧美在线电影| 色婷婷av一区二区三区在线观看| 国语自产精品视频在线看一大j8| 国产精品久久久久久久久久| 成人在线免费观看视视频| 国产精品色视频| 国产成人精品视频在线| 国产精品大陆在线观看| 中文字幕久热精品视频在线| 日韩精品在线观看网站| 亚洲一区二区三区四区在线播放| 久久精品男人天堂| 成人黄色短视频在线观看| 国产一区二区三区在线免费观看| 色久欧美在线视频观看| 国产美女久久久| 久久精品国产久精国产一老狼| 2021国产精品视频| 国产啪精品视频网站| 亚洲精品国产拍免费91在线| 91黄色8090| 国产亚洲人成网站在线观看| 欧美视频精品一区| 亚洲精品小视频在线观看| 亚洲v日韩v综合v精品v| 国产91久久婷婷一区二区| 国产中文字幕91| 热99精品只有里视频精品|