首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

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

2012-10-15 
web.xml配置登录过滤器无法访问!WEB.XML!-- 登录过滤器 --filterfilter-nameLoginFilter/filter-na

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。

热点排行
Bad Request.