第三节:静态资源问题
一、静态资源访问问题
当我们在 JSP 页面中引入 CSS文件、JS 文件,但是却不能识别,这是为什么呢?
页面中引入资源:
// 引入的文件
<link rel="stylesheet" href="${pageContext.servletContext.contextPath }/css/index_work.css">
<script type="text/javascript" src="${pageContext.servletContext.contextPath }/js/jquery-1.8.2.min.js">script>
直接从浏览器地址栏访问 jQuery 文件:
http://localhost:8080/js/jquery-1.8.2.min.js
发现jQuery库文件不起作用:
控制台报错:
二、分析
为什么会有这样的问题? 优雅的 REST 风格的资源 URL 不希望带 .html 或 .do 等后缀,若将 DispatcherServlet 请求映射配置为 /,则 SpringMVC 将捕获 WEB 容器的所有请求,包括静态资源的请求,而此时 SpringMVC 会将他们当成一个普通的请求处理,因为找不到对应处理器将导致报错。三、解决方案
步骤一:在 SpringMVC 的配置文件中配置SpringMVC 的配置文件:
<mvc:default-servlet-handler/>
<mvc:annotation-driven />
四、关于 作用
<servlet>
<servlet-name>defaultservlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServletservlet-class>
<init-param>
<param-name>debugparam-name>
<param-value>0param-value>
init-param>
<init-param>
<param-name>listingsparam-name>
<param-value>falseparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
该标签属性 default-servlet-name 默认值是 "default",可以省略。
<mvc:default-servlet-handler/>
如果不是,需要指定:
<mvc:default-servlet-handler default-servlet-name="default"/>