1. 程式人生 > >Spring整合Struts2和Hibernate+Maven(三)之請求的處理

Spring整合Struts2和Hibernate+Maven(三)之請求的處理

關於請求的處理,即涉及前面提到Struts2。
具體流程:頁面發出請求->攔截action->處理action->具體到那個類的哪個方法處理。

頁面發出請求:

        fm.action="/Login_register";
        fm.submit();
        fm.action="/Login_login";
        fm.submit();

這裡的action引數為‘Login_register’,Login為字首,register和login為方法名(之後會介紹為何register為方法名)。

攔截action:

<filter>
 <filter-name>struts2</filter-name>
 <filter-class>      org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter        
 </filter-class>
</filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern
>
/*</url-pattern> </filter-mapping>

處理action:
參看配置檔案

<action name="/Login_*" class="cm.action.user.LoginAction" method="{1}">
<result name="loginsuccess">/index.jsp</result>
<result name="registersuccess">/lv/login/registersuccess.jsp
</result>
<result name
="error">
/lv/login/register.jsp</result> </action>

action中的屬性 name:這裡用的是萬用字元,所有字首為/Login_的action都會在class:LoginAction中處理,且method為字尾。即前面說的register和login。

具體類處理請求

package cm.action.user;

import com.opensymphony.xwork2.ActionSupport;

/**
 * Created by online on 17-4-14.
 */
public class LoginAction extends ActionSupport {
    private String username;
    private String password;

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String login(){
        String result="";
        System.out.println(username+":"+password);
        result="loginsuccess";
        return result;
    }
    public String register(){
        String result="";
        System.out.println(username+":"+password);
        result="registersuccess";
        return result;
    }
}

在cm.action包下建立字尾為Action 的類,並繼承ActionSupport,請求中的引數名稱對應該類中的私有屬性,並且需要為這些屬性填寫set方法(get方法可以不使用),login和register方法返回值型別為String,根據返回值確定結果請求哪個頁面。