8:Spring MVC-Java Spring

85 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

在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请求方法
@GetMappingPOST
@PostMappingGET
@PutMappingPUT
@PatchMappingPATCH
@DeleteMapping DELETE
@RequestMapping可用于以上五种请求,需在method属性中指定