學(xué)習(xí)筆記 Eclipse Struts2 Examples-Using Tags

文章摘要
1、Struts 2 url標(biāo)簽
2哥谷、Struts 2表單標(biāo)簽
3岸夯、Struts 2屬性標(biāo)簽


英文文獻(xiàn)請點(diǎn)擊此處~

Hello World中,我們添加了一個(gè)Struts 2 url標(biāo)簽index.jsp
來創(chuàng)建一個(gè)超鏈接hello.action们妥。

    <body>
        <h1>Welcome To Struts 2!</h1>
        <p><a href="<s:url action='hello'/>">Hello World</a></p>
    </body>

要在視圖頁面上使用Struts 2標(biāo)簽猜扮,您必須包含一個(gè)標(biāo)簽庫指令。通常监婶,taglib偽指令是<%@ taglib prefix="s" uri="/struts-tags" %\>旅赢。所以所有Struts 2標(biāo)簽的前綴將為“s”。如果要實(shí)際讀取Struts 2標(biāo)簽TLD文件惑惶,您可以在Struts 2核心jar的“META-INF”文件夾中找到它煮盼。

接下來,我們在Hello World的基礎(chǔ)上带污,增加標(biāo)簽的使用案例僵控。

一、Struts 2 url標(biāo)簽

Struts 2標(biāo)簽的一個(gè)用途是創(chuàng)建到其他Web資源的鏈接鱼冀,特別是本地應(yīng)用程序中的其他資源报破。

雖然HTML為創(chuàng)建超鏈接提供了一個(gè)簡單的標(biāo)簽悠就,但HTML標(biāo)簽通常需要我們包含重復(fù)、冗余信息充易。HTML標(biāo)簽也不容易訪問框架提供的動(dòng)態(tài)數(shù)據(jù)梗脾。

  • 1、Web應(yīng)用程序中非常常見的用例是鏈接到其他頁面盹靴。
    Hello World中藐唠,我們hello.action在index.jsp使用Struts 2的URL標(biāo)簽內(nèi)添加了一個(gè)鏈接。
<p><a href="<s:url action='hello'/>">Hello World</a></p>
  • 2鹉究、使用標(biāo)簽,添加參數(shù)s:param踪宠。
<s:url action="hello" var="helloLink">
      <s:param name="userName">Bruce Phillips</s:param>
    </s:url>
    <p><a href="${helloLink}">Hello Bruce Phillips</a></p>

二自赔、Struts 2表單標(biāo)簽

大多數(shù)應(yīng)用程序?qū)⑹褂枚鄠€(gè)數(shù)據(jù)輸入表單。Struts 2標(biāo)簽使得創(chuàng)建輸入表單變得容易柳琢。
每個(gè)Struts 2表單標(biāo)簽都有許多屬性來模擬正常的HTML表單標(biāo)簽屬性绍妨。

要?jiǎng)?chuàng)建窗體的外殼,請使用Struts 2表單標(biāo)簽柬脸。action屬性設(shè)置要提交的操作名稱他去。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Basic Struts 2 Application - Welcome</title>
  </head>
  <body>
    <h1>Welcome To Struts 2!</h1>
    <p>Get your own personal hello by filling out and submitting this form.</p>
    <s:form action="hello">
      <s:textfield name="userName" label="Your name" />
      <s:submit value="Submit" />
    </s:form>
  </body>
</html>

表單標(biāo)簽,在瀏覽時(shí)倒堕,瀏覽頁面:

頁面中的struts 標(biāo)簽灾测,會(huì)轉(zhuǎn)化為html:

<form id="hello" name="hello" action="/using-tags/hello.action;jsessionid=6233ot11na1mtshbr292hu1w" method="post">
  <table class="wwFormTable">
    <tr>
      <td class="tdLabel"><label for="hello_userName" class="label">Your name:</label></td>
      <td class="tdInput"><input type="text" name="userName" value="" id="hello_userName"/></td>
    </tr>
    <tr>
      <td colspan="2">
        <div class="formButton">
          <input type="submit" value="Submit" id="hello_0"/>
        </div>
      </td>
    </tr>
  </table>
</form>

三、Struts 2屬性標(biāo)簽

  • 1垦巴、屬性標(biāo)簽:
<s:property value="messageStore.message" />

屬性標(biāo)簽最常見的用法是通過調(diào)用公共get方法(Action類)“獲取”返回的值媳搪,然后將該值包含在返回給瀏覽器的HTML中。

