Struts2页面重定向

Posted 独白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.写博客只为记录学习,分享一些东西和我一样刚刚启程的人。前辈们路过有什么不对的地方请指正,谢谢大家。

 

以上是关于Struts2页面重定向的主要内容,如果未能解决你的问题,请参考以下文章

链接中的 URL 片段和 JSF 中的 ajax 重定向

Struts2--result页面跳转forward--get方式和post方式的获取参数

Struts2学习笔记二:Struts2重定向和转发配置Struts2获取表单参数域对象

302 登录重定向后被 IE 删除的 URL 片段

在 PHP 重定向期间处理片段标识符

使用 Spring Security 登录后重定向到不同的页面