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:[email protected]

时间: 2024-10-13 11:40:52

Struts2页面重定向的相关文章

struts2 action重定向action

一共有三种方式redirect,redirect-action,chain 区别如下 1 redirect:action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失. 2 redirect-action:action处理完后重定向到一个action,请求参数全部丢失,action处理结果也全部丢失. 3 chain:action处理完后转发到一个action,请求参数全部丢失,action处理结果不会丢失. 今天碰到的bug显示提示另一个act

MVC页面重定向&#39;页面跳转

MVC页面重定向,主要有以下几种形式: 1.Response.Redirect();方法 [csharp] view plain copy using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcDemo.Controllers { [HandleError] public class HomeController

JSP页面重定向

以下内容引用自http://wiki.jikexueyuan.com/project/jsp/page-redirect.html: 页面重定向通常用于当一个文件移动到一个新的位置,需要向客户端发送到这个新的位置,或可能是因为负载平衡,或简单随机化. 请求重定向到另一个页面的最简单的方法是使用Response对象的sendRedirect()方法.以下是该方法的符号描述: public void response.sendRedirect(String location) throws IOEx

【filter 页面重定向循环】写一个过滤器造成的页面重定向循环的问题

今天做一个过滤器,碰上页面重定向循环的情况: 浏览器的访问路径是:http://192.168.16.104:8080/biologyInfo/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login/login1.htmls 过滤器的类如下: 1 package com.agen.util;

(转)页面重定向和传值 - WebForm

——原文地址:https://msdn.microsoft.com/zh-cn/library/6c3yckfw(v=vs.100).aspx      在开发 ASP.NET 网站时,您经常需要从一个网页重定向(导航)到另一个网页,同时希望能够将信息从源页传递到目标页.例如,如果您正在开发一个保险网站,用一个页面来收集基本信息(用户信息.保险产品信息等),用另一个页面用来完成支付过程,而支付页面又需要前一页面的部分信息,这时就需要进行页面重定向和传值. 实现网页之间信息传递的方式有很多种,例如

MVC页面重定向的几个方法

MVC页面重定向,主要有以下几种形式: 1.Response.Redirect();方法 [csharp] view plain copy using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcDemo.Controllers { [HandleError] public class HomeController

详细介绍ASP.NET页面重定向方法

ASP.NET中页面重定向的使用的很频繁,实现方法也有不同,自己也试过几种,现在总结一下. 一.Transfer Execute Redirect重定向方法介绍 1.Server.Transfer方法:  Server.Transfer("m2.aspx"); //页面转向(服务器上执行).服务器停止解析本页,保存此页转向前的数据后,再使页面转向到m2.aspx, 并将转向前数据加上m2.aspx页结果返回给浏览器. 2.Server.Execute方法:  Server.Execut

页面重定向的几种方法

最近在开发项目时候,由于同事运用CMS模板建站,但是不想用户访问模板文件 就这个问题,我想到了几种方法,下面将这几种方法分享给大家 希望大家再接再厉 努力奋斗 为程序献上自己的一份力 废话不多说了 干活直接上 JS实现页面重定向 第一种: <script language="javascript"type="text/javascript"> window.location.href="http://shanghepinpai.com"

PartialView中的页面重定向

在MVC的每个action中,都可以指定一种返回页面的类型,可以是ActionResult,这表示返回的页面为view或者是一个PartialView,前台是一个全整页面,后台是页面的一部分. 在以ASPX为页面引擎时,PartialView被称为分部视图,扩展名为ASCX,与webform中的用户控件是一样的,即页面中的一个部分:而使用razor为页面引擎时,PartialView扩展名还是cshtml,这一点感觉与普通页面有些混乱.不过,这不是今天我要讲的重点,今天的重点间在partialv