日期:2014-05-19  浏览次数:20734 次

用户登录过滤的问题
web.xml:  <filter>
<filter-name>LoginFilter</filter-name>
<filter-class>
com.train.filter.LoginFilter
</filter-class>
<init-param>
<param-name>url</param-name>
<param-value>/login.jsp</param-value>
</init-param>
  </filter>
 <filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
  </filter-mapping>

Filter类:public class LoginFilter implements Filter{
String url="/";
@Override
public void destroy() {
// TODO Auto-generated method stub

}

@Override
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOExceptionServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res= (HttpServletResponse) response;
HttpSession session = req.getSession();
User user=(User) session.getAttribute("user");
if(user!=null){
chain.doFilter(req, res);
return;
}
else{
res.sendRedirect(req.getContextPath+url);
}
}

@Override
public void init(FilterConfig filterConfig) throws ServletException {
url=filterConfig.getInitParameter("url");
}

}当输路径时提示(此页面不能正确地重定向)

我的页面一部分放在WebRoot下面还有一部分放在WebRoot下的admin文件夹内!全都需要登录过滤,大家帮帮忙!
------最佳解决方案--------------------
/*是可以过滤所有的。
把 res.sendRedirect(req.getContextPath+url); 打印出来 ,看看路径有哪里不对。。
------其他解决方案--------------------
引用:
/*是可以过滤所有的。
把 res.sendRedirect(req.getContextPath+url); 打印出来 ,看看路径有哪里不对。。

这个就是登陆页面的路径!我访问任何地址都提示(此页面不能正确地重定向)
------其他解决方案--------------------
引用:
引用:/*是可以过滤所有的。
把 res.sendRedirect(req.getContextPath+url); 打印出来 ,看看路径有哪里不对。。
这个就是登陆页面的路径!我访问任何地址都提示(此页面不能正确地重定向)

web-inf 下面的文件是不能直接重定向的,请求转发把。
 request.getRequestDispatcher("index.jsp").forward(request, response);
------其他解决方案--------------------
引用:
引用:引用:/*是可以过滤所有的。
把 res.sendRedirect(req.getContextPath+url); 打印出来 ,看看路径有哪里不对。。
这个就是登陆页面的路径!我访问任何地址都提示(此页面不能正确地重定向)
web-inf 下面的文件是不能直接重定向的,请求转发把。……

登陆页面在webroot下,web-inf下没有文件
------其他解决方案--------------------
自己解决了!