今天写了一个很神奇的代码(Bug),我很菜,恩.
大体是这样的
过滤器监听A(Servlet),B(.jsp)两个页面,如果满足条件就重定向到B页面
B页面是为A页面准备数据,所以B页面要转发到A页面.
然后在满足条件的情况下,浏览器告诉我说无线重定向.......
过滤器代码:
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
//强制转化一下类型
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
//对HttpSession进行判断
HttpSession session = request.getSession(false); //获取HttpSession对象
if(session != null) {
if(session.getAttribute("user")!=null) {
System.out.println("SessionLiginFilter过滤器:放行-"+session.getAttribute("user"));
// chain.doFilter(request, response); //不放行,这几个页面放行会出问题的
response.sendRedirect(request.getContextPath()+"/ControlText");
return;
}
}
System.out.println("SessionLiginFilter过滤器:没有放行");
response.sendRedirect(request.getContextPath()+"/index.jsp");
}
B页面代码:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置所有文本到request中
TextService service_text = new TextServiceImpl();
List<Text> listText = new ArrayList<Text>();
listText = service_text.findAll();
request.setAttribute("listText", listText);
//转发
request.getRequestDispatcher("/UserFilter/controlText.jsp").forward(request, response);
}
A页面代码不贴了,那么怎么解决这个问题?额,小白表示不会......