首页 > 代码库 > Struts2页面重定向

Struts2页面重定向

一.重定向页面

1.概述

重定向大家都知道,这里的get方式是指地址栏可见传的参数。start.html页面只有一个按钮,点击就可以重定向到end.html页面(因为重定向嘛,前者页面没必要传什么参数),点击start.html中的按钮,提交请求到RedirectAction,RedirectAction执行execute方法,返回name为“success”的result,这个时候我们只要直接在重定向的页面后面用追加参数就可以了,然后在end.html页面用js解析地址栏url(因为get方式传参在地址栏可见),获取参数显示就可以了。

2.代码

①:start.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <!-- 没有什么要提交的数据,重定向不是跳转 -->
    <form action="forget" method="get">
        <input type="submit" value="get方式重定向到end页面" style="display:block;width:300px;height:50px;border:none;background:blue;color:white;">
    </form>
</body>
</html>

②RedirectAction

package com.st.action;

import com.opensymphony.xwork2.ActionSupport;

public class RedirectAction extends ActionSupport {
    private String username="get";//重定向后我们想给新页面的参数username
    private String password="getok";//重定向后我们想给新页面的参数password
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    
    //下面这个方法是处理start提交的请求的,其实没有处理任何事,因为它的业务只是要重定向end页面
    public String execute(){
        return SUCCESS;
    }
}

③struts.xml中关于RedirectAciton配置(bean的实例化是交给spring管理的)

<!-- 对应的就是RedirectAction,bean的实例化是交由spring管理的 -->
    <package name="mytest" extends="struts-default">
         <action name="forget" class="redirectaction" method="execute">
             <!-- 下面这句:result采用重定向的方式,重定向到end.html,要传的参数以追加字符串的方式传递 -->
             <!-- 注意:get方式拼接字符串时:“&”符号要转义成“&amp;”,对应Action要传给新页面的参数(username,password)在Action里要定义要有getter,setter方法 -->
             <result name="success" type="redirect">end.html?username=${username}&amp;password=${password}</result>
         </action>  
    </package>

或者写成:

 <!-- 对应的就是RedirectAction,bean的实例化是交由spring管理的 -->
    <package name="mytest" extends="struts-default">
         <action name="forget" class="redirectaction" method="execute">
             <!-- 下面这句:result采用重定向的方式,重定向到end.html,要传的参数以追加字符串的方式传递 -->
             <!-- 注意:get方式拼接字符串时:“&”符号要转义成“&amp;”,对应Action要传给新页面的参数(username,password)在Action里要定义要有getter,setter方法 -->
             <result name="success" type="redirect" >
                 <param name="location">end.html</param>
                 <param name="username">${username}</param>
                 <param name="password">${password}</param>
             </result>
         </action>  
    </package>

 

④end.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="js/jquery-3.1.1.js"></script>
</head>
<body>
    <table    style="width:400px;height:200px;border:1px solid red;">
        <tr><td>接收的参数username:</td><td><div id="username" style="color:red;"></div></td></tr>
        <tr><td>接收的参数password:</td><td><div id="password" style="color:red;"></div></td></tr>
        <tr><td><input type="submit" value="点我接收get方式跳转过来的参数" onclick="me()"></td></tr>
    </table>
<script>
    //用正则表达式的方式从地址栏获取参数值
    function getQueryString(name){
        var reg=new RegExp("(^|&)"+name+"=([^&]*)(&|$)");
        var r=window.location.search.substring(1).match(reg);
        if(r!=null){
            return unescape(r[2]);
        }else{
            return null;
        }
    }
    //简单的调用上面的函数,并且显示下参数值
    function me(){
        $(#username).html(getQueryString(username));
        $(#password).html(getQueryString(password));
    }
</script>
</body>
</html>

3.相关截图

技术分享

技术分享技术分享

二.一点话

1.这里的传参在地址栏是可以看见参数的,有些很特殊的时候不想要参数可见,那就要另想办法了,反正struts2本身的传参不是隐藏的,像get方式提交表单一样。随便想了下,感觉可以在重定向页面用个ajax去一个Action获取想要的数据,就是不要在result的时候传参了,我们在重定向后的页面里用ajax去后台请求想要的参数,只要那个action是单例的。没写过,一点突发想法。

2.写博客只为记录学习,分享一些东西和我一样刚刚启程的人。前辈们路过有什么不对的地方请指正,谢谢大家。

qq:2656062151  email:2656062151@qq.com

Struts2页面重定向