官方文档: springmvc官方文档 ;
编程帮文档: 编程帮 ;
源码解析 : java知音 .
MVC设计模式一般指MVC框架.M<model>数据模型,V<view>视图层,C<controller>控制器,MVC的主要目的是实现M和V的分离,结构清晰;
- 视图层<view> : 格式化数据并呈现给用户,主要有数据展示,用户交互,数据验证,界面设计等功能;
- 控制层<controller> : 接收并转发请求,对请求做好处理后,指定视图并将响应结果发送给客户端;
- 数据模型层<model> : 负责数据逻辑(业务规则)的处理和实现数据操作(数据库中存取数据).
Spring MVC 主要由Dispatcher Servlet,处理器映射,处理器(控制器),视图解析器,视图组成.俩核心:
- 处理器映射 : 选择使用某个控制器来处理请求;
- 视图解析器 : 选择响应结果应如何渲染.
运行原理:
- 1,http请求 : 客户端请求提交到DispatcherServlet;
- 2,寻找处理器 : 由DispacherServlet控制器查询一个或多个HandlerMapping,找到处理请求的controller;
- 3.调用处理器 : DispatcherServlet将请求提交到Controller;
- 4 & 5,调用业务处理和返回结果 : Controller调用业务逻辑处理后,返回ModelAndView;
- 6 & 7,处理视图映射并返回模型 : DispatcherServlet查询一个活多个ViewResoler视图解析器,找到ModelAndView指定的视图.
- 8,Http响应 : 视图负责将结果显示到客户端.
mvc四个主要接口:
- DispatcherServlet接口 : spring提供的前端控制器,统一分发请求.借助spring提供的HandlerMapping接口将请求定位到具体的controller;
- HandlerMapping接口 : 完成client请求到controller的映射;
- Controller接口 : 处理client请求,返回ModelAndView对象给DispatcherServlet前端控制器;
- ViewResolver接口 : 视图解析器,在web应用中查找view对象,将对应结果渲染给客户端.
web.xml配置
<servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置springMVC需要加载的配置文件 spring-dao.xml,spring-service.xml,spring-web.xml Mybatis - > spring -> springmvc --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-*.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <!-- 默认匹配所有的请求 --> <url-pattern>/</url-pattern> </servlet-mapping>
spring-web.xml
<!-- 配置SpringMVC --> <!-- 1.开启SpringMVC注解模式 --> <!-- 简化配置: (1)自动注册DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter (2)提供一些列:数据绑定,数字和日期的format @NumberFormat, @DateTimeFormat, xml,json默认读写支持 --> <mvc:annotation-driven /> <!-- 2.静态资源默认servlet配置 (1)加入对静态资源的处理:js,gif,png (2)允许使用"/"做整体映射 --> <mvc:default-servlet-handler/> <!-- 3.配置jsp 显示ViewResolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 4.扫描web相关的bean --> <context:component-scan base-package="com.xxx.xxx.web" />
常用注解 : @Controller , @RequestMapping , @Resource , @Autowired , @ModelAttribute , @SessionAttributes ,
@PathVariable , @RequestParam , @ResponseBody , @Repository , @Component
一句话总结 : SpringMVC是目前最好的实现了MVC设计模式的框架,能与spring很好的衔接,是对MVC流程的进一步封装,屏蔽掉很多底层代码,以servlet为处理器替换传统的filter,开放出接口,简化开发者基于MVC模式的Web开发,让代码实现更简单~