配置Spring MVC后JSP页面加载CSS文件出现404错误求助
你的404错误大概率是资源路径配置、标签依赖或文件实际位置不匹配导致的,按以下步骤逐一排查:
确保JSTL标签正确引入
<c:url>是JSTL核心标签库的内容,必须在JSP页面顶部添加标签库声明,否则标签不会被服务器解析,会直接输出原文本,导致CSS的URL无效:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>核对资源文件实际存放位置
你在spring-servlet.xml里配置的location="/WEB-INF/resources/",意味着CSS文件必须实际存放在项目的WEB-INF/resources/css/目录下,要确认plugins.css和style.css确实在这个路径里,路径大小写也要对应(Windows不区分大小写,但Linux服务器会区分)。检查spring-servlet.xml的命名空间完整性
要确保配置文件已引入Spring MVC的命名空间,否则<mvc:resources>标签不会生效:<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 其他配置代码 --> <mvc:resources location="/WEB-INF/resources/" mapping="/resources/**"/> </beans>确认DispatcherServlet的映射配置
在web.xml中,DispatcherServlet的<url-pattern>要设置为/,这样它才能处理所有资源请求(包括/resources开头的CSS请求);如果是*.jsp这类映射,会导致资源请求无法被Spring MVC处理:<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>验证生成的HTML URL是否正确
打开浏览器开发者工具,查看页面生成的HTML源码,检查<link>标签的href属性是否为有效路径(比如/项目上下文路径/resources/css/style.css);如果显示的是<c:url...>原文本,那就是JSTL标签未生效的问题。
内容的提问来源于stack exchange,提问作者Aung Thant Zin

