SpringMVC 无法访问WEB-INF下面的静态资源如js,css imag等等

时间:2024-05-19 14:43:26

Springmvc创建后无法访问WEB-INF下面的静态文件

出现这种情况一般是一下四种情况:

1.请检查web.xml文件,是否把静态资源拦截了:

SpringMVC 无法访问WEB-INF下面的静态资源如js,css imag等等

1、匹配顺序 
该标签处理客户端请求的顺序为: 
(1)完全匹配 
<url-pattern>/test/userList.action</url-pattern> 
完全匹配就是等值匹配,它是最先被匹配到的客户端请求。

(2)路径匹配 
<url-pattern>/*</url-pattern> 匹配根路径下的全部请求 
路径匹配类似于模糊匹配,对于/list、listInfo.do、checkInfo.action、index.jsp、abc.css、my.js等等url请求,都可以被匹配到。这种匹配的顺序排在完全匹配后面。 
(3)扩展名匹配 
<url-pattern>*.action</url-pattern>匹配全部action 结尾的请求 
<url-pattern>*.css</url-pattern> 匹配全部 css结尾的请求 

<url-pattern>*.js</url-pattern> 匹配全部 js结尾的请求 
<url-pattern>*</url-pattern> 不能用 * ,否则报错 
说明:这种匹配匹配在开发中用的比较多,但不能使用*代替,否则会报错。 
结论:容器会首先查找完全匹配,如果找不到,再查找目录匹配,如果也找不到,就查找扩展名匹配。

2、“/” 与 “/*” 的区别 
(1)<url-pattern>/</url-pattern> 
会匹配到 /toIndex 这种类型的 url ,不会匹配到模式为 *.jsp 这样的后缀型 url。 
(2)<url-pattern>/*</url-pattern> 
会匹配所有路径型的和后缀型的url。

2.请检查springnvc.xml配置文件 需要引入必要的配置信息

a.注册mvc驱动,让容器创建HttpMessageConverters-
   <mvc:annotation-driven/>
    <mvc:resources mapping="/js/**" location="/WEB-INF/js/"/>   //  location 指文件存放的位置 mapping指文件映射(访问路径)
b. 使用默认servlet响应静态文件-
<mvc:default-servlet-handler/>

SpringMVC 无法访问WEB-INF下面的静态资源如js,css imag等等

以上两种方法不要同时使用,推荐使用第一种。

3,检查对应的Jsp文件是否缺少头文件。

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

这个语句是用来拼接当前网页的相对路径的。

<base herf="...">从来表明当前页面的相对路径所使用的根路径,也就是项目名称

比如,页面内部有一个连接,完整的路径应该是 http://localhost:8080/Test/user/user_info.jsp
其中http://server/是服务器的基本路径,Test是当前应用程序的名字,那么,我的根路径应该是那么http://localhost:80/Test/。

<base href="<%=basePath%>">
用这个base,服务器就可以动态的将指定路径和页面的相对路径拼装起来,形成完整的路径。

  1.request.getSchema();可以返回当前页面所使用的协议,就是"http"

  2.request.getServerName();返回当前页面所在服务器的名字,就是上面例子中的"localhost"

  3.request.getServerPort();返回当前页面所在服务器的端口号,就是上面例子中的"8080"

  4.request.getContextPath();返回当前页面所在的应用的名字

此时文件路劲为   <script type="text/javascript" src="<%=basePath%>js/jquery-3.4.1.js"></script>

SpringMVC 无法访问WEB-INF下面的静态资源如js,css imag等等

4.文件的相对、绝对路径,文件名、路径等位置不对引起的。

等项目启动完毕,去访问对应的资源看能否获取,有时候在控制台不打印错误信息,我们也要去浏览器F12看看错误信息。

SpringMVC 无法访问WEB-INF下面的静态资源如js,css imag等等

资源能获取.