当前位置: 代码迷 >> Java Web开发 >> web.xml配备登录过滤器无法访问
  详细解决方案

web.xml配备登录过滤器无法访问

热度:4931   发布时间:2013-02-25 21:10:38.0
web.xml配置登录过滤器无法访问!
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));


}




------解决方案--------------------------------------------------------
你还是好好看看你的过滤器那块的基础吧。

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