我眼中的Spring MVC

来源:互联网 发布:什么牌子的口罩好 知乎 编辑:程序博客网 时间:2024/04/29 10:45

Spring MVC 是什么

Spring MVC 是应用于WEB应用程序 MVC架构的 C

Spring MVC 的特点是什么

首先说一下Spring MVC框架文档中的一句话  对扩展开放 对修改闭合

那么特点就来了  高扩展性  这是它最大的特点还有 友好的设计的结构,拦截器思想,参数绑定,允许其他MVC的实现等等  总的来就是简单易用

Spring MVC 有哪些核心类

在这里只是简单介绍一下有哪些类

1:DispatchServlet  前置控制器 - 核心处理器

2:HandlerMapping 处理器映射 - 找到处理请求的拦截器 类方法

3:HandlerAdapter 处理器适配器 - 针对请求处理的实现

4:HandlerExceptionReaolver 处理过程中出现的异常处理

5:ViewResolver 视图解析器 - 将视图映射到View类

6:LocaleResolver & LocaleContextResolver 地区解析  - 支持国际化

7:ThemeRosolver 视图的主题解析器

8:MultipartReaolver - 调用处理请求资源 - 文件上传中使用

9:FlashMapManager - FlashMap管理器 - 在两次请求中后需要重定向时使用

DispatcherServlet 的配置问题

这个类依赖的Bean 信息存放在org.springframework.web.servlet下的DispatcherServlet.properties文件中

当需要对其进行定制配置时 可以再此文件中进行调整

Spring MVC 的处理流程

请求 --> DispatcherServlet

1) DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE (上下文对象 - 别的组件可以用) -线程绑定

2) DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE 将地区解析器绑定到请求上

3) DispatcherServlet.THEME_RESOLVER_ATTRIBUTE 将主题解析器绑定到请求上

4) DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME 判断是否需要文件上传组件的绑定

5) 为该请求寻找一个合适的处理器

    如果找到就则与该处理器关联的执行链(前后处理器/控制器) 都会被执行 返回模型或视图的渲染

6) 如果是模型 --> 框架渲染相应的视图

    如果没有任何模型 会认为请求已经由处理链完成

在这个是在DispatcherServlet类中的处理流程 可以看出全部的实现是被直接或者间接的调用 然而在真正的处理请求的流程中却不仅如此

当DispatcherServlet 接收到请求之后 在做完参数绑定之后会使用HandlerAdapter类 (从注解中解析出信息与请求做匹配 会得到要使用哪一个Controller) - 适配器模式

然后是加载一些处理 比如绑定线程 地区信息等等

然后是加载HandlerMapping 找到对应的拦截器等来映射出执行链条

然后是HandlerExecutionChain这个类(执行链条)来执行 --> preHandle --> cantroller method --> posthandle --> afterConmpletion

产生一个ModleAndView (//Model //map  最后都会转换为 ModleAndView)

然后是交给ViewResolver 视图解析器

最后将视图返回给用户

Spring MVC 常用注解

@Controller 类/方法注解-声明是Controllerl类

@RestController 类/方法注解-声明是Controllerl类  省略了@RequestBody

@RequestMapping 方法/类注解-声明请求处理方法

@PathVariable 方法形参前  处理requet uri 部分 占位符 {} 中的数据

@RequestParam  绑定参数 单个

@RequestBody  处理request body部分的注解

@RequestHeader 处理request header部分

@CookieValue   获取Cookie

@SessionAttributes  设置Session

@ModelAttribute  处理数据绑定 实体

@ResponceBody   返回内容为指定的的格式





















原创粉丝点击