【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
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"/>
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>
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的順序搜尋。
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>
兩種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>