jsp页面样式不生效
1.背景
springMVC项目,jsp页面,在tomcat7中运行正常
jsp页面中有定义:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
spring过滤器:
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) {
//这句话导致css文件在tomcat8中不生效
res.setContentType("text/html;charset=UTF-8");
chain.doFilter(req, res);
}
2.问题
jsp页面在tomcat8中运行,样式文件不生效
样式文件,浏览器F12查看响应头:Content-Type: text/html;charset=UTF-8,这是不对的
样式文件,响应头内容类型应该是:Content-Type: text/css;charset=UTF-8,这样才会正常显示
3.解决办法
过滤器不能将所有请求类型都指定为:Content-Type: text/html;charset=UTF-8,需要排除css文件即可。
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) {
//页面css文件不生效,此处css文件不能设置为text/html
HttpServletRequest httpServletRequest = (HttpServletRequest) req;
if(!httpServletRequest.getRequestURI().endsWith(".css")) {
res.setContentType("text/html;charset=UTF-8");
}
chain.doFilter(req, res);
}
另外一个办法是注释掉jsp页面中的DOCTYPE定义,这样tomcat8将不会按定义的标准解析,不过需要修改所有页面,不是好的办法,按上面方法修改过滤器即可。
<%--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">--%>
正文到此结束
- 本文标签: java
- 本文链接: https://codeis.run/article/jsp-css-not-work
- 版权声明: 本文由醒醒原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权