在一个javaweb项目中 , css 突然失效了 , 而js 正常 ;
排除一些简单错误存在的可能,如路径问题等;
现将解决思路记录下 , 但愿能帮到一些存在类似问题的朋友 .
背景 :
- eclipse下的maven - j2ee -web项目(无框架);
- 前端是 : html + js + css + json
- 后端是 : servlet (用到filter监听) + mysql
先上错误前的图
删除对应css文件,抛404 ;
添加CSS文件 , 发现css是加载到了,且文件大小匹配 ; 细心的人应该能直接发现问题所在;
刷新,再次加载,已缓存;
上解决后的图
是否发现差异了? 类型为css了,而不是之前的html了(这是问题的关键点)
CSS + JS + JSON等一切正常显示了 , 问题总算解决了 ;
如何解决的的 ? >>> 问题出在 filter编码监听器上
改进前为 :
// tomcat-9.0.39
req.setCharacterEncoding("UTF-8");
chain.doFilter(req, resp);
resp.setContentType("text/html;charset=UTF-8");
改进后为 :
req.setCharacterEncoding("utf-8");
chain.doFilter(req,resp);
String uri = req.getRequestURI();
if(uri.endsWith(".css") || uri.endsWith(".js") || uri.endsWith(".png"))
{
//resp.setContentType("text/css;charset=utf-8");
}
else
{
resp.setContentType("text/html;charset=utf-8");
}
问题根源在 : text类型的html 和 css上 ; 剩下的触类旁通的运用了 ;
注意问题 : 清空缓存 , 再访问 ;
严格意义上讲 , 这是第一篇原创文章 , 觉得还好 , 给点个赞呗 _