一般使用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的解决办法的更多相关文章

  1. 在IDEA中使用JDBC获取数据库连接时的报错及解决办法

    在IDEA中使用JDBC获取数据库连接时,有时会报错Sat Dec 19 19:32:18 CST 2020 WARN: Establishing SSL connection without ser ...

  2. Servlet中response、request乱码问题解决

    Java Web(二) Servlet中response.request乱码问题解决   三月不减肥,五月徒伤悲,这就是我现在的状态,哈哈~ 健身.博客坚持. --WH 一.request请求参数出现 ...

  3. Java Web之Servlet中response、request乱码问题解决

    Java Web之Servlet中response.request乱码问题解决   一.request请求参数出现的乱码问题 get请求: get请求的参数是在url后面提交过来的,也就是在请求行中, ...

  4. response.sendRedirect跳转 jsp:forward跳转

    response.sendRedirect跳转 <% response.sendRedirect("online.jsp"); %> jsp:forward跳转 < ...

  5. MFC关于多线程中传递窗口类指针时ASSERT_VALID出错的另类解决 转

    MFC关于多线程中传递窗口类指针时ASSERT_VALID出错的另类解决   在多线程设计中,许多人为了省事,会将对话框类或其它类的指针传给工作线程,而在工作线程中调用该类的成员函数或成员变量等等. ...

  6. Bootstrap中关闭第二个模态框时出现的问题和解决办法

    Bootstrap中关闭第二个模态框时出现的问题和解决办法 1.关闭第二个模态框时,第一个模态框跟着消失. 解决办法: 第二个模态框的代码不要写在第一个模态框里面,确保两个模态框相对独立; 2.关闭第 ...

  7. 返回xml过长时被nginx截断的解决办法

    返回xml过长时被nginx截断的解决办法 问题描述:通过网页获取数据,数据格式为xml.当xml比较短时,可以正常获取数据.但是xml长度过长时不能正常获取数据,通过观察返回数据的源代码,发现xml ...

  8. 爬虫爬数据时,post数据乱码解决办法

    最近在写一个爬虫,目标网站是:http://zx.bjmemc.com.cn/,可能是为了防止被爬取数据,它给自身数据加了密.用谷歌自带的抓包工具也不能捕获到数据.于是下了Fiddler.     F ...

  9. oracle执行update语句时卡住问题分析及解决办法

    转载:http://www.jb51.net/article/125754.htm 这篇文章主要介绍了oracle执行update语句时卡住问题分析及解决办法,涉及记录锁等相关知识,具有一定参考价值, ...

随机推荐

  1. Spine的纹理导出问题

    发现美术给过来的资源,集合到unity后,发现用Spine的默认材质Spine/Skeleton有毛边问题.对比demo的图片后发现demo的图片(都是png格式)没有白色块,而自己的图片有. 原因是 ...

  2. gcc 优化选项 -O1 -O2 -O3 -Os 优先级

    http://hi.baidu.com/xiaole10368/item/7cea9b1369cc240db88a1a5c 少优化->多优化: O0 -->> O1 -->&g ...

  3. BufferedReader方法-----Scanner方法

    import java.io.*; import java.util.Scanner; public class C { public static void main(String []args) ...

  4. z-index无效问题的解决方法

    在使用z-index这个属性之前,我们必须先了解使用z-index的必要条件: 1.要想给元素设置z-index样式,必须先让它变成定位元素,说的明白一点,就是要给元素设置一个postion:rela ...

  5. requirejs 优化压缩

    1 配置node环境 2 配置built.js文档 3 执行命令node r.js -o built.js 文件目录: <!DOCTYPE HTML> <html lang=&quo ...

  6. cmake的使用二:链接第三方静态库

    cmake的使用二:链接第三方静态库

  7. ccnu-线段树-简单的区间更新(三题)

    题目一:http://poj.org/problem?id=3468 Description You have N integers, A1, A2, ... , AN. You need to de ...

  8. php面试题整理

    PHP经典面试题:(不断跟进补充中...) 1.用PHP打印出前一天的时间格式是2009-02-10 22:21:21(2分) echo date('Y-m-d H:i:s', strtotime(' ...

  9. 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 ...

  10. Linux 查看端口占用并杀掉

    1. 查看端口号占用情况: netstat -apn|grep 80 tcp        0      0 10.65.42.27:80              172.22.142.20:627 ...