1.SpringMVC概述
•Spring 为展现层提供的基于 MVC 设计理念的优秀的 •Web 框架,是目前最主流的 MVC 框架之一
•Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架
•Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口。
•支持 REST 风格的 URL 请求
•采用了松散耦合可插拔组件结构,比其他 MVC 框架更具
扩展性和灵活性
2.SpringMVC的运行流程。
#
1.我们会发一个请求,我们看请求能不能发到我们在web.xml文件中配置的SpringDispatcherServlet。
2.然后看SpringMVC中有没有对应的映射。就是我有没有用@RequestMapping映射过
2.1.如果要是没有映射过,还要来看有没有配置<mvc:default-servlet-handler />.如果这个还没有配置,控制台打印说没有对应的映射,同事给一个404页面
2.2.如果有,则去找目标资源。
3.如果SpringMVC中有对应的映射,这个时候会有HandleMapping获取HandlerExecutIonChain对象。
4.然后获取HandlerAdapter对象。
5.调拦截器方法
6.调用目标Handler的目标方法得到ModelAndView对象
7.调用拦截器的PostHandler方法。这个时候我们要看调用目标方法时是不是有异常,要是有,则用异常解析器去解析这个异常,得到一个新的ModelAndView对象。
8.用视图解析器去解析对象得到实际的View
9.渲染视图,调用拦截器的afterCompletion方法。
3.SpringMVC的配置。
步骤:
1.加入jar包
commons-logging-1.1.3.jar
spring-aop-4.0.0.RELEASE.jar
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar
2.在web.xml中DispatcherServlet.:DispatcherServlet 默认加载 /WEB- INF/.xml 的 Spring 配置文件, 启动 WEB 层的 Spring 容器。可以通过 contextConfigLocation 初始化参数自定
义配置文件的位置和名称
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置 DispatcherServlet 的一个初始化参数: 配置 SpringMVC 配置文件的位置和名称 -->
<!--
实际上也可以不通过 contextConfigLocation 来配置 SpringMVC 的配置文件, 而使用默认的.
默认的配置文件为: /WEB-INF/<servlet-name>-servlet.xml
-->
<!--
<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>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3.加入SpringMVC的配置文件 dispatcherServlet-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="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-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<!-- 配置自定扫描的包 -->
<context:component-scan base-package="com.springmvc"></context:component-scan>
<!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 配置视图 BeanNameViewResolver 解析器: 使用视图的名字来解析视图 -->
<!-- 通过 order 属性来定义视图解析器的优先级, order 值越小优先级越高 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
<property name="order" value="100"></property>
</bean>
<!-- 配置国际化资源文件 -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="i18n"></property>
</bean>
<!-- 配置直接转发的页面 -->
<!-- 可以直接相应转发的页面, 而无需再经过 Handler 的方法. -->
<mvc:view-controller path="/success" view-name="success"/>
<!-- 在实际开发中通常都需配置 mvc:annotation-driven 标签 -->
<mvc:annotation-driven></mvc:annotation-driven>
</beans>