Spring MVC—Spring MVC概述

本文介绍了Java Web的发展历史,重点讲解了Spring MVC框架。Spring MVC是基于Spring的Web开发模块,采用MVC设计模式,使得模型、视图和控制器职责分明,提高应用的可扩展性和可维护性。文章详细阐述了Spring MVC的工作流程,包括DispatcherServlet的作用、HandlerMapping和HandlerAdapter的配合,以及视图解析。此外,还提及了Spring MVC的拦截器机制和与Spring的关系,强调了它们在容器管理及对象注入方面的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


————————————————————————————————

Java web的发展历史

一.Model I和Model II

1.Model I开发模式

Model1的开发模式是:JSP+JavaBean的模式,它的核心是JSP页面,在这个页面中,Jsp页面负责整合页面和JavaBean(业务逻辑),而且渲染页面,它的基本流程如下:
在这里插入图片描述
这样的设计模式到这一个jsp页面负责了视图的展示和业务流程的控制高度耦合的结果是Jsp代码十分复杂,后期维护困难!

2.Model II开发模式

在Model II的模式下。利用jsp页面、servlet和JavaBean组件分工协作共同完成系统的所有任务。其中jsp负责数据显示逻辑任务,servlet负责程序的流程控制任务,JavaBean负责处理业务逻辑任务。它的基本流程如下:
在这里插入图片描述

Model2:相对于Model1来说,职责分工更为明确,在Model1的基础上,抽取了Servlet层,体现了一个分层的思想,适合大型的项目开发!(当时的评判标准是适合大型项目开发的,现在看起来已经过时了!

二. MVC模式

Spring mvc是基于Spring的一个模块,专门做web开发,可以理解为是Servlet的升级
在Spring MVC框架当中,Controller替代Servlet担负控制器的职能,
M:指model:模型层, 指工程当中的Java Bean,作用是处理数据
Java Bean分两类:
一类是实体类Bean:专门存储业务数据的
一类为业务处理Bean:指Servlet或Dao对象,专门处理业务逻辑和数据
V:View,视图层, 指项目当中的html或jsp等页面,作用是与用户进程交互,展示数据
C:Contoller,控制层, 指工程当中的servlet,作用是接受请求和响应数据
MVC思想不是那个语言所特有的设计模式,也不是web应用所特有的思想,而是一种规范。
MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器), 这三个部分以最少的耦合协同工作,从而提高了应用的可扩展性和可维护性。

SpringMVC 的工作原理和流程

浏览器的请求首先会经过 SpringMVC 里面的核心控制器 DispatcherServlet,它负责对请求进行分发到对应的 Controller。

Controller 里面处理完业务逻辑之后,返回 ModeAndView 对象 。然后 DispatcherServlet 寻找一个或者多个 ViewResolver 视图解析器,找到ModeAndView 指定的视图,并把数据显示到客户端

Spring MVC的入口函数也就是前端控制器 Dispatcherservlet的作用是接收请求,响应结果。

流程说明:

  1. 客户端(浏览器)发送请求,直接请求到Dispatcherservlet。

  2. Dispatcherservlet根据请求信息调用HandlerMapping,解析请求对应的 Handler。

  3. 解析到对应的Handler(也就是我们平常说的contro11er控制器)后,开始由HandlerAdapter适配器处理。

  4. HandlerAdapter会根据Handler来调用真正的处理器开处理请求,并处理相应的业务逻辑。

  5. 处理器处理完业务后,会返回一个(Mode1Andview对象,Mode1是返回的数据对象,view是个逻辑上的view 。

  6. viewResolver会根据逻辑view查找实际的view 。

  7. Dispaterservlet把返回的Model传给view(视图渲染)。

  8. 把view返回给请求者(浏览器)

springmvc 的拦截器

Spring的处理程序映射机制包括处理程序拦截器,当你希望将特定功能应用于某些请求时,例如,检查用户主题时,这些拦截器非常有用。拦截器必须实现org.springframework.web.servlet包的
HandlerInterceptor。此接口定义了三种方法:

  1. preHandle:在执行实际处理程序之前调用。
  2. postHandle:在执行完实际程序之后调用。
  3. afterCompletion:在完成请求后调用。

Spring和SpringMVC的区别

首先 springmvc和spring它俩都是容器,都是管理bean对象的地方,springmvc就是管理controller对象的容器,spring就是管理service和dao的容器。所以我们在springmvc的配置文件里配置的扫描路径就是controller的路径,而spring的配置文件里自然配的就是service和dao的路径。

其次, spring容器和springmvc容器的关系是父子容器的关系。spring容器是父容器,springmvc是子容器。在子容器里可以访问父容器里的对象,但是在父容器里不可以访问子容器的对象,说的通俗点就是,在controller里可以访问service对象,但是在service里不可以访问controller对象。Spring为简化我们的开发工作,封装了一系列的开箱即用的组件功能模块,包括:

Spring JDBC 、Spring MVC 、Spring Security所以这么看的话,所有的bean,都是被spring或者springmvc容器管理的,他们可以直接注入。然后springMVC的拦截器也是springmvc容器管理的,所以在springmvc的拦截器里,可以直接注入bean对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值