# Spring-MVC需要注意的点
# tomcat下的web.xml中的重要配置
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<!-- The mapping for the default servlet -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- The mappings for the JSP servlet -->
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
# DefaultServlet
- 用来匹配servlet
- 用来匹配静态资源
# JspServlet
- 用来匹配jsp
- 用来匹配jspx
# springMVC工程下的web配置
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath: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>
# 匹配servlet请求的选择
- / : 表示拦截所有请求(包括servlet以及静态资源),但是不会拦截jsp页面
- /*:表示拦截所有请求,拦截jsp页面
- 在springmvc中一般不会去拦截jsp,所以一般会选择使用 / 进行匹配
- 当使用 / 进行匹配时,静态资源就不能被正常访问了
# 解决使用 / 匹配,静态资源不能被访问的问题
# 1. 可以在web.xml中配置tomcat的DefaultServlet
<servlet>
<servlet-name>defaultServlet</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
</servlet>
<!-- 有多少种要访问的静态资源都需要在此配置,有一个没有配置,就访问不到 -->
<servlet-mapping>
<servlet-name>defaultServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>defaultServlet</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>defaultServlet</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
存在的问题:会造成配置文件配置了很多的静态资源后缀
# 2. 在springmvc的配置文件中增加以下配置
<!-- 此配置表示:我们自己配置的请求由controller来处理,不能请求的处理交由tomcat来处理 -->
<mvc:default-servlet-handler></mvc:default-servlet-handler>
存在的问题:这么配置会造成,我们自己的动态资源(controller)无法访问了
# 3. 解决动态(controller)资源无法访问的问题
在springmvc的配置文件中增加以下配置
<!-- 保证静态资源和动态请求都能够访问 -->
<mvc:annotation-driven></mvc:annotation-driven>
# springMVC的DispatcherServlet配置
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath: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>
# contextConfigLocation配置问题
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- <init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath: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>
如果contextConfigLocation不进行配置,那么默认路径在当前项目的 WEB-INF 的目录下,名称为 springmvc-servlet.xml
名称格式:[ DispatcherServlet 的 servlet-name ]-servlet.xml