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语句时卡住问题分析及解决办法,涉及记录锁等相关知识,具有一定参考价值, ...
随机推荐
- Eclipse项目的导入跟导出
1.导入项目 当下载了包含Eclipse 项目的源代码文件后,我们可以把它导入到当前的Eclipse 工作区然后编辑和查看.点击菜单File > Import,然后在弹出的Import 对话框中 ...
- Linux远程文件传输
linux系统中,难免会遇到一些要将某文件通过网络传送给其他主机的情况,而恰好两台主机 都是linux系统的时候,我们就可以直接使用scp命令来传输文件到另一台主机了. scp命令用于在网络中安全的传 ...
- 解决COS、FileUpload上传文件时中文文件名乱码问题
方法: MultipartParser mp = new MultipartParser(request, 10*1024*1024); mp.setEncoding("GBK") ...
- JSON对象末尾多余逗号问题
平时开发用的IE10,没发现这个问题,测试人员对系统兼容性测试时发现了在IE7下存在问题. 问题代码如下: var person = { name: "John", age: 25 ...
- lcd ram/半反穿技术解析【转】
转自:http://bbs.meizu.cn/viewthread.php?tid=3058847&page=1 我的话题应该会比较长一些.但是大致板块如下:1.LCD RAM;-->此 ...
- Weblogic控制器的部署
WebLogic的安装 一 WebLogic安装 1. 打开WebLogic安装程序:oepe11_wls1031.exe(我们选用的是WebLogic 10.3g).如图1-1所示: 图1-1 ...
- Mtk Android编译命令
一.输入命令: cbk@YCS:~/work/k6/alps$ ./mk help Usage: (makeMtk|mk) [options] project actions [modules] Op ...
- Unit Test with VS.NET
Unit Test with VS.NET 2014-10-30 定义单元测试框架Visual Studio 2008提供的单元测试框架参考 定义[1] 返回 传统的单元测试:是一段代码(通常一个方法 ...
- 第六讲(二) Hibernate HQL查询
HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此Hibe ...
- HDU 2870 Largest Submatrix
这三道题的关系是这样的,1505是1506的加强版,2870又是1505的加强版 如果按照上面由简到易的顺序来做的话,还是很简单的 这道题的思想就是 枚举+DP 因为某些字符可以变值,所以我们枚举a, ...