读书笔记-《Spring技术内幕》-计文柯(三):Spring MVC与We
来源:互联网 发布:数据定义语言包括哪些 编辑:程序博客网 时间:2024/06/06 19:52
一、SpringMVC做了什么?
1.使用SpringMVC(以及同类型框架)前:
回顾下,我们刚学完JavaWeb时是如何实现前后台数据交互的。首先,Java文件目录分为Servlet(接受参数、转发请求等)、Service(处理业务逻辑)、Dao(对各model的增删改查)、Model(对应数据库中的表)等层,而Servlet是通过在web.xml中配置从而让计算机知道要跳转的位置,具体的图如下所示。
图1.1 Servlet层展示
图1.2 web.xml中配置展示
如上面两张图所示,这是在使用SpringMVC前的情况,可以看到,随着业务的增多Servlet将会不断增加,web.xml里的内容也会增加,即使编码工整规范,Servlet都需要重写doGet、doPost方法,代码冗余。
2.使用SpringMVC后:
图1.3 使用SpringMVC后Controller类展示
如图1.3所示,使用SpringMVC后不再需要配置Servlet,所有的Servlet按照所属POJO类(或模块)划分,对一个POJO的增删改查都可放在一起。从开发者的眼光来看,使用SpringMVC大大简化了我们的开发工作,同时以Spring的角度来看,它必然帮我们做了一些工作,比如它是如何让计算机根据请求的URL就找到对应的Servlet的,接下来将具体分析。
二、SpringMVC的设计与实现
1.基本概念
图2.1 MVC模式
关于MVC以及JavaWeb等概念这里不做过多讲解,主要想谈的是DispatcherServlet和HandlerMapping。
DispatchServlet作为一个Servlet,需要在web.xml中进行配置。同时它也是一个前端控制器,所有的Web请求都需要通过它进行转发、匹配、数据处理后交给页面进行展示,因此它可看做SpringMVC实现中最核心的部分。默认情况下,DispatchServlet选取BeanNameUrlHandlerMapping作为映射策略实现。
图2.2 前端控制器
之前提到,SpringMVC帮开发者完成了许多工作,其中让计算机知道URL请求对应哪一个Controller(在不适用框架时我们称之为Servlet,使用后用Controller代替)的工作,就是HandlerMapping完成的。以SimpleUrlHandlerMapping为例,其定义了一个map来维持Url请求与控制器的映射关系,同时,HandlerMapping接口中定义了getHandler方法,通过这个方法,可以获得请求对应的HandlerExecutionChain,在HandlerExecutionChain中封装了具体的Controller对象。
图2.2 DispatcherServlet的大致工作
图2.3 HandlerMapping的设计原理
2.实现步骤
A.建立Controller控制器和HTTP请求之间的映射关系
B.得到HandlerExecutionChain,Controller响应动作,生成需要的ModelAndView
C.呈现视图
(转载请申明原地址)
- 读书笔记-《Spring技术内幕》-计文柯(三):Spring MVC与We
- Spring 技术内幕-读书笔记
- spring技术内幕 读书笔记(一)
- spring技术内幕 读书笔记(二)
- 读书笔记-《Spring技术内幕》-计文柯(二):AOP的实现
- spring技术内幕2读书笔记
- spring技术内幕读书笔记--IOC
- spring技术内幕读书笔记--AOP
- spring技术内幕读书笔记--事务处理
- spring技术内幕之spring mvc
- Spring技术内幕之Spring MVC
- Spring技术内幕——Spring MVC与Web环境(未完)
- Spring技术内幕之Spring MVC与Web环境(02)- Spring Web MVC核心架构
- 读书笔记--Spring技术内幕深入解析Spring架构与设计原理--Spring源码的编译(一)
- Spring技术内幕:Spring AOP的实现原理(三)
- Spring技术内幕之Spring MVC与Web环境(01)-MVC模式
- spring技术内幕读书笔记--springmvc组件
- Spring技术内幕——深入解析Spring架构与设计原理(四)Web MVC的实现
- java访问远程文件判断是否存在的问题
- Java NIO系列教程(七) FileChannel
- 写给Android开发者的混淆使用手册
- Yii2 学习之在modules中添加验证码方法详解
- Android R文件介绍
- 读书笔记-《Spring技术内幕》-计文柯(三):Spring MVC与We
- Android系统源码编译之2---安装CURL
- 泛型
- maven学习
- python实现决策树分类(三)
- Maven
- 面试总结--2017.6.27
- 配置SSH免密码登录案例
- inline-block元素会有上下边距的解决方法