配色: 字号:
第6章 Spring MVC简介
2022-09-26 | 阅:  转:  |  分享 
  
第6章SpringMVC简介6.1MVC模式概述6.2SpringMVC概述6.3SpringMVC环境搭建6.4
SpringMVC请求流程6.1MVC模式概述JavaWeb应用程序的结构经历了ModelI和ModelII两个时代,
从ModelI发展到ModelII是技术发展的必然。6.1.1ModelI和ModelII在早期的JavaW
eb应用开发中,JSP文件即要负责处理业务逻辑和控制程序的运行流程,还要负责数据的显示,即用JSP文件来独立自主地完成系统功能的所
有任务。传统的ModelI模式,如图所示。改进的ModelI利用JSP页面与JavaBean组件共同协作来完成系统功能的所有
任务,JSP文件负责程序的流程控制逻辑和数据显示逻辑任务,JavaBean负责处理业务逻辑任务。改进的ModelI模式,如图所示
。ModelII模式是基于MVC架构的设计模式。在ModelII模式下,利用JSP页面、Servlet和JavaBean组
件分工协作共同完成系统功能的所有任务。其中,JSP负责数据显示逻辑任务,Servlet负责程序流程控制逻辑任务,JavaBean负
责处理业务逻辑任务。ModelII模式,如图所示。6.1.2MVC模式及其优势MVC思想不是哪个语言所特有的设计思想,也并
不是Web应用所特有的思想,是一种规范。MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Control
ler(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展性和可维护性。MVC设计模式中模型、视图和控制器三者之间的关
系,如图所示。6.1.2MVC模式及其优势概括起来,MVC模式具有如下特点:(1)各司其职、互不干涉。在MVC模式中,3层
各司其职,所有如果哪一层的需求发生了变化,就只需要更改相应层中的代码,而不会影响到其他层。(2)有利于开发中的分工。在MVC模
式中,由于按层把系统分开,就能更好地实现开发中的分工。网页设计人员可以开发JSP页面,对业务熟悉的开发人员可以开发模型中相关业务处
理的方法,而其他开发人员可开发控制器,以进行程序控制。(3)有利于组件的重用。分层后更有利于组件的重用,如控制层可独立成一个通
用的组件,视图层也可做成通用的操作界面。MVC最重要的特点就是把显示和数据分离,这样就增加了各个模块的可重用性。6.2Sprin
gMVC概述SpringMVC是Spring框架中用于Web应用开发的一个模块,是Spring提供的一个基于MVC设计模式的
轻量级Web框架。Spring框架提供了构建Web应用程序的全功能MVC模块。SpringMVC框架本质上相当于Servlet,
提供了一个DispatcherServlet作为前端控制器来分派请求,同时提供灵活的配置处理程序映射、视图解析、语言环境和主题解析
,并支持文件上传。在MVC设计模式中,SpringMVC作为控制器(Controller)来建立模型与视图的数据交互,是一个
典型的MVC框架,是结构最清晰的MVCModelII实现,如图所示。6.2SpringMVC概述SpringMVC分离
了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让他们更容易进行定制。SpringMVC框架无论是在框架设计还是扩展性
、灵活性等方面都全面超越了Struts2等MVC框架,而且它本身就是Spring框架的一部分,与Spring框架的整合可以说是无
缝集成,性能方面具有天生的优越性,SpringMVC具有如下特点:SpringMVC拥有强大的灵活性、非侵入性和可配置型。Sp
ringMVC提供了一个前端控制器DispatcherServlet,开发者无须额外开发控制器对象。SpringMVC分工明确
,包括控制器、验证器、命令对象、模型对象、处理程序映射器和视图解析器等,每一个功能实现由一个专门的对象负责。? 6.2Sprin
gMVC概述SpringMVC可以自动绑定用户输入,并正确转换数据类型。SpringMVC使用一个名称/值的Map对象实现更
加灵活的模型数据类型。SpringMVC内置了常见的校验器,可以检验用户输入,如果校验不同,则重定向回输入表单。输入校验是可选的
,并且支持编程方式即声明方式。SpringMVC支持国际化,支持根据用户区域显式多国语言,并且国际化的配置非常简单。Spring
MVC支持多种视图技术,最常见的有JSP技术以及其他技术,包括Velocity和FreeMarker。SpringMVC提供了
一个简单而强大的JSP标签库,支持数据绑定功能,使得编写JSP页面更加容易。 6.3SpringMVC环境搭建下面搭建Sp
ringMVC的开发环境,建立一个简单的SpringMVC程序帮助读者理解SpringMVC程序的开发步骤:(1)创建W
eb项目,添加所需要的jar包。在Eclipse中,创建一个名为“springmvc-1”的Web项目,在前面章节已经下载过sp
ring-framework-5.0.4.RELEASE-dist.zip文件,在解压后的libs文件夹中将如图6-6所示的12
个jar包,以及aopalliance-1.0.jar、aspectjweaver-1.9.1.jar、commons-loggi
ng-1.2.jar和cglib-3.2.0.jar这4个jar包添加到项目springmvc-1的WebContent\WEB-
INF\lib目录中。资源包中涉及的SpringMVC框架的jar文件为spring-web-5.0.4.RELEASE.ja
r和spring-webmvc-5.0.4.RELEASE.jar。? 6.3SpringMVC环境搭建(2)在web.
xml文件中,配置SpringMVC的前端控制器DispatcherServletSpringMVC是基于Servlet的框
架,DispatcherServlet是整个SpringMVC框架的核心,它负责接货请求并将其分派给相应的处理器处理,关键配置代
码如下所示: 6.3SpringMVC环境搭建(3)创建SpringMVC的配置文件在项目springmvc-1的sr
c目录下创建SpringMVC配置文件springmvc.xml,在该配置文件中,我们使用SpringMVC最简单的配置方式进
行配置,主要配置处理器映射器和视图解析器。在springmvc.xml文件中,首先要引入beans、aop、context和mv
c命名空间;然后主要完成配置处理器映射和配置视图解析器。①配置处理器映射器②配置视图解析器 6.3SpringMVC环
境搭建①配置处理器映射器Spring提供了多种处理器映射(HanderMapping)支持,例如:org.springfra
mework.web.servlet.handler.BeanNameUrlHandlerMappingorg.springfra
mework.web.servlet.SimpleUrlHandlerMappingorg.springframework.web
.servlet.mvc.annotation.DefaultAnnotationHandlerMappingorg.spring
framework.web.servlet.mvc.method.annotation.RequestMappingHandler
Mapping可以根据需求选择处理器映射,这里我们选择BeanNameUrlHandlerMapping,若没有明确声明任何处理
器映射,Spring会默认使用BeanNameUrlHandlerMapping,即在Spring容器中查找与请求URL同名的Be
an,通过声明HelloController业务控制器类,并将其映射到/hello请求。6.3SpringMVC环境搭建②
配置视图解析器处理请求的最后一件事就是解析输出,该任务由视图(这里使用JSP)实现,那么需要确定:指定的请求需要使用哪个视图进行
请求结果的解析输出?DispatcherServlet会查找到一个视图解析器,将控制器返回的逻辑视图名称转换解析成结果的实际视图。
Spring提供了多种视图解析器,例如:org.springframework.web.servlet.view.Internal
ResourceViewResolverorg.springframework.web.servlet.view.ContentN
egotiatingViewResolver在springmvc.xml配置文件中,并没有配置处理器映射和处理器适配器,当用户没
有配置这两项时,Spring会使用默认的处理器映射和处理器适配器处理请求。6.3SpringMVC环境搭建(4)创建处理请
求的控制器类在项目的src目录下创建包com.springmvc.controller,在包中创建类HelloControlle
r.java,并实现Controller接口中的handleRequest方法,用来处理/hello请求,代码如下所示:6.3S
pringMVC环境搭建(5)创建视图页面在项目的WebContext路径下创建ch06文件夹,在ch06文件夹中创建JS
P视图页面first.jsp。并在该视图页面上通过EL表达式输出“msg”中的信息,代码如右所示:(6)部署项目,启动Tomc
at测试将项目springmvc-1发布到Tomcat中,并启动Tomcat服务器,访问http://localhost:808
0/springmvc-1/hello,其运行效果如图所示。6.4SpringMVC请求流程通过前面示例,简单总结Sprin
gMVC的处理流程:当用户发送URL请求http://localhost:8080/springmvc-1/hello时,根
据web.xml中对于DispatcherServlet的配置,该请求被DispatcherServlet截获,并根据Handle
rMapping找到处理相应请求的Controller控制器(HelloController);Controller处理完成后,返
回ModelAndView对象;该对象告诉DispatcherServlet需要通过哪个视图来进行数据模型的展示,Dispatch
erServlet根据视图解析器把Controller返回的逻辑视图名渲染成真正的视图并输出,呈现给用户。接下来深入了解Spri
ngMVC框架的请求处理流程,如图所示。6.4SpringMVC请求流程(1)用户通过客户端向服务器发起一个request
请求,此请求会被前端控制器(DispatcherServlet)所拦截。(2)前端控制器请求处理器映射器(HandlerMapp
ing)去查找Handler,可以依据XML配置或注解去查找。(3)处理器映射器根据请求URL找到具体的处理器,生成处理器对象及
处理器拦截器(如果有则生成),并返回给前端控制器。(4)前端控制器请求处理器适配器(HandlerAdapter)去执行相应的H
andler(常称为Controller)。(5)处理器适配器会调用并执行Handler处理器,这里的处理器指的是程序中编写Co
ntroller类,也被称之为后端控制器。在填充Handler的入参过程中,根据配置,Spring将帮助做一些额外的工作。(6)
Controller执行完毕后会返回给处理器适配器一个ModelAndView对象(SpringMVC底层对象),该对象中会包
含View视图信息或包含Model数据模型和View视图信息。(7)处理器适配器接收到Controller返回的ModelAndView后,将其返回给前端控制器。(8)前端控制器接收到ModelAndView后,选择一个合适的视图解析器(ViewReslover)对视图进行解析。(9)视图解析器解析后,会根据View视图信息匹配到相应的视图结果,反馈给前端控制器。(10)前端控制器收到View具体视图后,进行视图渲染,将模型数据(在ModelAndView对象中)填充到request域。(11)前端控制器向用户响应结果。6.3小结本章首先对MVC模式进行了简单介绍,然后介绍了SpringMVC框架。通过入门案例搭建SpringMVC环境,对SpringMVC的工作流程进行了详细讲解。
献花(0)
+1
(本文系太好学原创)