Struts2中Action之ResultType


我們在struts-defalut.xml文件中可以看到如下圖所示:

這些類型是配置文件所帶的。接下來我們主要講解我標注出來的這個,其他的我就不做詳解了,有興趣的可以去試試。

web.xml文件我在這里就不配置了。直接從action開始

1.0當type取值為chain時:

   chain:轉發到action

  創建LoginAction繼承ActionSupport類定義方法

 

package cn.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

import java.util.Map;

/**
 * Created by accp on 2017/3/1.
 */
public class LoginAction extends ActionSupport {
    public String list(){
        System.out.println("====進入==LoginAction====list============");
        return "list";
    }

    public String add(){
        System.out.println("====進入====LoginAction==add============");
        return "add";
    }
}

創建ShoppingAction

 

package cn.struts2.action;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;

import javax.servlet.http.HttpServletRequest;

/**
 * Created by accp on 2017/3/2.
 */
public class ShoppingAction extends ActionSupport {

    public String list(){
        System.out.println("========進入ShoppingAction=====list============");
        HttpServletRequest request = ServletActionContext.getRequest();
        String uname = (String) request.getAttribute("uname");
        System.out.println(uname);
        return "list";
    }

    public String add(){
        System.out.println("======進入ShoppingAction=======add============");
        return "add";
    }
}

 

創建兩個jsp頁面,填寫上不同的內容。

最主要的接下來配置struts.xml

.......
      <!--轉發到action-->
        <action name="loginAdd" class="cn.struts2.action.LoginAction" method="add">
           <result name="add" type="chain">
               <param name="actionName">shoppingList</param>
               <param name="namespace">/</param>

           </result>
        </action>
        <action name="shoppingList" class="cn.struts2.action.ShoppingAction" method="list">
            <result name="list">/success.jsp</result>
            <result name="success"></result>
        </action>

<param name="actionName">loginList</param>指向的是你要轉向的action的邏輯名稱,要特別注意!!!!!!!

actionName:系統定義。在struts-defalut.xml------>result-type----->ActionResultType

運行效果:

因為在一次轉發內攜帶數據是有效的,我們就可以得到上圖的結果。

1.1type取值為dispatcher

     dispatcher:轉發到頁面(以LoginAction類為例)

<!--轉發到頁面-->
        <action name="loginAction2" class="cn.struts2.action.LoginAction" method="add">
            <result name="add" type="dispatcher">
                /success.jsp
            </result>
        </action>

直接指向頁面即可,不需要再返回action通過別的方法。

1.2type取值為redirectAction

    redirectAction:重定向action

   struts.xml配置:

<!--重定向action-->
        <action name="loginAction3" class="cn.struts2.action.LoginAction" method="add">
            <result name="add" type="redirectAction">
               <param name="actionName">shoppingList</param>
                <param name="namespace">/</param>
            </result>
        </action>
        <action name="shoppingList" class="cn.struts2.action.ShoppingAction" method="list">
            <result name="list">/index.jsp</result>
        </action>

上述方法不變運行,效果圖如下:

從兩張圖中我們可以很清晰的看出,地址欄發生了很大的變化,再看結果,由於我們把數據方法的是request作用域中,在一次轉發內

可以拿到數據,但是重定向相當於重新請求,攜帶的數據消失,得到null。

1.3type取值為redirect

   redirect:重定向到頁面

 <!--重定向到頁面-->
        <action name="loginAction4" class="cn.struts2.action.ShoppingAction" method="list">
            <result name="list" type="redirect">
                /success.jsp
            </result>
        </action>

重定向地址欄都會發生變化,在使用的時候要根據自己的需求選擇合適的類型。

1.4type取值為plainText

       plainText:純文本

   struts.xml:

 <!--plainText-->
        <action name="loginAction5" class="cn.struts2.action.LoginAction" method="add">
            <result name="add" type="plainText">
                <param name="charSet">UTF-8</param>
                <param name="location">/index.jsp</param>
            </result>
        </action>

<param name="charSet">UTF-8</param>:

location:指向那個頁面。

效果圖:

得到的是源代碼。很神奇是吧,你可以試試其他的類型。

就到這里吧............

 

 

 

 

 

 

 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM