当前位置: 代码迷 >> Java Web开发 >> java web 项目 添加登陆过滤器后,出现“此网页包含重定向循环”有关问题
  详细解决方案

java web 项目 添加登陆过滤器后,出现“此网页包含重定向循环”有关问题

热度:689   发布时间:2016-04-16 21:26:08
java web 项目 添加登陆过滤器后,出现“此网页包含重定向循环”问题
在一个javaweb项目上,添加了一个filter,用来判断用户是否登陆,如果登陆请求继续,未登陆则重定向到等领域页面。
可是加上该filter后,访问网站,出现了”此网页包含重定向循环“这个问题。请问怎么解决?
filter代码如下:
web/xml:
<filter>
  <filter-name>loginFilter</filter-name>
  <filter-class>com.xxx.xxxc.filter.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>loginFilter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
filter代码:
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOExceptionServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
HttpSession session = request.getSession();
User user = (User) session.getAttribute("admin");

if(user != null){
arg2.doFilter(request, response); 
}else{
response.sendRedirect(request.getContextPath()+"/page/login.jsp");
}
}

请看一下,是哪里的问题。
------解决思路----------------------
这一行跳转到login.jsp会又进过滤器进行重复跳转,那这个时候就会出现重定向循环;
response.sendRedirect(request.getContextPath()+"/page/login.jsp");

解决方法就是当遇到login.jsp进来的时候直接进这个:arg2.doFilter(request, response);

------解决思路----------------------
过滤的东西有问题啊,你说你发送一个请求过滤后,定向到登陆也的JSP,这个也是要过滤的,你把/*改了,除了登陆页,其他都可以用,你把登陆页也过滤了,肯定重复发送啊 - -!!
------解决思路----------------------
这么说吧  楼主知道重定向的含义吧?
 ,重定向就是结束此次请求 发起一个新的请求
而楼主配置的过滤器 过滤所有的请求
当第一次请求中 user==null时,则会发起新的第二次请求  指向 request.getContextPath()+"/page/login.jsp" 地址(即重定向)
第二次请求也会经过过滤器,此时user仍为null 故又重定向
第三次请求也会经过过滤器,此时user仍为null 故又重定向
、、、、、
如此反复,无限重定向




  相关解决方案
本站暂不开放注册!
内测阶段只得通过邀请码进行注册!