主要配置文件
1.WebContent/web.xml
- 配置SpringMVC核心控制器
<servlet>
<servlet-name>springDispatcherServlet</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>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- 配置编码过滤器(放在第一个过滤器):只有放在第一个才不会受到缓存的影响
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- HiddenHttpMethodFilter过滤器
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 参数说明
1.< param-name>的值得是< servlet-class>的属性,也可以是继承的或实现的类的属性(属性源码可通过Ctrl+T在类中查找)
2.< load-on-startup>表示加载顺序,数字越小优先级越高,数字的意思表示在类的启动前n秒加载
/ 表示只处理请求(常用于映射资源中,如访问Controller)
/* 表示处理所有内容(常用于过滤器中,可访问Controller和jsp)
<servlet>
<servlet-name>springDispatcherServlet</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>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2.SpringMVC核心配置文件
- 文件名组成
1.默认名称通过web.xml文件中servlet配置的
org.springframework.web.servlet.DispatcherServlet类的contextConfigLocation属性的值+"-servler.xml"组成文件名
2.自定义属性值作为文件名 - 加载扫描包:该包可作为资源请求的包被扫描,当发送一个请求时,会到该包中寻找是否有匹配项
<context:component-scan base-package="com.atguigu.controller"></context:component-scan>
- 视图解析器:根据返回的view视图名,拼接前缀(prefix)和后缀(suffix)组成完整的视图路径,通过转发或重定向到该视图中
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
- 配置静态资源访问:
1.由于DispatcherServlet请求映射配置为"/",SpringMVC将捕获Web容器所有的请求,包括静态资源的请求,但是Spring MVC会将它们当成一个普通请求处理,因此找不到对应处理器将导致错误
2.在springMVC核心配置文件中配置<mvc:default-servlet-handler />后,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理
3.配置<mvc:annotation-driven /> ,使得访问路径与方法的匹配可以通过注解配置
<mvc:default-servlet-handler/>
<!-- mvc注解驱动-->
<mvc:annotation-driven />
SpringMVC与Servlet的联系
当DefaultServlet所设置的的值和开发人员所配置的servlet的相同时(对应的也相同),以开发人员所配置的servlet优先。当客户端发送请求时,会先通过开发人员配置的DispatcherServlet处理请求,若在程序中找不到与该请求相对应的处理器,则交给DefaultServlet处理。