读书笔记-《Spring技术内幕》-计文柯(三):Spring MVC与We

一、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.呈现视图

发布了25 篇原创文章 · 获赞 12 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_25498677/article/details/73835847
we