JSP页面引入本地CSS文件无法加载如何排查解决?
修复方案
直接可执行的修复操作
- 先修正CSS引入路径的低级错误:你当前代码里的
href="resources/css/login.css/"末尾多了一个斜杠,会把CSS文件当成目录请求,首先删除末尾的斜杠,修改为:
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/resources/css/login.css">
- 调整静态资源存放位置:如果你的
resources文件夹放在src/main/resources目录下,需要把整个resources文件夹移动到webapp(或旧版项目的WebContent)根目录下,src/main/resources默认是存放项目配置文件的路径,不会被Web容器映射为可直接对外访问的静态资源路径。如果是Spring Boot项目,将CSS文件放到src/main/resources/static/css/目录下,引入路径直接写/css/login.css即可。
排查方案
- 打开浏览器开发者工具切换到「网络」面板,刷新页面后查看CSS请求的返回状态码:如果是404,复制请求的完整URL,对比你预期的资源路径,确认是否存在上下文路径缺失、路径拼写错误的问题。
- 检查项目的拦截器/过滤器配置:如果你配置了DispatcherServlet拦截所有请求(路径规则为
/),需要额外配置静态资源放行规则,Spring MVC项目可以在配置文件中添加:
<mvc:resources mapping="/resources/**" location="/resources/" />
- 核对文件名大小写:Linux部署环境下文件名大小写敏感,确认代码里写的文件名和实际文件的大小写完全一致。
- 检查部署后的项目目录:打包部署后查看服务器上的项目目录里是否存在对应的CSS文件,排除打包时没有把静态资源打入包的问题。
常见加载失败原因
- 路径书写错误:除开末尾多斜杠的问题,相对路径没有添加上下文路径,会导致部署带项目名的上下文时路径拼接错误。
- 资源存放位置错误:静态资源放在了Web容器无法直接访问的目录下,没有配置对应的映射规则。
- 拦截规则限制:全局拦截器没有放行静态资源请求,导致CSS请求被框架拦截无法返回资源。
- 打包配置错误:Maven/Gradle配置排除了静态资源文件,导致打包后的部署包中不存在对应的CSS文件。
内容的提问来源于stack exchange,提问作者Stefan Jankovic
相关产品推荐
相关产品推荐

