深入浅出Spring MVC

知识先知-MVC模型

MVC模型: 包含了 Model(模型),View(视图),Controller(控制器);放在三层架构中,属于表现层模型。其中,Model 通常是的就是 JavaBean。View 通常指的是 JSP 或者 HTML(展示资源的数据)。Controller 通常指的是 Servlet 或者 Filter,以及框架中封装的各类控制器。

资源:

  • 静态资源:html、css、JavaScript等
  • 动态资源:jsp、servlet、filter等

JavaBean: 一种 Java 语言写成的可重用组件。这里容易把 JavaBean 和 java 实体对象混为一体;其实前者是包含后者的,正是因为后者具有 JavaBean 可重用的特性和相关的属性,所以再开发过程中,我们经常把 java 实体对象成为 JavaBean 对象。

前因后果-MVC表现层模型

1.在很久以前项目开发中采用一种称为 Model1 的模型,只有 jsp 和JavaBean 两部分组成。

  • 优点:结构简单,开发效率高。
  • 缺点:JSP 兼顾于展示数据(数据展示)和处理数据(逻辑处理),同时由于逻辑代码写在 JSP 中,导致代码重用性也很低,进而维护极为不便;JavaBean 此时充当了数据持久层、业务处理层、实体层的角色。

2.在 Model1 的基础上,慢慢演化成 Model2,由 servlet 和 jsp 以及JavaBean 三部分组成。

  • 优点:将处理请求和展示数据进行分离,此时 JSP 专注于展示数据,处理请求交给控制器负责,大大提高了代码的重用性和维护性。其实这便是 MVC 模型的原型,慢慢进一步演化成 MVC 模型。 但是在具备如此的优势的前提下,具有不可避免的弊端。
  • 缺点:JSP 界面负责翻译 Java 代码,同时需要编译成 .class 文件才可以执行,然后展示,相比于浏览器解析 HTML,相应速度慢。
    异步交互不方便,同时在 JavaScript 的请求数据(逻辑)和展示数据(元素填充)交织在一起,同样没有将数据渲染和逻辑处理分离。

目前,前端主流的框架 Angualr,VUE,React 等采用 MVVM 模型,改良了展示数据的部分。

过程分析-SpringMVC

我们知道的是存在一个 Controller(底层Servlet),帮助我们处理用户发送到的请求。
SpringMVC执行过程
1.按照执行流程分析,首先是通过 FrontController(前端控制器)中的 DispatcherServlet,帮助接收用户发送的请求;
2.然后找到 RequestMappingHandlerMapping(处理器映射器),确定哪个类,哪个方法,其实在服务端启动的时候,处理器映射器便开始将 @requestMapping 注解和控制器方法进行一一对应,这里是在已经对应的 Map 中确定那一个键值对;
3.然后再由前端控制器,交由处理器适配器,执行具体的方法。
这两个处理器,一般我们都直接进行配置,代码块,也可以进行单独配置。

一、整体配置,简洁明了
<mvc:annotation-driven></mvc:annotation-driven> 帮助我们在容器中添加很多的bean
二、单独配置,直观可见
// 处理器映射器
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
// 处理器适配器
<bean id="requestMappingHandlerAdapter"
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingH
andlerAdapter"></bean>

4.最后在处理完,进行数据显示的时候会用到视图解析器,这个配置需要单独进行配置。

解析:模板视图对象套用底层模板,经过视图解析器,生成不同类型的视图,JSP 就是其中的一种,例如 JSON 视图、XML 视图等;视图解析器在整个过程中将逻辑视图转为物理视图,所有的视图解析器都必须实现 ViewResolver 接口。

但是针对于现在前后端分离的项目,如果无需进行页面跳转的话,也就是Ajax 的异步请求,通过 json 数据交互时,可以不配置任何视图解析器。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值