今天纠结了一天一个非常诡异的问题。
昨天还好好的一个页面,今天所有的样式都没有了。
后来查资料,自己摸索,各种法子试了一圈,也没解决。
终于皇天不负苦心人,最后被我发现是我昨天定义的一个全局的过滤器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等外部文件就不会被过滤掉了,可以开心的用了!^-^