Hello World教程中所討論的骤宣,messageStore.message指示Struts 2首先調(diào)用getMessageStore Action類的方法的值秦爆。該方法調(diào)用返回一個(gè)MessageStore對象。該.message部分指示Struts 2調(diào)用MessageStore對象的getMessage方法憔披。該getMessage方法返回一個(gè)String等限,該字符串將包含在返回給瀏覽器的HTML中。

Struts 2屬性標(biāo)簽的一個(gè)非常有用的功能是它會(huì)自動(dòng)將最常見的數(shù)據(jù)類型(int芬膝,double望门,boolean)轉(zhuǎn)換為其等效字符串。為了演示此功能锰霜,我們將一個(gè)靜態(tài)int變量添加到類中HelloWorldAction怒允。

HelloWorldAction.java

package wanghailu.apache.struts.action;

import com.opensymphony.xwork2.ActionSupport;
import wanghailu.apache.struts.model.MessageStore;

public class HelloWorldAction extends ActionSupport {

    private static final long serialVersionUID = 1L;
    

    private MessageStore messageStore;
    
    private static int helloCount = 0;
    
    public int getHelloCount() {
        return helloCount;
    }

    public String execute() throws Exception {
        messageStore = new MessageStore() ;
        
        helloCount++;
        
        return SUCCESS;
    }

    public MessageStore getMessageStore() {
        return messageStore;
    }

}

每次調(diào)用execute方法時(shí),我們將增加helloCount1.所以將這個(gè)代碼添加到類的execute方法中HelloWorldAction.

每當(dāng)用戶單擊頁面index.jsp上的鏈接之一(或提交表單)時(shí)锈遥,將運(yùn)行execute類的方法纫事,HelloWorldAction并將靜態(tài)字段helloCount增加1勘畔。

要包含helloCount屬性的值,HelloWorld.jsp我們可以使用Struts 2屬性標(biāo)記丽惶。

  • 2炫七、使用屬性標(biāo)簽顯示helloCount值:
<p>I've said hello <s:property value="helloCount" /> times!</p>

所以即使該getHelloCount方法返回一個(gè)整數(shù)類型,Struts 2將其轉(zhuǎn)換為String類型并將其放入p標(biāo)簽的正文中钾唬。

請注意万哪,即使helloCount是靜態(tài)字段,get方法helloCount也不是靜態(tài)的抡秆。對于Struts 2調(diào)用getHelloCount方法來獲取值helloCount奕巍,該getHelloCount方法不能是靜態(tài)的。

如果get方法返回的值是一個(gè)對象儒士,那么屬性標(biāo)簽將導(dǎo)致Struts 2調(diào)用該對象的toString方法的止。當(dāng)然,您應(yīng)該始終toString在模型類中覆蓋Class Object的方法着撩。將以下toString方法添加到MessageStore類中:

public String toString() {
   return message + " (from toString)";
}   
  • 3诅福、使用屬性調(diào)用toString:
<p><s:property value="messageStore" /></p>

由于getMessageStore的HelloWorldAction類返回MessageStore對象,搭片2將調(diào)用toString類的方法MessageStore拖叙。該toString方法返回的字符串將顯示在瀏覽器中氓润。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市薯鳍,隨后出現(xiàn)的幾起案子咖气,更是在濱河造成了極大的恐慌,老刑警劉巖挖滤,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件采章,死亡現(xiàn)場離奇詭異,居然都是意外死亡壶辜,警方通過查閱死者的電腦和手機(jī)悯舟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砸民,“玉大人抵怎,你說我怎么就攤上這事×氩危” “怎么了反惕?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長演侯。 經(jīng)常有香客問我姿染,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任悬赏,我火速辦了婚禮狡汉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闽颇。我一直安慰自己盾戴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布兵多。 她就那樣靜靜地躺著尖啡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪剩膘。 梳的紋絲不亂的頭發(fā)上衅斩,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機(jī)與錄音怠褐,去河邊找鬼畏梆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惫搏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蚕涤,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼筐赔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了揖铜?” 一聲冷哼從身側(cè)響起茴丰,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎天吓,沒想到半個(gè)月后贿肩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡龄寞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年汰规,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片物邑。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溜哮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出色解,到底是詐尸還是另有隱情茂嗓,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布科阎,位于F島的核電站述吸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏锣笨。R本人自食惡果不足惜蝌矛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一道批、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧朴读,春花似錦屹徘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至氮唯,卻和暖如春鉴吹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惩琉。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工豆励, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瞒渠。 一個(gè)月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓良蒸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親伍玖。 傳聞我的和親對象是個(gè)殘疾皇子嫩痰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容