Servlet中response.sendRedirect()跳转时不能设置target的解决办法
一般使用Struts2的拦截器(或者是filter)验证是否登录的时候,如果用户没有登录则会跳转到登录的页面。这时候一般可以在拦截器或者filter中用response.sendRedirect()。
但当在页面上使用了iframe后,发现跳转的只是页面中iframe内的区域,而父页面却没有跳转。拦截器或者过滤器中发送重定向请求时,是在iframe页面发送的。
原来的代码是这样的:
public String intercept(ActionInvocation invocation) throws Exception {
/* If the user have not been logined , it must return Login_Fail and forward to login.jsp */
if( ActionContext.getContext().getSession().get("login_user") == null ) {
HttpServletResponse response = ServletActionContext.getResponse();
response.sendRedirect("login");
return null;
} else {
return invocation.invoke();
}
}
因为response.sendRedirect()没有target属性,但html页面和js中有。于是,当判断出用户不具备访问权限时,可以在jsp中使用js来转向到真正的登录页面(这里我是采用的中间页面,但是我又不希望它显示出来,于是就要使用到JS了)。具体的代码可以这样写:
@Override
public String intercept(ActionInvocation invocation) throws Exception {
/* If the user have not been logined , it must return Login_Fail and forward to login.jsp */
if( ActionContext.getContext().getSession().get("login_user") == null ) {
HttpServletResponse response = ServletActionContext.getResponse();
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<script type=/"text/javascript/">");
out.println("window.open ('login','_top')");
out.println("</script>");
out.println("</html>");
return null;
} else {
return invocation.invoke();
}
}
OK!搞定!
转自:http://blog.csdn.net/allenlinrui/article/details/6422920
Servlet中response.sendRedirect()跳转时不能设置target的解决办法的更多相关文章
- 在IDEA中使用JDBC获取数据库连接时的报错及解决办法
在IDEA中使用JDBC获取数据库连接时,有时会报错Sat Dec 19 19:32:18 CST 2020 WARN: Establishing SSL connection without ser ...
- Servlet中response、request乱码问题解决
Java Web(二) Servlet中response.request乱码问题解决 三月不减肥,五月徒伤悲,这就是我现在的状态,哈哈~ 健身.博客坚持. --WH 一.request请求参数出现 ...
- Java Web之Servlet中response、request乱码问题解决
Java Web之Servlet中response.request乱码问题解决 一.request请求参数出现的乱码问题 get请求: get请求的参数是在url后面提交过来的,也就是在请求行中, ...
- response.sendRedirect跳转 jsp:forward跳转
response.sendRedirect跳转 <% response.sendRedirect("online.jsp"); %> jsp:forward跳转 < ...
- MFC关于多线程中传递窗口类指针时ASSERT_VALID出错的另类解决 转
MFC关于多线程中传递窗口类指针时ASSERT_VALID出错的另类解决 在多线程设计中,许多人为了省事,会将对话框类或其它类的指针传给工作线程,而在工作线程中调用该类的成员函数或成员变量等等. ...
- Bootstrap中关闭第二个模态框时出现的问题和解决办法
Bootstrap中关闭第二个模态框时出现的问题和解决办法 1.关闭第二个模态框时,第一个模态框跟着消失. 解决办法: 第二个模态框的代码不要写在第一个模态框里面,确保两个模态框相对独立; 2.关闭第 ...
- 返回xml过长时被nginx截断的解决办法
返回xml过长时被nginx截断的解决办法 问题描述:通过网页获取数据,数据格式为xml.当xml比较短时,可以正常获取数据.但是xml长度过长时不能正常获取数据,通过观察返回数据的源代码,发现xml ...
- 爬虫爬数据时,post数据乱码解决办法
最近在写一个爬虫,目标网站是:http://zx.bjmemc.com.cn/,可能是为了防止被爬取数据,它给自身数据加了密.用谷歌自带的抓包工具也不能捕获到数据.于是下了Fiddler. F ...
- oracle执行update语句时卡住问题分析及解决办法
转载:http://www.jb51.net/article/125754.htm 这篇文章主要介绍了oracle执行update语句时卡住问题分析及解决办法,涉及记录锁等相关知识,具有一定参考价值, ...
随机推荐
- Spine的纹理导出问题
发现美术给过来的资源,集合到unity后,发现用Spine的默认材质Spine/Skeleton有毛边问题.对比demo的图片后发现demo的图片(都是png格式)没有白色块,而自己的图片有. 原因是 ...
- gcc 优化选项 -O1 -O2 -O3 -Os 优先级
http://hi.baidu.com/xiaole10368/item/7cea9b1369cc240db88a1a5c 少优化->多优化: O0 -->> O1 -->&g ...
- BufferedReader方法-----Scanner方法
import java.io.*; import java.util.Scanner; public class C { public static void main(String []args) ...
- z-index无效问题的解决方法
在使用z-index这个属性之前,我们必须先了解使用z-index的必要条件: 1.要想给元素设置z-index样式,必须先让它变成定位元素,说的明白一点,就是要给元素设置一个postion:rela ...
- requirejs 优化压缩
1 配置node环境 2 配置built.js文档 3 执行命令node r.js -o built.js 文件目录: <!DOCTYPE HTML> <html lang=&quo ...
- cmake的使用二:链接第三方静态库
cmake的使用二:链接第三方静态库
- ccnu-线段树-简单的区间更新(三题)
题目一:http://poj.org/problem?id=3468 Description You have N integers, A1, A2, ... , AN. You need to de ...
- php面试题整理
PHP经典面试题:(不断跟进补充中...) 1.用PHP打印出前一天的时间格式是2009-02-10 22:21:21(2分) echo date('Y-m-d H:i:s', strtotime(' ...
- leetcode:Lowest Common Ancestor of a Binary Search Tree
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...
- Linux 查看端口占用并杀掉
1. 查看端口号占用情况: netstat -apn|grep 80 tcp 0 0 10.65.42.27:80 172.22.142.20:627 ...