一.重定向页面
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方式拼接字符串时:“&”符号要转义成“&”,对应Action要传给新页面的参数(username,password)在Action里要定义要有getter,setter方法 --> <result name="success" type="redirect">end.html?username=${username}&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方式拼接字符串时:“&”符号要转义成“&”,对应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