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等外部文件就不会被过滤掉了,可以开心的用了!^-^
昨天还好好的一个页面,今天所有的样式都没有了。
后来查资料,自己摸索,各种法子试了一圈,也没解决。
终于皇天不负苦心人,最后被我发现是我昨天定义的一个全局的过滤器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文件被过滤
- java中使用全局过滤器防止过滤css和js
- 关于javaweb filter中过滤了css文件的解决方法
- JavaWeb Filter 过滤器的机制 与使用 请求重定向与请求转发的区别 跳转过滤,过滤器dispatcher REQUEST与FORWARD区别
- 利用 filter 机制 给 静态资源 url 加上时间戳,来防止js和css文件的缓存,利于开发调试
- 利用 filter 机制给静态资源 url 加上时间戳,来防止js和css文件的缓存问题
- java 提供的文件过滤类FilenameFilter使用
- 使用jquery动态加载js,css文件
- asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度
- 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
- 使用Java提供的方法防止IE缓存JSP文件
- 使用 YUI Compressor 压缩文件夹下的所有js和css文件
- asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度
- 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件
- [前端优化]使用Combres合并对js、css文件的请求
- 防止浏览器缓存css,js静态文件
- asp.net在使用母版页的内容页面中动态加载css和js文件的方法
- 使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度
- Apache中过滤js、css、jpg等格式文件的设置(Windows)