Struts2 result中的type常用的四种类型

版权声明:本文为博主原创文章,版权归原作者小思所有,转载或者引用本文内容请注明来源及原作者,https://blog.csdn.net/zeal9s/ https://blog.csdn.net/zeal9s/article/details/81437719

dispatcher:result type默认的类型,相当于servlet的foward方式跳转页面。客户端看到的是struts2中配置的地址,而不是真正页面的地址,一般用于跳转到jsp页面,页面能拿到值
redirect:页面重定向,客户端跳转,数据全部丢失,地址栏发生变化,页面不能拿到值
chain:将请求转发给一个Action,Action能通过getAttribute(“uname”)拿到值
redirect-action:一般用于跳转到Action,Action不能通过getAttribute(“uname”)拿到值

前两种的xml action的配置如下(传值给jsp)

<result type="redirect-action">/success.jsp</result>

后两种的xml action的配置如下(传值给Action)

<result type="redirect-action">/TestAction</result>

success.jsp代码如下

<%@ page language="java" contentType="text/html; charset=UTF-8"
   isELIgnored="false" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags"  prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:debug></s:debug>
<!--值在ValueStack的值中,所以直接拿,注意实体类的属性和下面的value还有表单的input的name保持一致,-->
<h3>从debug的值栈中拿值:</h3><br>
用户名:<s:property value="uname"/>=======密码:<s:property value="upwd"/>
<!--通过四种跳转方式拿值  -->
<h3>通过四种跳转方式拿值:</h3><br>
<!-- 使用EL表达式记得在页面的开始写上isELIgnored="false" -->
用户名:${request.uname}=======密码:${request.upwd}
</body>
</html>

客户端login.jsp代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="LoginAction" method="post">
  用户名:<input type="text" name="uname"><br>
    密码:<input type="password" name="upwd"><br>
    <input type="submit" value="登录">
</form>
</body>
</html>

LoginAction:接受客户端(login.jsp)的数据代码如下:

package com.zs.action;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

    private String uname;
    private String upwd;
    private HttpServletRequest request;
    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUpwd() {
        return upwd;
    }

    public void setUpwd(String upwd) {
        this.upwd = upwd;
    }

    public String test() {
        //测试响应到页面的几种请求方式
        request=ServletActionContext.getRequest();
        request.setAttribute("uname", uname);
        request.setAttribute("upwd", upwd);
        System.out.println("uname:"+uname+"upwd:"+upwd);
        return SUCCESS;
    }
}

TestAction测试后两种方式的Action代码如下:

package com.zs.action;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport{
    private HttpServletRequest request;
    public String test() {
        request=ServletActionContext.getRequest();
        //测试redirect-action这种方式是否拿到数据
        System.out.println("uname:"+request.getAttribute("uname")+"=====upwd:"+request.getAttribute("upwd"));
        return NONE;
    }

}

说在最后的话:编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~

猜你喜欢

转载自blog.csdn.net/zeal9s/article/details/81437719