Spring MVC -- 去掉静态资源的拦截

时间:2024-08-25 17:05:38
  <!-- springmvc的前端控制器 -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- contextConfigLocation不是必须的
如果不配置contextConfigLocation
springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml" --> <init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
/ 表示拦截所有的请求,包括静态资源 

注意:当前端使用jsp java后端模板引擎时,/  不会匹配到 .jsp ( 即 不会进入到项目中dispathservlet中,不会拦截 。jsp的请求,因为 jsp 在被访问时会解析,生成servlet,然后编译servlet,之后会被编译成为一个.class文件,实际是一个servlet在运行,因此可由web服务器直接访问。)

/* 会匹配到。jsp的路径。即 会匹配项目所有路径。
<url-pattern>/</url-pattern> --表示拦截所有的请求,包括静态资源

2、去静态资源拦截有三种方式

1、在web.xml中配置映射
2、在springMVC.xml中配置映射
3、在springMVC.xml中添加静态资源默认Servlet处理

3、方式一

在web.xml中配置映射

     <!-- 对静态资源的配置 -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.ico</url-pattern>
<url-pattern>/img/*</url-pattern>
<url-pattern>/fonts/*</url-pattern>
<url-pattern>/font/*</url-pattern>
</servlet-mapping>
Tomcat, Jetty, JBoss 自带的默认Servlet的名字 -- "default"
WebLogic 自带的 默认Servlet的名字 -- "FileServlet"
WebSphere 自带的 默认Servlet的名字 -- "SimpleFileServlet"

可以根据自身情况,来配置映射

注意: 请将它放在所有Servlet的最前面(为了让它最先匹配),这样的话性能上应该比较好


4、方式二

在springMVC.xml中添加静态资源的映射

     <!-- 资源映射 -->
<mvc:resources location="/WEB-INF/css/" mapping="/css/**"/>
<mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>

根据实际情况自行配置


5、方式三

在springMVC.xml中添加静态资源默认Servlet处理

 <mvc:default-servlet-handler/>

 <!-- 也可以自行手动配置,自定义servlet -->
<mvc:default-servlet-handler default-servlet-name="myDefaultServlet"/>

注意: 这种方式对spring版本必须要求3.0.5及以上