症状:
项目由tomcat7升级到tomcat8后,访问页面发现样式表不生效,nextwork提示请求正常,查看请求的文件时,发现css和js被浏览器当成html格式处理,同时控制台发出警告:
Java Resource interpreted as Stylesheet but transferred with MIME type
解决办法:
在项目中配置了全局的编码过滤器,过滤器中设置了contentType,思路有两种,
第一种,不在编码过滤器中设置contentType,由对应的action去设置;
第二种,判断请求类型,如为action,则设置contentType,否则放行;
建议使用第一种;
@Override
public void doFilter(ServletRequest paramServletRequest, ServletResponse paramServletResponse, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) paramServletRequest;
HttpServletResponse response = (HttpServletResponse) paramServletResponse;
// 此代码在高版本的Tomcat(tomcat8以上)会导致JS和CSS无法被浏览器解析,控制台异常:
// Java Resource interpreted as Stylesheet but transferred with MIME type
// response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}