3.2.    為Action配置method屬性:

將Action類中的每一個處理方法都定義成一個邏輯Action方法。

<!DOCTYPE struts PUBLIC

        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="my" extends="struts-default" namespace="/manage">

        <action name="userLogin" class="org.qiujy.web.struts2.action.LoginAction" method="login">

            <result name="success">/success.jsp</result>

            <result name="error">/error.jsp</result>

        </action>

        

        <action name="userRegist" class="org.qiujy.web.struts2.action.LoginAction" method="regist">

            <result name="success">/success.jsp</result>

            <result name="error">/error.jsp</result>

        </action>

    </package>

</struts>

如上,把LoginAction中的login和regist方法都配置成邏輯Action。要調用login方法,則相應的把index.jsp中表單元素的action設置為"manage/userLogin.action";要調用regist方法,把regist.jsp中表單元素的action設置為"manage/userRegist.action"。

3.3.    使用通配符映射(wildcard mappings)方式:

在struts.xml文件中配置<action…>元素時,它的name、class、method屬性都可支持通配符,這種通配符的方式是另一種形式的動態方法調用。

當我們使用通配符定義Action的name屬性時,相當于用一個元素action定義了多個邏輯Action:

<action name="user_*"

class="org.qiujy.web.struts2.action.UserAction" method="{1}">

            <result name="success">/success.jsp</result>

            <result name="error">/error.jsp</result>

        </action>

如上,<action name=”user_*”>定義一系列請求URL是user_*.action模式的邏輯Action。同時method屬性值為一個表達式{1},表示它的值是name屬性值中第一個*的值。例如:用戶請求URL為user_login.action時,將調用到UserAction類的login方法;用戶請求URL為user_regist.action時,將調用到UserAction類的regist方法。

4.    處理結果

Struts2的Action處理完用戶請求后,將返回一個普通字符串,整個普通字符串就是一個邏輯視圖名。Struts2通過配置邏輯視圖名和物理視圖資源之間的映射關系,一旦系統收到Action返回的某個邏輯視圖名,系統就會把對應的物理視圖資源呈現給瀏覽者。

4.1.    配置處理結果:

Struts2的Action處理用戶請求結束后,返回一個普通字符串-邏輯視圖名,必須在struts.xml文件中完成邏輯視圖和物理視圖資源的映射,才可讓系統轉到實際的視圖資源。

Struts2通過在struts.xml文件中使用<result …/>元素來配置結果。Struts2提供了兩種結果。

l 局部結果:將<result …/>作為<action …>元素的子元素配置。

l 全局結果:將<result …/>作為<global-results …>元素的子元素配置。

在package元素中配置<global-results>子元素:

<global-results>

<result name="error">/Error.jsp</result>

<result name="invalid.token">/Error.jsp</result>

<result name="login" type="redirect-action">Logon!input</result>

</global-results>