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

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

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

       :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理

    Spring技術(shù)手冊筆記(五):Spring MVC 中

    Posted on 2009-11-16 15:49 codingliyi 閱讀(1086) 評論(0)  編輯  收藏 所屬分類: Java EE

    Controller實現(xiàn)類

    AbstractController:使用Template Method模式,包括了對緩存標(biāo)頭的處理、檢驗對請求方法(POSTGET)的支持,Session的取得與同步化等。

    使用方式:繼承AbstractController類,覆蓋handleRequestInternal()方法。

    MultiActionControllerParameterMethodNameResolver

    在一個Controller類中定義多個方法,并根據(jù)使用者的請求來執(zhí)行當(dāng)中的某個方法,相當(dāng)于StrutsDispatcherAction

    使用MultiActionController需要配個一個MethodNameResolver實例,默認使用ParameterMethodNameResolver,他會根據(jù)所給的網(wǎng)址中,最后請求的文件名稱來判斷執(zhí)行Controller中的哪一個方法,示例:

    multiMethodController.java
     1public class MultiMethodController extends MultiActionController {
     2    private String viewPage;
     3    
     4    public ModelAndView add(HttpServletRequest request, HttpServletResponse response){
     5        return new ModelAndView(viewPage, "method""add");
     6    }

     7    
     8    public ModelAndView delete(HttpServletRequest request, HttpServletResponse response){
     9        return new ModelAndView(viewPage, "method""delete");
    10    }

    11    
    12    public ModelAndView update(HttpServletRequest request, HttpServletResponse response){
    13        return new ModelAndView(viewPage, "method""update");
    14    }

    15    
    16    public void setViewPage(String viewPage){
    17        this.viewPage = viewPage;
    18    }

    19}
    applicationContext.xml
     1 <bean id="urlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     2     <property name="mappings">
     3         <props>
     4             <prop key="/sayHello.do">sayHelloController</prop>
     5             <prop key="/method.do">multiMethodController</prop>
     6             <prop key="/login.do">loginController</prop>
     7             <prop key="/wizard.do">wizardController</prop>
     8         </props>
     9     </property>
    10 </bean>
    11 
    12 <bean id="parameterMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
    13     <property name="paramName" value="action" />
    14     <property name="defaultMethodName" value="add" />
    15 </bean>
    16     
    17<bean id="multiMethodController" class="SpringMVC.MultiMethodController">
    18    <property name="methodNameResolver" ref="parameterMethodResolver" />
    19    <property name="viewPage" value="multiMethodTest" />
    20</bean>

    PatameterizableViewController

    可以直接在Bean文件中定義,設(shè)定它的viewName屬性,當(dāng)這個Controller執(zhí)行時,會根據(jù)viewName的設(shè)定直接導(dǎo)向指定的網(wǎng)頁,使用它的好處是可以用來避免直接對JSP頁面請求。

    AbstractCommandController

    繼承該類,并提供一個Command對象(如常見的User類),當(dāng)請求來時,AbstractCommandController會試著對比請求參數(shù)名稱與Command上的Setter方法名稱,設(shè)定請求參數(shù)值。

    SimpleFormController

    SimpleFormController繼承自AbstractFormController,對于簡單的表單可以直接繼承這個類,并重新定義onSubmit()doSubmitAction()方法處理請求。以下是一個簡單的登錄頁面示例:

    LoginController.java
     1public class LoginController extends SimpleFormController {
     2
     3    public LoginController(){
     4        this.setCommandClass(LoginForm.class);
     5    }

     6
     7    protected ModelAndView onSubmit(Object command) throws Exception {
     8        LoginForm form = (LoginForm)command;
     9        if("codingliyi".endsWith(form.getUsername()) &&
    10                "123456".endsWith(form.getPassword())){
    11            return new ModelAndView(getSuccessView(), "username", form.getUsername());
    12        }
    else return new ModelAndView(getFormView());
    13    }

    14}

    15

    applicationContext.xml

    1<bean id="loginController" class="SpringMVC.LoginController">
    2    <property name="successView" value="loginSuccess" />
    3    <property name="formView" value="login" />
    4</bean>

    login.jsp

    1<form name="loginForm" action="login.do" method="POST">
    2    用戶名:<input type="text" name="username"/><br/>
    3    密碼:<input type="text" name="password"/><br/>
    4    <input type="submit" value="登錄" />
    5</form>

     

    AbstractWizardFormController

    AbstractWizardFormController用于設(shè)計多頁表單。

    可以繼承該類,并重寫processFinish()方法。一個多頁表單的示例如下:

    WizardController.java

     1public class WizardController extends AbstractWizardFormController {
     2
     3    private String viewPage;
     4    
     5    public WizardController(){
     6        this.setCommandClass(LoginForm.class);
     7    }

     8    @Override
     9    protected ModelAndView processFinish(HttpServletRequest arg0,
    10            HttpServletResponse arg1, Object command, BindException arg3)
    11            throws Exception {
    12        LoginForm form = (LoginForm)command;
    13        Map model = new HashMap();
    14        model.put("username", form.getUsername());
    15        model.put("password", form.getPassword());
    16        return new ModelAndView(viewPage, model);
    17    }

    18
    19    public void setViewPage(String viewPage){
    20        this.viewPage = viewPage;
    21    }

    22}

    applicationContext.xml

     1<bean name="wizardController" class="SpringMVC.WizardController">
     2    <property name="viewPage" value="wizardResult"/>
     3    <property name="pages">
     4        <list>
     5            <value>question1</value>
     6            <value>question2</value>
     7        </list>
     8    </property>
     9    <property name=""></property>
    10</bean>

    question2.jsp

    1<form action="wizard.do" method="POST">
    2    你的密碼:<input type="text" name="password" /><br/>
    3    <input type="submit" value="previous" name="_target0" />
    4    <input type="submit" value="finish" name="_finish" />
    5</form>

    也可以在問卷中涉及一個cancel按鈕,在按下該按鈕后,送出"_cancel"請求參數(shù),當(dāng)請求中帶有"_cancel"參數(shù)時,會執(zhí)行processCancel()方法。

    ThrowawayController

    ThrowawayController并不在Controller的繼承架構(gòu)中,而是一個獨立的接口定義。實現(xiàn)該接口的類不是以單例的方式產(chǎn)生并重復(fù)使用。ThrowawayController在每一次請求中都會產(chǎn)生新的對象,而且用了就丟,不會重復(fù)使用。

    在設(shè)定Bean定義文件中,ThrowawayController必須將"singleton"屬性設(shè)為false



    主站蜘蛛池模板: 抽搐一进一出gif免费视频| 最近的中文字幕大全免费8| 国产亚洲成av片在线观看| 国产午夜无码精品免费看| 亚洲成a人不卡在线观看| 中文字幕无码免费久久99| 九九精品国产亚洲AV日韩| 亚洲伊人久久精品影院| 四虎在线免费视频| 黄色毛片免费观看| 18亚洲男同志videos网站| 在线观看免费亚洲| 免费久久人人爽人人爽av| 亚洲男人天堂2018av| 亚洲精品国产自在久久| 国产又大又粗又长免费视频| 亚洲高清毛片一区二区| 亚洲av最新在线网址| 国产片免费在线观看| 久久永久免费人妻精品下载| 视频一区二区三区免费观看| 亚洲国产成人在线视频| 亚洲精品国产精品乱码视色| 夜夜爽免费888视频| 99国产精品视频免费观看| 五月婷婷免费视频| 日韩亚洲国产综合高清| 亚洲级αV无码毛片久久精品| 蜜臀91精品国产免费观看 | 一级毛片在线完整免费观看| 亚洲videos| 亚洲AV无码成人精品区在线观看 | 亚洲日本中文字幕天堂网| 无码国产精品一区二区免费式影视 | 国产真人无码作爱视频免费 | 最近高清国语中文在线观看免费| 羞羞视频免费网站在线看| 久久精品国产亚洲AV天海翼 | 你是我的城池营垒免费看| 黄色网址大全免费| 色天使色婷婷在线影院亚洲|