接上一篇:springMVC跳转和传值
1. 静态资源
- 静态资源:就是html文件,js文件,css文件,图片文件
- 静态文件没有url-pattern,所以默认是访问不到的,如果没有springMVC的配置文件web.xml中的DispatcherServlet中的url-pattern,我们是可以访问,
- 如上图可以看到url-pattern为“/”
- 如果没有这个servlet配置,tomcat中有一个全局的servlet:
org.apache.catalina.servlets.defaultServlet - 它的url-pattern也是/,所以如果每个项目有不能匹配的静态资源,有这个Servlet来处理就可以
- 但是现在我们SpringMVC中DispatcherServlet中,也就是上面图片里的配置也采用了“/”作为url-parttern,它把这个“/”给占下了,会导致Tomcat全局的那个servlet不能再处理静态资源
- 这个DispatcherServlet的servlet只会去找controller的路径,不会找静态资源
所以我们在这种配置下的springMVC项目中,访问静态资源,例如hello.html文件,会报404,运行结果如下
1.1 解决方案1既然是由于DispatcherServlet的url-pattern的“/”导致的,我们可以直接把“/”改为其他的路径,如后缀的形式:*.xmq,这种写法的意思是,以后url以.xmq结尾的controller,都可以被我们的DiapatcherServlet处理
改DispatcherServlet的url-pattern
后再次访问静态资源hello.html,发现可以访问到了
1.2 解决方案2以后我们Tomcat运行,访问路径要这样写:访问http://localhost:8080/data/test.xmq,即以.xmq结尾
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
>
<context:component-scan base-package="com.lyx"/>
<mvc:annotation-driven>mvc:annotation-driven>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/">property>
<property name="suffix" value=".jsp">property>
bean>
<mvc:default-servlet-handler/>
beans>
该行代码:
,这个访问路径是可以匹配所有请求的意思,但是优先级最低,只有所有路径都匹配后,请求才会转向"/**",
这个handler会将请求转到tomcat中名为default的Servlet,从而就可以访问到静态资源了
在mvc.xml文件中添加如下代码
- 把html、css文件放在static/。。/目录下统一路径
<mvc:resources mapping="/html/**" location="/static/"/>
mapping: 映射两个*,表示映射指定路径下所有的URL,包括子路径
*代表下面的资源
**代表下面或者所有的子目录
location:本地资源路径
这样如果有访问/images或者/js或者/css路径下面的资源的时候,spring就不会拦截了
Tomcat运行,访问路径为http://localhost:8080/html/hello.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)