spring mvc
1、什么是Spring的MVC框架?
Spring配备构建Web应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,Spring的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。
Spring mvc是一个基于mvc的web框架。Spring mvc是Spring框架的一个模块,Spring mvc和Spring无需通过中间整合层进行整合。
mvc | 解释 |
---|---|
m | 模型 |
v | 视图 |
c | 控制 |
2、 如何启用注解
在spring的xml配置中添加<mvc:annotation-drivern>
即可
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- 注解扫描 -->
<context:component-scan base-package="club.sscai.annotation"/>
<!--使用mvc注解声明 -->
<mvc:annotation-driven/>
<!-- 不使用mvc注解声明则要注入以下两个bean
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
3、 Spring MVC的请求流程:
- 第一步:发起请求到前端控制器(DispatcherServlet)
- 第二步:前端控制器请求HandlerMapping查找Handler可以根据xml配置、注解进行查找
- 第三步:处理器映射器HandlerMapping向前端控制器返回Handler
- 第四步:前端控制器调用处理器适配器去执行Handler
- 第五步:处理器适配器去执行Handler
- 第六步:Handler执行完成给适配器返回ModelAndView
- 第七步:处理器适配器向前端控制器返回ModelAndView。ModelAndView是springmvc框架的一个底层对象,包括 Model和view
- 第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
- 第九步:视图解析器向前端控制器返回View
- 第十步:前端控制器进行视图渲染。视图渲染将模型数据(在ModelAndView对象中)填充到request域
- 第十一步:前端控制器向用户响应结果
4、总结
spring mvc 是spring servlet的进化版,基于spring有效的进行层级控制,增加流程控制,其思想目前还在使用