应用系统三层架构:

  • C/S架构:客户端/服务器架构

  • B/S架构:浏览器/服务器架构

Java开发的大多是web应用,是基于B/S架构开发的。JavaEE指定了一套规范,去进行BS结构的处理,这套规范就是Servlet。

B/S架构中,应用系统标准的三层架构为: 表现层业务层持久层

表现层(Web层)
  • 负责接收客户端请求,向客户端响应结果,通常客户端使用http协议请求 web,web层需要接收 http请求,完成http响应。
  • 表现层包括展示层和控制层:控制层负责接收请求,展示层负责结果的展示。
  • 表现层依赖业务层,接收到客户端请求一般会调用业务层进行业务处理,并将处理结果响应给客户端。
  • 表现层的设计一般都使用 MVC 模型。 MVC 是表现层的设计模型,和其他层没有关系
业务层 (Service层)
  • 它负责业务逻辑处理,和我们开发项目的需求息息相关。web层依赖业务层,但是业务层不依赖Web层。
  • 业务层在业务处理时可能会依赖持久层,如果要对数据持久化需要保证事务一致性。 (事务应该放到业务层来控制)
持久层 (dao 层)
  • 负责数据持久化,包括数据层即数据库和数据访问层,数据库是对数据进行持久化的载体,数据访问层是业务层和持久层交互的接口;业务层需要通过数据访问层将数据持久化到数据库中。
  • 持久层就是和麵库交互,对麵库表进行曽删改査的。

MVC 设计模式

MVC是模型(model)-视图(view)-控制器(controller)的缩写,是一种用于设计编写Web应用程序表现层
模式。

MVC设计模式的三大角色:

Model (模型)

模型包含业务模型和数据模型,数据模型用于封装数据,业务模型用于处理业务。

View (视图)

​ 通常指的就是我们的jsp或者html。作用一般就是展示数据的。
​ 通常视图是依据数据模型创建的。

Controller (控制器)

​ 是应用程序中处理用户交互的部分。作用一般就是处理程序逻辑的。

Spring MVC

Spring MVC是一种基于MVC设计模型的请求驱动类型的轻置级Web框架,属于Spring FrameWork的后续产品,已经融合在Spring Web Flow里面Spring 框架提供了构建Web应用程序的全功能MVC模块。

Spring MVC 与 Spring

Spring MVC 全称为Spring Web MVC,它是Spring家族中Web模块的一个重要成员。

SpringMVC六大组件

MVC组件:前端控制器处理器视图

三大组件:处理器映射器处理器适配器视图解析器

需要开发的组件:处理器、视图(前后端分离后,后端不需要开发)

DispatcherServlet : 前端控制器

用户请求到达前端控制器,它就相当于mvc模式中的C , dispatcherservlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherservlet的存在降低了组件之间的耦合性。

Handler : 处理器

Handler是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。

由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。

View : 视图

Spring MVC框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。最常用的视图就是jsp。

通过页面标签或页面模版技术将模过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

HandlerMapping:处理器映射器

HandlerMapping负责根据用户请求找到Handler处理器,spring MVC提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

HandlerAdapter:处理器适配器

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

View Resolver:视图解析器

View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

web应用的访问流程

Spring MVC底层是通过servlet实现的。

Servlet实例由Servlet容器(tomcat、jboss、jetty)产生。

Servlet实例什么时候产生?
一种是第一次访问一个请求的时候,产生对应的Servlet对象,只会产生一次。
另一种需要针对Servlet标签特殊配置,就会在Tomcat启动的时候,产生该实例。

[Servlet] (https://www.cnblogs.com/kuotian/p/13141784.html)

客户端访问请求:http://xxx:8080/kkb/hello
域名/ip:确定哪台服务器 --- xxx:8080
应用名称:确定哪个应用 --- kkb

请求字符串:需要根据web.xml中的配置找到相应的类去处理 --- hello

spring MVC处理请求的流程是什么?

posted on 2020-06-16 18:28  kuotian  阅读(2040)  评论(0编辑  收藏  举报