我正在尝试将Spring MVC与我现有的应用程序集成。现有应用程序的上下文根目录为PORTAL
,这是我在web.xml
中的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>
一切正常,我可以通过Spring MVC访问页面。页面从Controller
获取数据,但页面不加载css,img和js文件
应用程序文件夹结构
src
webapps
-css
-img
-js
-WEB-INF
--jsp
JSP
<link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>
<link rel="stylesheet" type="text/css" href="css/poc.css"/>
<script src="js/jquery.js"></script>
<script src="js/bootstrap.js"></script>
错误
No mapping found for HTTP request
with URI [/PORTAL/css/bootstrap.css] in DispatcherServlet with name 'spring'
答案 0 :(得分:2)
由于Spring MVC在URL模式上工作,并且每个来自客户端的图像和资源请求都是单独的请求,所以Spring正在寻找“/bootstrap.css”的匹配模式来识别是否有任何可用于此模式的服务。
并且没有针对此映射的资源,这就是您收到此错误的原因。
你可以说Spring这些是我的资源,如果请求附带了提到的URL,则不会进行任何映射查找。
将以下行放在spring-servlet.xml文件中。
<mvc:resources mapping="/PORTAL/css/" location="/PORTAL/css/" cache-period="0" />
这将帮助您摆脱CSS加载错误。但js和图像的问题仍然存在, 因此,请尝试将所有资源保存在一个资源文件夹中,并提供如下所示的映射,
<mvc:resources mapping="/resources/**" location="/resources/" cache-period="0" />
另外,在xml文件中导入上面的xsd,
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
希望这会有所帮助。
答案 1 :(得分:0)
在引用ContextPath
和js
文件时,您遗漏了css
。
如下所述添加资源引用
<script src="${pageContext.request.contextPath}js/jquery.js"></script>
答案 2 :(得分:0)
对我来说,问题是你将SpringDispatcherServlet映射到所有东西(<url-pattern>/</url-pattern>
)。您可以将其映射到只有一种类型的资源,然后让服务器为其他类型提供服务。示例:
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
然后,所有css,图像,视频,applet jar等将由服务器直接提供,而完成.htm
的网址将由Spring MVC提供。
如果需要,还可以为Dispatcher servlet定义多个servlet映射。