在Web开发中有两种主要的结构,称为模式一(ModeI)和模式二(Mode II)
8.1 WEB开发模式一
Mode I是指在开发中将显示层、控制层、数据层的操作统一交给JSP或者是JavaBean来进行处理,
优点
- 架构简单
缺点
- JSP职责过重,不利于维护
Mode I的处理情况分为两种
完全JSP模式
- 用户发出的请求(request),交给JSP页面进行处理,为了开发快速与便利,通常都会将显示层(PresentationLayer)和逻辑运算层(Business Logic Layer)全部都写在JSP页面中
使用JSP + JavaBean模式
- 将显示操作都写入JSP页中,而业务层都写成JavaBean形式,将程序代码封装成组件,这样JavaBean将负责大部分的数据处理。例如执行数据库操作等(类似于DAO),再将数据处理后的结果,返回至JSP页上显示
Model 1 模型图
8.2 WEB开发模式二
Mode II中所有的开发都是以Servlet为主体展开的,由Servlet接收所有的客户端请求,之后根据请求调用相应的JavaBean,并将所有的显示结果交给JSP完成,最典型的就是JSP + Servlet + Javabean的模式,也就是俗称的MVC设计模式,
优点
- 提高的代码的复用率与项目的扩展性
缺点
- 增加了系统结构和实现的复杂性
Model 2 模型图
8.3 Spring MVC介绍
Spring MVC是Spring框架的一个模块,MVC是一种设计模式,将应用程序的输入、处理和输出分为三个核心层:模型层、视图层、控制层
- 封装数据处理数据的模型(Model)
模型所表示的是具体做工作的部分,并对应用所要解决的实际问题进行建模,即保存数据的状态
- 负责展示数据的视图(View)
视图是模型的表示,用户可以看到视图并与之交互,即显示页面
- 控制程序流转的控制器(Controller)
控制器是应用中对用户命令做出响应的部分,即取得表单数据、调用业务逻辑、转向指定的页面等
8.4 Spring MVC主要组件
1.前端控制器 (DispatcherServlet)
本质上是一个Servlet中转站,接收请求后根据配置到相应的Handler中进行处理,调用处理器映射器获取数据和视图后响应结果
2.处理器映射器(HandlerMapping)
根据请求的URL来查找Handler,将访问路径和对应的Handler存储为映射关系
3.处理器适配器(HandlerAdapter)
让固定的Servlet处理方法调用灵活的Handler来进行处理,找到真正的Handler执行请求响应和对应的Handler信息,将结果即Model和View返回给前端控制器
5.视图解析器(ViewResolver)
将视图名称映射到真正的视图地址,即进行视图的解析,将View信息解析成真正的视图(View)
6.视图(View)
View接口的实现类支持不同的视图类型(JSP,Freemarker,PDF等),即将返回的Model数据填充到视图(View)中,渲染后的页面会呈现给用户
,
8.5 Spring MVC处理流程
在MVC设计模式中,最关键的部分就是要使用RequestDispatcher接口,因为显示内容都是通过此接口保存到JSP页面上进行显示的
简化流程
- 将URL映射到Java类或方法
- 封装用户提交的数据
- 处理用户请求,调用相关的业务处理,封装响应数据
- 将响应的数据进行渲染和呈现
具体流程
1.客户端浏览器向前端控制器(DispatcherServlet)发出请求
2.前端控制器(DispatcherServlet)接收请求后根据配置到相应的Handler中进行处理,调用处理器映射器(HandlerMapping)获取数据和视图后响应结果
3.理器映射器(HandlerMapping),根据请求的URL来查找后端处理器(Handler),将访问路径和对应的Handler存储为映射关系,返回处理器对象(Handler)和处理器拦截器对象(HandlerInterceptor)给前端控制器(DispatcherServlet)
4.前端控制器(DispatcherServlet)拿到信息后调用处理器适配器(HandlerAdapter),找到真正的Handler执行请求响应和对应的Handler信息,将结果即Model和View返回给处理器适配器(HandlerAdapter)
5.处理器适配器(HandlerAdapter)将Model和View对象返回给前端控制器(DispatcherServlet)
6.前端控制器(DispatcherServlet)在拿到Model和View对象之后发给视图解析器(ViewResolver)
7.视图解析器(ViewResolver)将Model和View对象进行解析,生成成真正的视图对象(View),将View对象返回给前端控制器(DispatcherServlet)
8.前端控制器(DispatcherServlet)拿到View对象后,根据解析结果调用具体的视图,即将返回的Model数据填充到视图(View)中,渲染好的JSP页面会呈现给用户
8.6 Spring MVC的HTTP请求方法
注解 | HTTP请求方法 |
@GetMapping | POST |
@PostMapping | GET |
@PutMapping | PUT |
@PatchMapping | PATCH |
@DeleteMapping D | ELETE |
@RequestMapping | 可用于以上五种请求,需在method属性中指定 |