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

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

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

首先看一下springDispatcherServlet 的配置

	
		springDispatcherServlet
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath:springmvc.xml
		
		1
	

	
	
		springDispatcherServlet
		/
	

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

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

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

	

	

起作用的是 

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

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

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

    
        default
        org.apache.catalina.servlets.DefaultServlet
        
            debug
            0
        
        
            listings
            false
        
        1
    


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

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

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


你可能感兴趣的:(spring,mvc,java,Java,Web,学习笔记)