高档网站模板,网站建设服务收费标准,wordpress视频采集插件,太原网站排名优化价格这种是由于条件判断有误#xff0c;程序不断的重定向到一个页面#xff0c;而造成的死循环的情况
下面列举一个常出现的场景之一
1、使用过滤器实现登录验证错误处理
解释#xff1a;当用户访问login.jsp进行登录的时候#xff0c;这个时候请求会被Filter捕获#xff0…
这种是由于条件判断有误程序不断的重定向到一个页面而造成的死循环的情况
下面列举一个常出现的场景之一
1、使用过滤器实现登录验证错误处理
解释当用户访问login.jsp进行登录的时候这个时候请求会被Filter捕获Filter通过session获取用户登录成功之后的信息但是此时用户并没有登录程序又会重定向到login.jsp。
这个时候就会出现程序进入Filter后返回重定向到login.jsp.
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {System.out.println(loginFilter);//进来之后我需要判断当前用户有没有登录如果登录放行否则去登录页//1、获取当前的请求地址HttpServletRequest request(HttpServletRequest)servletRequest;HttpServletResponse response(HttpServletResponse)servletResponse;HttpSession sessionrequest.getSession();UserInfo user(UserInfo)session.getAttribute(userinfo);if(usernull){response.sendRedirect(login.jsp);return ;}//FilterChain过滤链进行放行filterChain.doFilter(servletRequest, servletResponse);}
2、正确的Filter的写法
这个时候我们需要获取当前用户的请求地址当请求地址URL中包含login等登录字样的时候直接放行让用户去登录而不是拦截。
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {System.out.println(loginFilter);//进来之后我需要判断当前用户有没有登录如果登录放行否则去登录页//1、获取当前的请求地址HttpServletRequest request(HttpServletRequest)servletRequest;HttpServletResponse response(HttpServletResponse)servletResponse;String urlrequest.getRequestURI();System.out.println(urlurl);//如果请求的地址中包含了login字样说明用户正在登录放行。//indexOf判断login在url字符串中首次出现的索引的位置if(url.indexOf(login)0 || url.indexOf(userinfo.do)0){//用户在登录中放行filterChain.doFilter(servletRequest, servletResponse);return ;}HttpSession sessionrequest.getSession();UserInfo user(UserInfo)session.getAttribute(userinfo);System.out.println(userfilteruser);if(usernull){response.sendRedirect(login.jsp);return ;}//FilterChain过滤链进行放行filterChain.doFilter(servletRequest, servletResponse);}