需要注意的地方就是form的action屬性的寫法了; 2、在xwork.xml中增加相應(yīng)的處理action的節(jié)點(diǎn)
這里需要注意的是action節(jié)點(diǎn)中name的值要與index.jsp中定義的action的名字要嚴(yán)格匹配,對于大小寫是敏感的。在action節(jié)點(diǎn)中還包含了節(jié)點(diǎn),以說明處理action之后會(huì)可能出現(xiàn)的不同結(jié)果(name)和相應(yīng)的處理方式(type)。譬如說,如果Login的這個(gè)action處理success了,則使用dispatcher將結(jié)果分(dispatch)到相應(yīng)的頁面。而在WAF框架中并沒有這樣的定義,因?yàn)樵谀J(rèn)情況下如果不成功則會(huì)返回當(dāng)前頁面,不過可以定義FlowHandler,并擁有類似的功能且更加靈活; 3、實(shí)現(xiàn)類Login的代碼:
在代碼中,你會(huì)發(fā)現(xiàn)有兩個(gè)繼承變量ERROR與SUCCESS。這兩個(gè)變量是定義在Action這個(gè)接口的,而ActionSupport則實(shí)現(xiàn)了Action接口。在接口Action的代碼中,我們可以看到ERROR = "error"、SUCCESS = "success"。我們可以發(fā)現(xiàn)這兩個(gè)變量的值與xwork.xml中result子節(jié)點(diǎn)中的name的值是相匹配。除此之外,在代碼中,我也找不到了原來在開發(fā)中經(jīng)常要用到的一個(gè)API:getParameter。事實(shí)上,將表單中數(shù)據(jù)析取出來的工作是由webwork這個(gè)唯一定義的servlet去完成的,而這個(gè)類會(huì)調(diào)用Login類中set的方法將用戶輸入的數(shù)據(jù)賦給Login類的屬性:loginId和loginPassword。在這里,我們也要跟前面index.jsp中的包含的標(biāo)簽聯(lián)系起來。當(dāng)數(shù)據(jù)被dispatch回index.jsp的時(shí)候,在index.jsp頁面render的過程中是調(diào)用了get的方法去獲取相應(yīng)的數(shù)據(jù)的。 最后,我們可以總結(jié)一下,整個(gè)Web應(yīng)用程序的處理流程了: 首先,當(dāng)用戶提交了表單(form)至Login.action后,由web.xml中定義的唯一的一個(gè)servlet:webwork去處理這個(gè)請求。webwork會(huì)以action的name:Login到xwork.xml中尋找相應(yīng)的處理action的類,于是就找到了fantasysoft.webwork包中的Login類,由Login類中的execute方法來處理提交的form的數(shù)據(jù)了; 然后,根據(jù)execute方法的返回值,再到xwork.xml中對應(yīng)的action節(jié)點(diǎn)中去找匹配的result子節(jié)點(diǎn); 最后,根據(jù)result子節(jié)點(diǎn)的定義,將處理結(jié)果分發(fā)(dispatch)或者重定向(redirect)至下一個(gè)頁面[3]。 [1] 準(zhǔn)備工作可以參考 WebWork Getting Started; [2] web.xml文件的具體內(nèi)容,可以參考 WebWork Tutorial Lesson 2 ; [3] 對于result的Type的更多介紹,可以參考 WebWork Tutorial Lesson 3
Copyright @ 只牽這只狗 Powered by: .Text and ASP.NET Theme by: .NET Monster