一、Springmvc是什么
Springmvc是Spring家族中的一员,Spring是将现在开发中流行的组件进行组合而成的框架,它用于MVC的表现层开发,类似于struts2,Spring在开发层的作用如下图
![ea46dac04b8f9c7a572c0bbdac07735a.png](https://img-blog.csdnimg.cn/img_convert/ea46dac04b8f9c7a572c0bbdac07735a.png)
二、springmvc架构原理
![bfa8ea30ebc41c3a6507b1199d261904.png](https://img-blog.csdnimg.cn/img_convert/bfa8ea30ebc41c3a6507b1199d261904.png)
- 用户发送请求至前端控制器DispatcherServlet
- DispatcherServlet收到请求调用HandlerMapping处理器映射器查找Handler。
- 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
- DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
- HandlerAdapter调用处理器Handler
- Handler执行完成返回ModelAndView
- HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet
- DispatcherServlet将ModelAndView传给ViewReslover视图解析器,ViewReslover根据逻辑视图名解析View
- ViewReslover返回View
- DispatcherServlet对View进行渲染视图(即将模型数据填充至request域)。
- DispatcherServlet响应用户
- DispatcherServlet前端控制器(springmvc框架提供)作用:接收请求,响应结果有了前端控制器减少各各组件之间的耦合性,前端控制器相关于中央调度器。
- HandlerMapping 处理器映射器(springmvc框架提供)作用:根据url查找Handler,比如:根据xml配置、注解方式查找Handler
- HandlerAdapter处理器适配器(springmvc框架提供)作用:执行Handler不同类型的Handler有不同的HandlerAdapter,好处可以通过扩展HandlerAdapter支持更多类型的Handler
- Handler处理器(由程序员开发)作用:业务处理实现开发中又称为controller即后端控制器Handler的开发按照HandlerAdapter的接口规则去开发。Handler处理后的结果是ModelAndView,是springmvc的底层对象,包括 Model和view两个部分。
view中只包括一个逻辑视图名(为了方便开发起一个简单的视图名称)。
- ViewReslover视图解析(springmvc框架提供)作用:根据逻辑视图名创建一个View对象(包括真实视图物理地址)针对不同类型的view有不同类型的ViewReslover,常用的有jsp视图解析器即jstlView
- View视图(由程序员开发jsp页面)作用:将模型数据填充进来(将model数据填充到request域)显示给用户view是一个接口,实现类包括:jstlView、freemarkerView,pdfView...
三、Springmvc入门案例
- 3.1导入jar包
![9d98b19435efd1b4332bafc96252efb2.png](https://img-blog.csdnimg.cn/img_convert/9d98b19435efd1b4332bafc96252efb2.png)
- 3.2编写配置文件
在web.xml中编写配置信息
<!-- 跟配置servlet一样将.do结尾的servlet交给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>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- *.do表示只要以.do结尾的servlet交给DispatcherServlet处理 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
在src目录下或则自己创建一个config资源目录,创建springmvc.xml,引入如下约束
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.sprin