1. 程式人生 > >【Web開發】Struts2標籤使用——資料標籤

【Web開發】Struts2標籤使用——資料標籤

這裡寫圖片描述

資料標籤:用於實現獲得或訪問各種資料的功能

1.action標籤

(1)executeResult:可選屬性,為一個Boolean型別值,用來指定是否顯示action的執行結果,預設值為false,即不顯示。
(2)id:可選屬性,用來引用該action的標識。
(3)name:必填屬性,用來指定該action的實現類位置。
(4)namespace:可選屬性,用來指定該標籤呼叫的action所在的名稱空間。
(5)ignoreContextParams:可選屬性,用來指定該頁面中的請求引數是否需要傳入呼叫的action,預設值為false,即將本頁面的請求引數傳入被呼叫的action。

TagAction.java

public class TagAction extends ActionSupport{
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public String execute()throws Exception{
        return "ok";
    }
    public
String login() throws Exception{ ServletActionContext.getRequest().setAttribute("name", getName()); return "ok"; } }

struts.xml

<include file="struts-default.xml"/>
<package name="ch4" extends="struts-default" namespace="/tags">
    <action name="tag1" class="ch4.TagAction"
> <result name="ok">succ.jsp</result> </action> <action name="tag2" class="ch4.TagAction" method="login"> <result name="ok">loginSucc.jsp</result> </action> </package>

succ.jsp

<body>
呼叫Action!!
</body>

loginSucc.jsp

<body>
<s:property value="#request.name"/>登入成功!
</body>

呼叫Action的介面

<body>
<s:action name="tag1" executeResult="true" namespace="/tags" /><hr/>
<s:action name="tag2" executeResult="true" ignoreContextParams="false" namespace="/tags" /><hr/>
<s:action name="tag2" executeResult="true" ignoreContextParams="true" namespace="/tags" /><hr/>
<s:action name="tag2" executeResult="false" ignoreContextParams="false" namespace="/tags" /><hr />
<s:property value="#request.name"/>
</body>

在url後輸入?name=aa
action使用測試

2.bean標籤

用於在當前頁面中建立JavaBean例項物件,可巢狀param標籤,為該JavaBean例項化屬性值
name:必選屬性,用來指定可以例項化JavaBean的實現類
id:可選屬性,指定後可通過id訪問該例項。

這裡就用了之前寫的Book.java

當需要輸入字串時,需加 ‘ ’;
price是double,這裡故意輸錯,發現並沒有輸出,如果將圖書單價的value改為23.4,會正常輸出。
圖書數量是int型,沒有賦值,所以輸出了int的初值0。

<s:bean name="ch3.Book" id="book">
    <s:param name="name" value="'Book1'" />
    <s:param name="price" value="'Book1'" />
</s:bean>
圖書名稱:<s:property value="#book.name"/>
圖書單價:<s:property value="#book.price"/>
圖書數量:<s:property value="#book.num"/>

bean測試

3.debug標籤

用於輔助除錯,通過該標籤可以在頁面上生成一個連結,單擊連結可檢視當前ValueStack和Stack Context中的所有資訊。

4.include標籤

用於將Jsp或Servlet等資源內容包含到當前介面中,可以巢狀param標籤,實現將當前頁面的引數傳給被包含的頁面。
value:必選屬性,用於指定被包含的JSP或Servlet等資原始檔。
id:可選屬性,用於指定該標籤的引用ID。

includefile.jsp

<h3>被包含介面</h3>
傳遞的值為:<% out.println(request.getParameter("user")); %>

includeTag.jsp

<h1>這裡是主介面</h1>
<s:include value="includefile.jsp">
    <s:param name="user" value="'Hello'"/>
</s:include>

include標籤測試

5.param標籤

通常與其他標籤結合使用,用於給其他標籤提供引數。
如果要傳遞字串,需要加單引號。
兩種用法:

<s:param name="user">Hello</param>
<s:param name="user" value="'Hello'"/>

6.property標籤

用於輸出value屬性指定的值
default:用於指定屬性值為null時輸出的值。
escape:用於指定是否顯示標籤程式碼
value:用於指定要輸出的屬性值
id:用於指定該元素的引用ID。

前面已使用多次,所以就不舉例了。

7.set標籤

用於定義一個新的變數,並把一個已有的變數值複製給該新變數,同時可將該新變數放到指定範圍內,例如application範圍和session範圍等。
name:用於定義新變數的名字。
scope:用於定義新變數的使用範圍,可選值有application、session、request、response、page和action。
value:用來定義將要賦給新變數的值。
id:用來定義該元素的引用ID。

<s:set name="testName" value="'Struts 2'"/>
testName:<s:property value="#testName"/>
<h3>設定一個新變數</h3>
<s:bean name="ch3.Book" id="book">
    <s:param name="name">Book</s:param>
</s:bean> 
<s:set value="#book" name="user" scope="action"/>
<s:property value="#attr.user.name"/>
<s:set value="#book" name="user" scope="session"/>
<s:property value="#session.user.name"/>

首先給一個新的變數賦值並輸出,再定義一個Book例項,並放到action和session範圍內並輸出。
#attr 是ognl表示式,用於訪問上下文資料的,按照page->request->session->application的順序搜尋。
set標籤測試

7.url標籤

用來生成一個URL地址,可以通過巢狀param標籤來為URL指定傳送引數。
action:用來指定一個action作為URL的地址值,如果沒有給出,那麼url使用value的值來指定action,如果都有,使用value的值
value: 用來指定URL的地址值
includeParams: 該屬性有三個值:none get all,預設值為get。當該屬性值為get時,該url會將訪問其所在jsp的請求的所有get方法的引數新增到自身來當它的屬性值,為all時將get和post的的引數值全部新增到自身。一般我們並不需要額外的引數,所以定義為none
namespace:用於指定名稱空間
method:用來指定呼叫Action的方法名
encode:用於指定是否編碼請求引數
includeContext:用於指定是否將當前上下文包含在URL的地址值中。
id:用於指定URL元素的引用ID。

<s:url action="showBook">
    <s:param name="name" value="'Book1'"/>
</s:url><br>
<s:url value="http://localhost:8080/Test/ch4/urlTag.jsp">
    <s:param name="name" value="'Book2'"/>
</s:url><br>
<s:url includeParams="get">
    <s:param name="name" value="%{'Book3'}"/>
</s:url>

url標籤測試
兩種value賦值寫法作用相同

9.date標籤

用於按指定格式輸出一個日期,還可以計算指定時間到當前的時間的時差。
format:用於指定日期格式化
nice:用於指定是否輸出指定時間與當前時間的時差,預設值為false,即不輸出時差。
關於將英文配置成中文請參考 【轉】< s:date >使用nice 屬性 實現 ‘XX分鐘前’ 日期顯示

name:用於指定要被格式化輸出的日期值。
id:用於指定該元素的引用ID。

format和nice屬性不能同時指定,同時指定時則format屬性失效

<h3>date使用</h3>
<s:bean name="java.util.Date" id="currentDate"></s:bean>
<ul><li>日期格式</li><li>日期</li></ul>
<ul><li>Year/Month/Day</li><li><s:date name="#currentDate" format="yyyy/MM/dd"/></li></ul>
<ul><li>Year/Day/Month</li><li><s:date name="#currentDate" format="yyyy/dd/MM"/></li></ul>
<ul><li>Day/Month/Year</li><li><s:date name="#currentDate" format="dd/MM/yyyy"/></li></ul>
<ul><li>Nice Date</li><li><s:date name="#currentDate" nice="true"/></li></ul>

date標籤測試