WEB.XML
<!-- 登录过滤器 -->
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>pub.servlet.LoginFilter</filter-class>

<init-param>
<param-name>redirect</param-name>
<param-value>login.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
java过滤器类public class LoginFilter implements Filter {

private Logger logger = Logger.getLogger(LoginFilter.class);
private String redirect; public void init(FilterConfig param) throws ServletException {
redirect = param.getInitParameter("redirect");
} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
HttpSession session = req.getSession();
StaffAdmin staff = (StaffAdmin)session.getAttribute("staff");
String path = req.getContextPath();
if(staff == null){
// if(isAjaxRequest(req)){
// res.setStatus(9999);
// RequestUtil.responseOut("GBK", "Login", res);
// }
String lastUrl = req.getRequestURI();
String lastQueryString = req.getQueryString()==null ? "":req.getQueryString();
req.setAttribute("lastUrl", lastUrl + "?" + lastQueryString);
logger.info("试图访问地址:"+req.getAttribute("lastUrl"));
// request.getRequestDispatcher("/"+redirect).forward(request, response);
res.sendRedirect(path+"/"+redirect);
}else{
chain.doFilter(request, response);
}
} public void destroy() {

}

/** 针对jquery的ajax请求 */
private boolean isAjaxRequest(HttpServletRequest request) {
String header = request.getHeader("X-Requested-With");
return (header != null && "XMLHttpRequest".equals(header));
} }

解决方案 »

  1.   

    很常规的写法了。<url-pattern>/admin/*</url-pattern>   这样是正常的。如果换成:<url-pattern>/*</url-pattern>。就无法访问了。过滤器类无限滚屏,实在不懂!求粗壮的大腿!
      

  2.   

    你还是好好看看你的过滤器那块的基础吧。至于为什么,原因很简单。就是当你写成/* 时意味着你的过滤器要过滤所有的请求,而过滤完毕后肯定会返回到一个指定资源,这是又是访问某一个资源,你写的是拦截project下所以请求资源,所以又被拦截下来,然后。你懂得。就这样进入死循环了。
    如还有其他疑问或者需要咨询,欢迎加入我们的java开发联盟!
    群号:
    247286682
    期待你的加入,来者请注明 csdn。