一般使用filter过滤用户是否登录,如果用户没有登陆则转向登陆页面,这时候可以使用response.sendRedirect()。
但当在页面上使用了iframe后,发现被重定向的只是父页面中的iframe区域,登陆页面内容显示在该区域中。说明在过滤器中发送重定向请求时,是在iframe页面发送的。错误的代码如下:
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方法中添加如下代码:
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);
分享到:
相关推荐
为了避免这些问题,开发者需要确保在使用 `response.sendRedirect()` 之前,页面没有输出任何HTML内容,并且在调用该方法后立即结束请求的处理。这样可以有效避免重定向失败的情况发生,保证应用程序的正常运行。
### JSP中利用`response.sendRedirect`与...总之,在JSP开发中,熟练掌握`response.sendRedirect`和Cookie的使用,能够帮助开发者更灵活地控制页面流程,有效管理用户数据,从而构建更加健壮和高效的Web应用程序。
下面我们将详细介绍jsp response.sendRedirect()函数的用法和实现原理。 首先,我们需要了解response和request对象。response对象是JSP中的内置对象,负责处理用户的请求,而request对象则是猎取用户的恳求。...
对于如何进行页面跳转以及如何解决跳转中出现的问题,response.sendRedirect()是其中一种常用的方法。然而,在实际使用时,开发者可能会遇到response.sendRedirect()不跳转的情况。以下是对这个问题的原因分析及解决...
例如,我们可以使用sendRedirect()方法将客户端重定向到其他服务器上的某个Web应用程序资源,而forward()方法只能在同一Web应用程序中进行请求转发。 在实际开发中,我们需要根据不同的需求选择适合的方法。如果...
response.sendRedirect(request.getContextPath()+"/admin/login.jsp"); } public void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //...
* 不能在 response.sendRedirect() 之前使用 out.flush(),否则将抛出 java.lang.IllegalStateException 异常。 * 跳转后,浏览器地址栏将发生变化。 * 如果跳转到不同主机下,response.sendRedirect() 之后的语句将...
与客户端跳转不同,服务器端跳转使用`<jsp:forward>`标签或`response.sendRedirect()`方法(但参数不同)。服务器端跳转不会在浏览器的地址栏显示新的URL,而且可以携带请求属性。`<jsp:forward>`是立即跳转,而`...
JSP 中有五种跳转方式,包括 RequestDispatcher.forward()、response.sendRedirect()、jsp:forward、RequestDispatcher.include() 和 HttpServletResponse.sendRedirect()。下面我们将详细介绍这五种跳转方式的区别...
使用 response.setHeader 和 response.setStatus 方法可以将请求重定向到另一个 JSP 页面。例如: ```jsp response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); String newLocation = "test2.jsp"; ...
### jsp返回登录前的...通过以上几种方法,不仅可以解决`response.sendRedirect()`在使用过程中的常见问题,还可以实现更加灵活和友好的用户界面设计。在实际应用中,开发者可以根据项目的具体需求选择最合适的方式。
在Servlet中,有两种主要的跳转方式:`RequestDispatcher.forward()`和`ServletResponse.sendRedirect()`。这两种方法在处理客户端请求时有不同的行为和应用场景。 1. `RequestDispatcher.forward()` - `forward()...
response.sendRedirect("response.jsp"); // response.jsp Cookie[] cookies = request.getCookies(); for (Cookie cookie : cookies) { out.println("Cookie名称:" + cookie.getName() + ", 值:" + cookie....
用户管理系统。语言JAVA public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, ... response.sendRedirect(request.getContextPath()+"/manager.jsp"); }
在本文档中,我们将详细介绍request和response对象的功能和使用方法。 request对象 request对象是JSP内置对象中的一员,它用于处理客户端请求信息。在Servlet.service方法中,request对象作为参数传入,以便...
### Response-Headers详解 #### HTTP响应报头的基本概念与作用 HTTP响应报头是Web服务器向客户端(通常是浏览器)发送响应时附带的信息。这些报头提供了关于响应本身的元数据,如响应的内容类型、长度等,对于正确...
1. 重定向:使用`sendRedirect(String location)`方法可以将客户端的请求转发到新的URL。这会发送一个302临时重定向状态码。 ```java response.sendRedirect("/newLocation"); ``` 2. 转发:`RequestDispatcher`的`...
与 `RequestDispatcher.forward()` 不同,`response.sendRedirect()` 是一种客户端的跳转方式。这意味着它可以在用户的浏览器端完成跳转操作,并且可以携带参数进行传递。例如,从一个页面传递参数到另一个页面。 *...
response.sendRedirect("jspPages/login.jsp"); }else{ HttpSession session = request.getSession(); session.setAttribute("userName", name); session.setAttribute("pwd", pwd); session.setAttribute(...