0
当我为所有jsp页面创建过滤器时,浏览器进入无限循环,但是当我仅对一个页面进行过滤时,它将正确运行!为jsp文件使用过滤器时产生无限循环
这里是doFilter方法,如果有一个人找到错误PLX告诉我...
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (debug) log("AuthenticationFilter:doFilter()");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpServletResponse httpres = (HttpServletResponse) response;
HttpServletRequest httpreq = (HttpServletRequest) request;
if (httpreq.getRequestURI().indexOf("login.jsp") == -1 || httpreq.getRequestURI().indexOf("LoginServlet") == -1) {
// if(!httpreq.getRequestURL().equals("/OSQS/Login.jsp")){
HttpSession session = httpreq.getSession();
String logged = (String) session.getAttribute("login");
if (logged == null) {
httpres.sendRedirect("login.jsp");
return;
}
}
chain.doFilter(request, response);
}
thanx它的工作浏览器没有进入无限循环,并显示登录页面,但是当我在URL中更改为private/secure.jsp它进入无限循环:(并没有重定向到登录页面!!为什么? – palAlaa 2010-09-04 23:46:05
可能你还有一个安全文件夹的登录页面吗?你是否将sendRedirect(“login.jsp”)更改为'sendRedirect(“/ login.jsp”)'? – BalusC 2010-09-04 23:48:47
我发现的问题是,如果他没有登录???我不知道为什么,因为我确保从数据库连接,然后使session.setAttribute(“登录”,“确定”)后,在servlet中获得会话形式的http请求;我在过滤器检查,这里: 字符串记录=(字符串)session.getAttribute(“登录”); 但我震惊,用户得到会话属性登录=确定,但他没有登录!!!!!!!! !!!!!!!!!!!!! – palAlaa 2010-09-05 00:13:24