您的位置:首页 > Web前端 > CSS

java 使用全局过滤器Filter之后 防止css文件与js文件被过滤

2015-01-30 15:31 671 查看
今天纠结了一天一个非常诡异的问题。

昨天还好好的一个页面,今天所有的样式都没有了。

后来查资料,自己摸索,各种法子试了一圈,也没解决。

终于皇天不负苦心人,最后被我发现是我昨天定义的一个全局的过滤器Filter,用来过滤掉未经过登录就直接访问内部页面的非法请求,结果让我没想到的是,我在Login.jsp页面中引用的外部css文件也一并被过滤掉了。

知道了原因,问题就好解决,

我在Filter处理类里面加上了以下的判断,问题解决:

@Override

public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding(encoding);
arg1.setCharacterEncoding(encoding);
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
HttpSession session = request.getSession();
String url = request.getRequestURI();
String contextPath = request.getContextPath();
System.out.println("请求的URL为:" + url);
if(url.equals(contextPath + "/login.jsp") || url.equals(contextPath + "/login")){
arg2.doFilter(arg0, arg1);
}else if(url.contains(".css") || url.contains(".js")){

//如果发现是css或者js文件,直接放行
arg2.doFilter(arg0, arg1);
}else {
if("".equals(session.getAttribute("userName")) ||
session.getAttribute("userName") == null){

response.sendRedirect(contextPath + "/login.jsp");
request.setAttribute("msg", "请先登录!");
return;
}
}
}

这下,引用的css及js等外部文件就不会被过滤掉了,可以开心的用了!^-^
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java filter css js