欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
WebWork初體驗

        在這篇ASP.NET 中Session 實(shí)現原理淺析[2] 狀態(tài)管理器Blog中,Flier老大向大家推薦了Java中幾種Cache的實(shí)現,于是我就按圖索驥,首先是找到OSCache的老家:OpenSymphony。哇,這里的資源真多啊,簡(jiǎn)直就是一個(gè)寶藏。為什么原來(lái)就沒(méi)有發(fā)現呢?感謝Flier老大了!
        在OpenSymphony的主頁(yè)上,我看到了兩個(gè)讓我覺(jué)得很親切的項目:WebWork和Quarts。WebWork作為一個(gè)
實(shí)現了IOC的輕量級Web Application Framework一直備受開(kāi)發(fā)者的青睞;而Quarts更是在異步信息處理上大展拳腳了??吹搅死吓笥?,我就只好暫時(shí)將新歡OSCache擺一邊,找出我很久沒(méi)有聯(lián)系的老貓(Tomcat)去跟WebWork聊嗑了。
        做好了一切的準備工作之后[1],我嘗試著(zhù)做一個(gè)登陸注冊的功能,以體驗一下WebWork。跟其他的Web應
用一樣,我們首先要建立一個(gè)標準的WEB-INF目錄(所謂標準就是目錄下面包含lib和classes子目錄以及Web.xml文件),接著(zhù)在WEB-INF/lib下面放上WebWork所需要的.jar文件并在WEB-INF目錄下建立Web.xml文件[2]。在完成了這些千篇一律的工作之后,我仔細的看了一下Web.xml中內容,它里面只定義了一個(gè)servlet:webwork,其對應的class為com.opensymphony.webwork.dispatcher.ServletDispatcher,然后由webwork這個(gè)servlet去處理所有.action的請求??吹竭@里,我暗自竊喜,這跟我熟悉的WAF框架是十分類(lèi)似的,只不過(guò)MainServlet變成了ServletDispatcher,.do的請求變成了.action而已。
        接下來(lái),就是到classes目錄下建立xwork.xml文件,這個(gè)文件跟WAF中的mappings.xml很相似,因為對
.action的處理都是在這里被定義的,而WAF中關(guān)于.do的處理則定義在mapping.xml中。但是也有一些我并不清楚的東西,如package和Interceptor。在classes目錄下還要建立一個(gè)validator.xml文件,但是這個(gè)并不是必需的。做好了這些準備工作之后,就真正開(kāi)始WebWork的體驗之旅了。
        1、建立一個(gè)index.jsp(以下為主要部分):

 <form action="Login.action" method="post">
  
<table cellspacing=0 width="100%">
    
<tr>
      
<td>Login ID:
        
<input type="text" name="loginId" width=100 />  

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

      
</td>
    
</tr>
  
</table>
</form>
<>< span="">

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

 <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節點(diǎn)中name的值要與index.jsp中定義的action的名字要嚴格匹配,對于大小寫(xiě)是敏感的。在action節點(diǎn)中還包含了節點(diǎn),以說(shuō)明處理action之后會(huì )可能出現的不同結果(name)和相應的處理方式(type)。譬如說(shuō),如果Login的這個(gè)action處理success了,則使用dispatcher將結果分(dispatch)到相應的頁(yè)面。而在WAF框架中并沒(méi)有這樣的定義,因為在默認情況下如果不成功則會(huì )返回當前頁(yè)面,不過(guò)可以定義FlowHandler,并擁有類(lèi)似的功能且更加靈活;
        3、實(shí)現類(lèi)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;
    }

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

        
        [1] 準備工作可以參考 WebWork Getting Started;
        [2] web.xml文件的具體內容,可以參考 WebWork Tutorial Lesson 2  ;
        [3] 對于result的Type的更多介紹,可以參考 WebWork Tutorial Lesson 3    
 
 
--
 
<>
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
WebWork教程-0.90版
xwork.xml中 組成Action配置的各個(gè)元素
Struts2教程
Webwork2之Action Result Type
webwork2 + spring 結合的幾種方法的小結
Webwork 與spring集成研究(未完)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久