Struts2中Action之ResultType

咱们在struts-defalut.xml文件中能够看到以下图所示:java

这些类型是配置文件所带的。接下来咱们主要讲解我标注出来的这个,其余的我就不作详解了,有兴趣的能够去试试。web

web.xml文件我在这里就不配置了。直接从action开始apache

1.0当type取值为chain时:jsp

   chain:转发到actionspa

  建立LoginAction继承ActionSupport类定义方法3d

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";
    }
}

建立ShoppingActioncode

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页面,填写上不一样的内容。xml

最主要的接下来配置struts.xmlblog

.......
      <!--转发到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:指向那个页面。

效果图:

获得的是源代码。很神奇是吧,你能够试试其余的类型。

就到这里吧............

相关文章
相关标签/搜索