欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Struts之logic標(biāo)簽庫(kù)詳解

 更新時(shí)間:2012年11月21日 15:28:26   作者:  
本文就Struts之logic標(biāo)簽庫(kù)進(jìn)行詳細(xì)介紹,需要的朋友可以參考下
1.logic:empty
logic:empty標(biāo)簽是用來(lái)判斷是否為空的。如果為空,該標(biāo)簽體中嵌入的內(nèi)容就會(huì)被處理。該標(biāo)簽用于以下情況:
當(dāng)Java對(duì)象為null時(shí)
當(dāng)String對(duì)象為""時(shí)
當(dāng)java.util.Collection對(duì)象中的isEmpty()返回true時(shí)
當(dāng)java.util.Map對(duì)象中的isEmpty()返回true時(shí)
下面的代碼示例了logic:empty標(biāo)簽判斷集合persons是否為空:
<logic:empty name="listForm" property = "persons">
<div>集合persons為空!</div>
</logic:empty>

2.logic:notEmpty
該標(biāo)簽的應(yīng)用正好和logic:empty標(biāo)簽相反。

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

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

5. logic:forward
該標(biāo)簽用于實(shí)現(xiàn)頁(yè)面導(dǎo)向,查找配置文件的全局forward。struts-config.xml文件中全局轉(zhuǎn)向
eg. <logic:forward name="redirect"/>

6. logic:greaterEqual
為大于等于比較符。
eg. 當(dāng)某學(xué)生的成績(jī)大于等于60時(shí),輸出“及格”:
<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
此標(biāo)簽比較對(duì)象是否相等;
logic:match標(biāo)簽用來(lái)處理子串匹配問(wèn)題。
如果指定的值匹配該標(biāo)簽就會(huì)創(chuàng)建其標(biāo)簽體內(nèi)的內(nèi)容。該標(biāo)簽用于以下情況:
檢查具有指定名稱的cookie是否與該標(biāo)簽的value匹配。
檢查具有指定名稱的header是否與該標(biāo)簽的value匹配。
檢查具有指定名稱的JSP Bean是否與該標(biāo)簽的value匹配 或 檢查具有指定名稱的JSP Bean中的property屬性值是否與該標(biāo)簽的value匹配。
檢查request中指定名稱的參數(shù)值是否與該標(biāo)簽的value匹配。
下面的代碼示例了logic:match標(biāo)簽的典型用法:
eg0.
復(fù)制代碼 代碼如下:

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

eg1. 檢查在request范圍內(nèi)的name屬性是否包含"hello"串:
復(fù)制代碼 代碼如下:

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

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

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

eg3.
復(fù)制代碼 代碼如下:

<logic:match header="user-agent" value="Windows">
你運(yùn)行的是Windows系統(tǒng)
</logic:match>

11. logic:notMatch
logic:notMatch標(biāo)簽的應(yīng)用正好和logic:match標(biāo)簽相反。
此標(biāo)簽用于比較對(duì)象是否不相同,與logic:match意義相反,使用方法類似

12. logic:messagePresent
該標(biāo)簽用于判斷ActionMessages/ActionErrors對(duì)象是否存在;
logic:messagesPresent標(biāo)簽用于以下情況:
在request作用域中存在一個(gè)ActionMessages對(duì)象,標(biāo)簽的property屬性和ActionMessages中的property對(duì)應(yīng)。
在request作用域中存在一個(gè)ActionErrors對(duì)象,標(biāo)簽的property屬性和ActionErrors中的property對(duì)應(yīng)。
存在一個(gè)String對(duì)象,將其轉(zhuǎn)換(構(gòu)造)成ActionMessage然后在添加到ActionMessages中。
存在一個(gè)String Array對(duì)象,將數(shù)組中的每一個(gè)String轉(zhuǎn)換成一個(gè)ActionMessage,在將其添加到ActionMessages中。
標(biāo)簽的message屬性值為true時(shí)將以Globals.MESSAGE_KEY為key在request作用域中查找Message,其它情況下,將name的值作為key查找,如果name 沒(méi)有出現(xiàn),默認(rèn)值為Globals.ERROR_KEY。
下面的代碼示例了logic:messagesPresent標(biāo)簽的典型用法:
eg1.
復(fù)制代碼 代碼如下:

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

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

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

13. logic:messagesNotPresent
標(biāo)簽logic:messagesNotPresent的應(yīng)用正好和logic:messagesPresent的應(yīng)用相反。
該標(biāo)簽用于判斷ActionMessages/ActionErrors對(duì)象是否不存在,使用方法與logic:messagePresent類似

14. logic:present
此標(biāo)簽用于判斷request對(duì)象傳遞參數(shù)是否存在。
如果指定的值出現(xiàn)該標(biāo)簽就會(huì)創(chuàng)建其標(biāo)簽體內(nèi)的內(nèi)容。該標(biāo)簽用于以下情況:
檢查具有指定名稱的cookie是否出現(xiàn)。
檢查具有指定名稱的header是否出現(xiàn)。
檢查具有指定名稱的JSP Bean是否出現(xiàn) 或 檢查具有指定名稱的JSP Bean中的property屬性是否出現(xiàn)。
檢查request中指定名稱的參數(shù)是否出現(xiàn)。
檢查當(dāng)前的認(rèn)證用戶是否與指定的安全角色相關(guān)聯(lián)。
檢查當(dāng)前認(rèn)證的主體是否具有指定的名字。
eg1. user對(duì)象和它的name屬性在request中都存在時(shí),輸出相應(yīng)字符串:
復(fù)制代碼 代碼如下:

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

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

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");
}

