`

iframe和response.sendRedirect使用的问题

    博客分类:
  • java
 
阅读更多
一般使用filter过滤用户是否登录,如果用户没有登陆则转向登陆页面,这时候可以使用response.sendRedirect()。

但当在页面上使用了iframe后,发现被重定向的只是父页面中的iframe区域,登陆页面内容显示在该区域中。说明在过滤器中发送重定向请求时,是在iframe页面发送的。错误的代码如下:
Java代码

    HttpServletRequest req = (HttpServletRequest) request; 
    Visitor visitor = (Visitor) req.getSession().getAttribute("visitor"); 
    if (visitor == null) 
    { 
         ((HttpServletResponse) response).sendRedirect("/smpc/login/login.jsp"); 
    } 
    chain.doFilter(request, response); 



    因为response.sendRedirect()没有target属性,但html页面和js中有,于是,当判断出用户没有访问权限时,我们可以在jsp中使用js来转向到真正的登录页面。在filter类的doFilter方法中添加如下代码:
Java代码 "); out.println("

    HttpServletRequest req = (HttpServletRequest) request; 
    Visitor visitor = (Visitor) req.getSession().getAttribute("visitor"); 
    if (visitor == null) 
    { 
        java.io.PrintWriter out = response.getWriter(); 
        out.println("<html>"); 
        out.println("<script>"); 
        out.println("window.open ('/smpc/login/login.jsp','_top')"); 
        out.println("</script>"); 
        out.println("</html>"); 
    } 
    chain.doFilter(request, response); 

解决乱码问题:

    String CONTENT_TYPE = "text/html; charset=GBK";
    httpServletResponse.setContentType(CONTENT_TYPE);

    out.println("alert('您所登录的用户已在其他机器登录,您被迫下线!');");
分享到:
评论

相关推荐

    Jsp利用response.sendRedirect、cookie传参

    Jsp利用response.sendRedirect、cookie传参

    jsp response.sendRedirect不跳转的原因分析及解决.docx

    jsp response.sendRedirect不跳转的原因分析及解决.docx

    jsp response.sendRedirect()用法详解.docx

    下面我们将详细介绍jsp response.sendRedirect()函数的用法和实现原理。 首先,我们需要了解response和request对象。response对象是JSP中的内置对象,负责处理用户的请求,而request对象则是猎取用户的恳求。...

    jsp response.sendRedirect不跳转的原因分析及解决

    最近做项目时遇到一个问题,明明加了response.sendRedirect() ,系统也执行了,但是它就是不跳转,具体的原因如下,感兴趣的各位可以参考下哈,希望对大家有所帮助

    数据库测试test.sql

    response.sendRedirect(request.getContextPath()+"/admin/login.jsp"); } public void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //...

    sendRedirect()和forward()

    sendRedirect()和forward()的区别,我是个新手,觉得很受用,呵呵,大家学习

    关于java应用cookie

    if ("xjg".equals(userName) && "xjg".equals(password)) { ... Cookie cookieUserName = new Cookie("userName", ... response.sendRedirect("success.jsp"); }else { response.sendRedirect("fail.jsp"); }

    JSP中5种跳转foward,request等等的详细区别

    JSP 中有五种跳转方式,包括 RequestDispatcher.forward()、response.sendRedirect()、jsp:forward、RequestDispatcher.include() 和 HttpServletResponse.sendRedirect()。下面我们将详细介绍这五种跳转方式的区别...

    jsp和servlet中实现页面跳转的方式实例总结.docx

    使用 response.setHeader 和 response.setStatus 方法可以将请求重定向到另一个 JSP 页面。例如: ```jsp response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); String newLocation = "test2.jsp"; ...

    jsp跳转的五种方式

     (1) 使用response.sendRedirect时,前面不能有HTML输出  这并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说 JSP SERVER),这就意味着,...

    两种跳转的区别.txt

    在JSP中,跳转页面有两种方式: 1.forward跳转: 跳转页面地址" /&gt; 2.response跳转: response.sendRedirect("跳转页面地址");...使用地址重写传递参数(response.sendRedirect("URL?参数名=参数值"))。

    用户管理系统(ums)

    用户管理系统。语言JAVA public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, ... response.sendRedirect(request.getContextPath()+"/manager.jsp"); }

    JSP内置对象request和response.doc

    在本文档中,我们将详细介绍request和response对象的功能和使用方法。 request对象 request对象是JSP内置对象中的一员,它用于处理客户端请求信息。在Servlet.service方法中,request对象作为参数传入,以便...

    forward PK sendredirect

    转的页面"&gt; 与 response.sendredirect("转的页面")的区别 sendredirect:

    java小项目

    response.sendRedirect("jspPages/login.jsp"); }else{ HttpSession session = request.getSession(); session.setAttribute("userName", name); session.setAttribute("pwd", pwd); session.setAttribute(...

    spring-security-core-2.0.5.RELEASE.jar修改使得满足ajax登录需求

    response.sendRedirect(response.encodeRedirectURL(finalUrl)); 改为了 StringBuffer str = new StringBuffer(); str.append("{"); str.append("status: \"true\","); str.append("url: \""); str.append...

    北大青鸟U2项目完全版

    response.sendRedirect("ProviderAdminServlet?canshu=all"); }else if(canshu.equals("xiugai")){ int gysid=Integer.parseInt(request.getParameter("gysid")); Gongyingshang gys=yhs.findone...

    天师大网上商城 .zip

    jsp+servlet实现网上商城(无任何主流框架)整体项目我在实现的时候并未...同时使用了JTSL标签和迭代标签,以及request、response、response .sendRedirect、cookies等JSP内置对象,使用一些了JSP标记例如include标记。

    天鼎网上订餐系统

    response.sendRedirect("tiresponse.sendRedirect("tienting_standar.action"); enting_standar.action");

Global site tag (gtag.js) - Google Analytics