<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    學習筆記

    Simple is beautiful.

    導航

    <2007年3月>
    25262728123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    公告

    ...

    常用鏈接

    留言簿(1)

    隨筆分類(2)

    隨筆檔案(56)

    Weblog

    搜索

    最新評論

    評論排行榜

    WebWork初體驗

    WebWork初體驗

    WebWork作為一個實現了IOC的輕量級Web Application work一直備受開發者的青睞。
    跟其他的Web應用一樣,我們首先要建立一個標準的WEB-INF目錄(所謂標準就是目錄下面包含lib和classes子目錄以及Web.xml文件),接著在WEB-INF/lib下面放上WebWork所需要的.jar文件并在WEB-INF目錄下建立Web.xml文件[2]。在完成了這些千篇一律的工作之后,我仔細的看了一下Web.xml中內容,它里面只定義了一個servlet:webwork,其對應的class為com.opensymphony.webwork.dispatcher.ServletDispatcher,然后由webwork這個servlet去處理所有.action的請求。看到這里,我暗自竊喜,這跟我熟悉的WAF框架是十分類似的,只不過MainServlet變成了ServletDispatcher,.do的請求變成了.action而已。
    ??????? 接下來,就是到classes目錄下建立xwork.xml文件,這個文件跟WAF中的mappings.xml很相似,因為對
    .action的處理都是在這里被定義的,而WAF中關于.do的處理則定義在mapping.xml中。但是也有一些我并不清楚的東西,如package和Interceptor。在classes目錄下還要建立一個validator.xml文件,但是這個并不是必需的。做好了這些準備工作之后,就真正開始WebWork的體驗之旅了。
    ?????? ?1、建立一個index.jsp(以下為主要部分):
    ?<form?action="Login.action"?method="post">
    ??
    <table?cellspacing=0?width="100%">
    ????
    <tr>
    ??????
    <td>Login?ID:
    ????????
    <input?type="text"?name="loginId"?width=100?/>&nbsp;&nbsp;

    ??????????Password:
    ????????
    <input?type="password"?name="loginPassword"?width=100?/>&nbsp;&nbsp;
    ????????
    <input?type="submit"?="Login"?/>
    ??????
    </td>
    ??????
    <td?align=right>
    ?????????
    Hello,?<ww:property?="loginId"?/>

    ??????
    </td>
    ????
    </tr>
    ??
    </table>
    </form>
    < SPAN>

    ????????需要注意的地方就是form的action屬性的寫法了;
    ??????? 2、在xwork.xml中增加相應的處理action的節點

    ?<action?name="Login"?class="fantasysoft.webwork.Login">
    ???
    <result?name="error"?type="dispatcher">index.jsp</result>
    ???
    <result?name="success"?type="dispatcher">index.jsp</result>
    </action>

    ????????這里需要注意的是action節點中name的值要與index.jsp中定義的action的名字要嚴格匹配,對于大小

    /SPAN>< SPAN>

    寫是敏感的。在action節點中還包含了節點,以說明處理action之后會可能出現的不同結果(name)和相應的處理方式(type)。譬如說,如果Login的這個action處理success了,則使用dispatcher將結果分(dispatch)到相應的頁面。而在WAF框架中并沒有這樣的定義,因為在默認情況下如果不成功則會返回當前頁面,不過可以定義FlowHandler,并擁有類似的功能且更加靈活;
    ??????? 3、實現類Login的代碼:

    package?fantasysoft.webwork;

    import?com.opensymphony.xwork.ActionSupport;

    public?class?Login?extends?ActionSupport
    {
    ????
    private
    ?String?loginId;
    ????
    private
    ?String?loginPassword;

    ????
    public?String?getLoginPassword()?
    {
    ????????
    return
    ?loginPassword;
    ????}

    ????
    public?void?setLoginPassword(String?loginPassword)?{
    ????????
    this.loginPassword?=
    ?loginPassword;
    ????}

    ????
    public?String?getLoginId()?{
    ????????
    return
    ?loginId;
    ????}

    ????
    public?void?setLoginId(String?loginId)?{
    ????????
    this.loginId?=
    ?loginId;
    ????}

    ????
    public?String?execute()?throws?Exception{?????????????
    ????????
    if?(!checkUserId())?return
    ?ERROR;? // checkUserId is the method that will be implemented
    ????????????
    else?return
    ?SUCCESS;
    ????}

    }

    ????????在代碼中,你會發現有兩個繼承變量ERROR與SUCCESS。這兩個變量是定義在Action這個接口的,而ActionSupport則實現了Action接口。在接口Action的代碼中,我們可以看到ERROR = "error"、SUCCESS = "success"。我們可以發現這兩個變量的值與xwork.xml中result子節點中的name的值是相匹配。除此之外,在代碼中,我也找不到了原來在開發中經常要用到的一個API:getParameter。事實上,將表單中數據析取出來的工作是由webwork這個唯一定義的servlet去完成的,而這個類會調用Login類中set的方法將用戶輸入的數據賦給Login類的屬性:loginId和loginPassword。在這里,我們也要跟前面index.jsp中的包含的標簽聯系起來。當數據被dispatch回index.jsp的時候,在index.jsp頁面render的過程中是調用了get的方法去獲取相應的數據的。
    ??????? 最后,我們可以總結一下,整個Web應用程序的處理流程了:
    ??????? 首先,當用戶提交了表單(form)至Login.action后,由web.xml中定義的唯一的一個servlet:webwork去處理這個請求。webwork會以action的name:Login到xwork.xml中尋找相應的處理action的類,于是就找到了fantasysoft.webwork包中的Login類,由Login類中的execute方法來處理提交的form的數據了;
    ????????然后,根據execute方法的返回值,再到xwork.xml中對應的action節點中去找匹配的result子節點;
    ??????? 最后,根據result子節點的定義,將處理結果分發(dispatch)或者重定向(redirect)至下一個頁面[3]

    ????????

    /SPAN>

    posted on 2007-03-15 00:26 Ecko 閱讀(172) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 国产gav成人免费播放视频| 亚洲黄色免费网站| 亚洲欧洲久久久精品| 亚洲精品久久无码av片俺去也 | 国产三级免费电影| 亚洲Av无码国产一区二区| 精品国产免费观看| 亚洲AV永久无码精品放毛片| 毛色毛片免费观看| 亚洲高清乱码午夜电影网| 国产精品高清全国免费观看| 亚洲精品自偷自拍无码| 伊在人亚洲香蕉精品区麻豆| 一区二区三区免费精品视频| 国产成人亚洲精品91专区手机| 国产精品内射视频免费| 亚洲乱码国产一区三区| 午夜免费福利小电影| 午夜在线a亚洲v天堂网2019| 国产成人精品免费视频大全五级| 黄网站色成年片大免费高清| 亚洲爽爽一区二区三区| 久久国产免费一区| 亚洲午夜电影在线观看高清| 日韩特黄特色大片免费视频| 污污的视频在线免费观看| 亚洲色欲久久久综合网| 免费在线观看视频网站| 亚洲无码一区二区三区| 亚洲天堂中文字幕在线| 污视频在线免费观看| 亚洲国产精品ⅴa在线观看| 精品亚洲一区二区三区在线观看| 久爱免费观看在线网站| 亚洲精品无码久久久久秋霞| 国产亚洲成人久久| 一二三四在线播放免费观看中文版视频 | 亚洲欧洲校园自拍都市| 情侣视频精品免费的国产| 中文毛片无遮挡高清免费| 亚洲中字慕日产2021|