`

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`与...总之,在JSP开发中,熟练掌握`response.sendRedirect`和Cookie的使用,能够帮助开发者更灵活地控制页面流程,有效管理用户数据,从而构建更加健壮和高效的Web应用程序。

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

    为了避免这些问题,开发者需要确保在使用 `response.sendRedirect()` 之前,页面没有输出任何HTML内容,并且在调用该方法后立即结束请求的处理。这样可以有效避免重定向失败的情况发生,保证应用程序的正常运行。

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

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

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

    对于如何进行页面跳转以及如何解决跳转中出现的问题,response.sendRedirect()是其中一种常用的方法。然而,在实际使用时,开发者可能会遇到response.sendRedirect()不跳转的情况。以下是对这个问题的原因分析及解决...

    sendRedirect()和forward()

    例如,我们可以使用sendRedirect()方法将客户端重定向到其他服务器上的某个Web应用程序资源,而forward()方法只能在同一Web应用程序中进行请求转发。 在实际开发中,我们需要根据不同的需求选择适合的方法。如果...

    数据库测试test.sql

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

    jsp的跳转方式总结

    * 不能在 response.sendRedirect() 之前使用 out.flush(),否则将抛出 java.lang.IllegalStateException 异常。 * 跳转后,浏览器地址栏将发生变化。 * 如果跳转到不同主机下,response.sendRedirect() 之后的语句将...

    Response,内置对象.

    与客户端跳转不同,服务器端跳转使用`&lt;jsp:forward&gt;`标签或`response.sendRedirect()`方法(但参数不同)。服务器端跳转不会在浏览器的地址栏显示新的URL,而且可以携带请求属性。`&lt;jsp:forward&gt;`是立即跳转,而`...

    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"; ...

    Servlet跳转方式sendReDirect

    在Servlet中,有两种主要的跳转方式:`RequestDispatcher.forward()`和`ServletResponse.sendRedirect()`。这两种方法在处理客户端请求时有不同的行为和应用场景。 1. `RequestDispatcher.forward()` - `forward()...

    jsp返回登陆前的页面的几种实现

    ### jsp返回登录前的...通过以上几种方法,不仅可以解决`response.sendRedirect()`在使用过程中的常见问题,还可以实现更加灵活和友好的用户界面设计。在实际应用中,开发者可以根据项目的具体需求选择最合适的方式。

    7request和response.docx

    response.sendRedirect("response.jsp"); // response.jsp Cookie[] cookies = request.getCookies(); for (Cookie cookie : cookies) { out.println("Cookie名称:" + cookie.getName() + ", 值:" + cookie....

    用户管理系统(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对象作为参数传入,以便...

    Response-Headers详解

    ### Response-Headers详解 #### HTTP响应报头的基本概念与作用 HTTP响应报头是Web服务器向客户端(通常是浏览器)发送响应时附带的信息。这些报头提供了关于响应本身的元数据,如响应的内容类型、长度等,对于正确...

    response设置的实例源码

    1. 重定向:使用`sendRedirect(String location)`方法可以将客户端的请求转发到新的URL。这会发送一个302临时重定向状态码。 ```java response.sendRedirect("/newLocation"); ``` 2. 转发:`RequestDispatcher`的`...

    jsp跳转的五种方式

    与 `RequestDispatcher.forward()` 不同,`response.sendRedirect()` 是一种客户端的跳转方式。这意味着它可以在用户的浏览器端完成跳转操作,并且可以携带参数进行传递。例如,从一个页面传递参数到另一个页面。 *...

    java小项目

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

Global site tag (gtag.js) - Google Analytics