Spring mvc中不能引入js等静态文件问题的解决方案

本文介绍如何解决SpringMVC中静态资源加载失败的问题,通过配置<mvc:default-servlet-handler/>来区分处理静态资源请求与动态请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

No mapping found for HTTP request with URI [/.../script/jquery-3.1.0.min.js] in DispatcherServlet with name 'springDispatcherServlet'

分析一下为什么会有这样的问题:

首先看一下springDispatcherServlet 的配置

	<servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- Map all requests to the DispatcherServlet for handling -->
	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

这里的url-pattern 配置是/  所以SpringMVC 会捕获WEB 容器的所有请求,包括静态资源的请求,SpringMVC会将他们当作一个普通请求去找对应的处理器,因找不到导致了报错

但是你去修改这个url-pattern 配置又不符合 REST资源URL的风格,因为REST 是不希望出现带.html 或者.do 之类的后缀,所以只能另寻途径

打开SpringMVC 的配置文件,添加以下两个配置

	<mvc:default-servlet-handler />

	<mvc:annotation-driven></mvc:annotation-driven>

起作用的是<mvc:default-servlet-handler /> 

default-servlet-handler 将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler, 它会对进入 DispatcherServlet 的请求进行筛查, 如果发现是没有经过映射的请

求, 就将该请求交由 WEB 应用服务器默认的Servlet 处理. 如果不是静态资源的请求,才由 DispatcherServlet 继续处理

一般 WEB 应用服务器默认的 Servlet 的名称都是 default.

    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>


若所使用的 WEB 服务器的默认 Servlet 名称不是 default,则需要通过 default-servlet-name 属性显式指定

这里还需要注意的是静态资源文件的位置,静态资源需要放在WebContent 目录下,如果放在WebContent /WEN-INF 目录下,就算配置了上述配置,那也会出现404 错误,而

且这时候Tomcat 会由于上述配置的原因不发出警告的


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值