標(biāo)簽輸出的結(jié)果為:
00001-->趙辰
00002-->李為芳
00003-->王微
eg1. 逐一輸出用戶列表(empList)中用戶的姓名:
<logic:iterate id="emp" name="empList">
<bean:write name="emp" property="name"/><br>
</logic:iterate>
eg2. 從用戶列表中輸出從1開(kāi)始的兩個(gè)用戶的姓名
<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標(biāo)簽的嵌套舉例
<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
該標(biāo)簽用于實(shí)現(xiàn)頁(yè)面轉(zhuǎn)向,可傳遞參數(shù)。
eg. <logic:redirect />
18. logic:forward和logic:redirect的比較
----------------------------------------------------------------------------------------------------------------
將forward和redirect這兩個(gè)動(dòng)作放到一起對(duì)比著介紹更加有利于理解,基于此原因也就將logic:forward和logic:redirect這兩個(gè)標(biāo)簽也拿到這里一起介紹了。

讓我們看看這兩個(gè)動(dòng)作的區(qū)別:
forward是在servlet內(nèi)部執(zhí)行,瀏覽器完全不會(huì)感知到這個(gè)動(dòng)作,原始的url也不會(huì)改變,瀏覽器重新裝載的話也只是對(duì)原始的請(qǐng)求進(jìn)行簡(jiǎn)單的重復(fù)。
redirect則分成兩個(gè)步驟:第一步是web應(yīng)用程序告訴瀏覽器第二個(gè)url,然后瀏覽器向第二個(gè)url發(fā)送請(qǐng)求。
redirect比f(wàn)orward慢,因?yàn)闉g覽器要做二次請(qǐng)求。還有就是要注意,在第一次的請(qǐng)求作用域(request作用域)內(nèi)的bean對(duì)于第二次請(qǐng)求是不可見(jiàn)的。
理解了上面描述的區(qū)別也就知道了什么時(shí)候該選用logic:forward標(biāo)簽什么時(shí)候該選用logic:redirect標(biāo)簽了。
logic:forward標(biāo)簽完成PageContext.forward()或 HttpServletResponse.sendRedirect(),如何選擇由控制器決定。logic:redirect標(biāo)簽完成 HttpServletResponse.sendRedirect()。
在使用logic:redirect標(biāo)簽時(shí)我們可以向使用html:link一樣構(gòu)造baseurl和query參數(shù)。如果您感興趣可以參考html:link標(biāo)簽。

相關(guān)文章

  • Java實(shí)現(xiàn)十秒向MySQL插入百萬(wàn)條數(shù)據(jù)

    Java實(shí)現(xiàn)十秒向MySQL插入百萬(wàn)條數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)十秒向MySQL插入百萬(wàn)條數(shù)據(jù),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定借鑒價(jià)值,需要的可以參考一下
    2022-11-11
  • idea 打包的jar運(yùn)行報(bào)

    idea 打包的jar運(yùn)行報(bào) "XXX中沒(méi)有主清單屬性"

    這篇文章主要介紹了idea 打包的jar運(yùn)行報(bào) "XXX中沒(méi)有主清單屬性",文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Java創(chuàng)建數(shù)組的3種方式代碼舉例

    Java創(chuàng)建數(shù)組的3種方式代碼舉例

    數(shù)組是相同類型數(shù)據(jù)的有序集合,數(shù)組描述的是若干個(gè)相同類型的數(shù)據(jù)按照一定的先后次序排列組合而成,其中每一個(gè)數(shù)據(jù)稱為數(shù)組的元素,可以通過(guò)下標(biāo)進(jìn)行訪問(wèn),這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建數(shù)組的3種方式,需要的朋友可以參考下
    2024-01-01
  • Java讀取txt文件中的數(shù)據(jù)賦給String變量方法

    Java讀取txt文件中的數(shù)據(jù)賦給String變量方法

    今天小編就為大家分享一篇Java讀取txt文件中的數(shù)據(jù)賦給String變量方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • java實(shí)現(xiàn)背單詞程序

    java實(shí)現(xiàn)背單詞程序

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)背單詞程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Java利用Optional解決空指針異常

    Java利用Optional解決空指針異常

    這篇文章主要介紹了Java利用Optional解決空指針異常,Optional?類是一個(gè)包含有可選值的包裝類,這意味著?Optional?類既可以含有對(duì)象也可以為空
    2022-09-09
  • net.sf.json.JSONObject 為null 的判斷方法

    net.sf.json.JSONObject 為null 的判斷方法

    下面小編就為大家?guī)?lái)一篇net.sf.json.JSONObject 為null 的判斷方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • mybatis plus表的創(chuàng)建時(shí)間和修改時(shí)間的操作方法

    mybatis plus表的創(chuàng)建時(shí)間和修改時(shí)間的操作方法

    這篇文章主要介紹了mybatis plus表的創(chuàng)建時(shí)間和修改時(shí)間的實(shí)現(xiàn)方法,本文給大家分享兩種方法,每種方法通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • 使用bat啟動(dòng)springboot項(xiàng)目并解決亂碼問(wèn)題

    使用bat啟動(dòng)springboot項(xiàng)目并解決亂碼問(wèn)題

    這篇文章主要介紹了window中使用bat啟動(dòng)springboot項(xiàng)目,并解決亂碼問(wèn)題
    2021-06-06
  • Spring Boot整合JPA使用多個(gè)數(shù)據(jù)源的方法步驟

    Spring Boot整合JPA使用多個(gè)數(shù)據(jù)源的方法步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot整合JPA使用多個(gè)數(shù)據(jù)源的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評(píng)論