Spring_MVC培训.pptx_第1页
Spring_MVC培训.pptx_第2页
Spring_MVC培训.pptx_第3页
Spring_MVC培训.pptx_第4页
Spring_MVC培训.pptx_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Spring MVC 介绍,MVC是什么?,模型-视图-控制器(Model-View-Controller),JSP、HTML、XML,Servlet、Struts、Spring,实体Bean 、Entity、VO、FormBean,MVC模式是解决了展示以及业务逻辑实现的分离。让开发者 可以专心地解决不同层的编码。也方便代码重用和维护。,MVC设计思想,视图(View)代表用户交互界面,对于Web应用来说,可以是HTML,也可能是jsp、XML和App等。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。

2、业务流程的处理交予模型(Model)处理。 比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。,MVC设计思想,模型(Model):是业务的处理以及业务规则的制定。模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC最主要的核心。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只是组织管理这些模型,以便于模型的重构和提高重用性。 业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据保存(持续化)。比如将一张订单保

3、存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。,MVC设计思想,控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。 例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。,低耦合性。视图层和业务层分离,这样就允

4、许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。 高重用性和可适用性。随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何Web(HTTP)浏览器或者无线浏览器(Wap),例如,用户可以通过计算机也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来

5、表示,但是也有可能用Wap来表示,而这些表示所需要的仅仅是改变视图层的实现方式,而控制层和模型层无须做任何改变。 较低的生命周期成本。MVC可降低开发和维护用户接口的技术含量。 快速的部署。使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。 可维护性。分离视图层和业务逻辑层也使得Web应用更易于维护和修改。 有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。,MVC的优点,MVC的缺点,由于它没有明确的定义,所以完全理解MVC

6、并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。 你将不得不花费相当可观的时间去考虑如何将MVC运用到你的应用程序中,同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。一旦你的构件经过了测试,你就可以毫无顾忌地重用它们了。 根据开发者经验,由于开发者将一个应用程序分成了三个部件,所以使用MVC同时也意味着你将要管理比以前更多的文件,这一点是显而易见的。这样好像我们的工作量增加了,但是请记住这比起它所能带给我们的好处是不值一提的。 MVC并不适合小型甚至中等规模的应用程序,花费大量时间将MV

7、C应用到规模并不是很大的应用程序上通常会得不偿失。,Spring MVC 架构,Spring MVC是结构最清晰的MVC Model 2实现。它的Action不叫Action,而是称做Controller;Controller接收request, response参数,然后返回ModelAndView(其中的Model不是Object类型,而是Map类型)。但在使用中, Controller返回值一般都只是一个 ViewName;Model则需要通过其它的途径(如request.attribute,Context参数,或Controller本身的属性数据)传递上去。,JSP Model 2架构

8、,Model 2采用面向对象技术实现MVC模式 从而扩展JSP/Servlet的模式。 Model2是MVC在Web上的应用。,Spring Web MVC请求处理流程,Spring MVC 特点,清晰的角色划分:控制器(controller)、验证器(validator)、 命令对象(command object)、表单对象(form object)、模型对象(model object)、 Servlet分发器(DispatcherServlet)、 处理器映射(handler mapping)、视图解析器(view resolver)等。 每一个角色都可以由一个专门的对象来实现。 强大而直

9、接的配置方式:将框架类和应用程序类都能作为JavaBean配置,支持跨多个context的引用,例如,在web控制器中对业务对象和验证器(validator)的引用。 可适配、非侵入:可以根据不同的应用场景,选择合适的控制器子类 (simple型、command型、form型、wizard型、multi-action型或者自定义),而不是从单一控制器 (比如Action/ActionForm)继承。,Spring MVC 特点,可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要去扩展某个特定框架的基类。 可定制的绑定(binding) 和验证(validation):比如将类

10、型不匹配作为应用级的验证错误, 这可以保存错误的值。再比如本地化的日期和数字绑定等等。在其他某些框架中,你只能使用字符串表单对象, 需要手动解析它并转换到业务对象。 可定制的handler mapping和view resolution:Spring提供从最简单的URL映射, 到复杂的、专用的定制策略。与某些web MVC框架强制开发人员使用单一特定技术相比,Spring显得更加灵活。 灵活的model转换:在Springweb框架中,使用基于Map的 键/值对来达到轻易地与各种视图技术的集成。,Spring MVC 特点,可定制的本地化和主题(theme)解析:支持在JSP中可选择地使用Sp

11、ring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等。 简单而强大的JSP标签库(Spring Tag Library):支持包括诸如数据绑定和主题(theme) 之类的许多功能。 JSP表单标签库:在Spring2.0中引入的表单标签库,使得在JSP中编写 表单更加容易。 Spring Bean的生命周期可以被限制在当前的HTTP Request或者HTTP Session。,Spring MVC 架构类图,Spring MVC 重要组件,Spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理

12、工作。 DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller。 DispatcherServlet请请求提交到目标Controller。 Controller进行业务逻辑处理后,会返回一个ModelAndView。 Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象。 视图对象负责渲染返回给客户端。,DispatcherServlet,DispatcherServlet,应用了“ 前置控制器”模式 是所有 Spring MVC 请求的中枢。 继承了HttpServle

13、t,是一个Servlet,由WebApplicationContext 加载 如果不作其它配置,会加载默认组件,在web.xml配DispatcherServlet,web.xml dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation WEB-INF/mvc.xml 1 ,HandlerMapping,HandlerMapping,将web请求映射到正确的处理器(handler)上 , 通常是一个 Controller 不需用自定义处理器映射 已经内置了很多处理器映射策略 在处理器映

14、射中通过配置拦截器(包括处理器执行前、执行后、或者执行前后运行拦截器)将使其功能更强大,Controller 接口,Controller 接口,负责处理请求 内部参数继承 HttpServlet handleRequest(HttpServletRequest, HttpServletResponse) 返回一个 ModelAndView对象 所有实现都是线程安全的 基本不用自己实现接口 已经提供了很多实用的实现类,Controller 实现,通常在我们的应用中要求Controllers: 自动作默认处理 (不用编码) 简单web处理 在web 层和service 层之间作相应的处理 参数处理

15、 视图跳转 输入验证,ModelAndView 对象,封装了用来渲染页面的 model和view Model 用 java.util.Map实现的 添加对象,可以不需用名字: addObject(String, Object) 用显式名字添加 addObject(Object) 用默认名添加 (惯例优先) View 用 String 或 View 对象表示,拦截器Interceptors,拦截器Interceptors,在请求前后添加其它功能 包括拦截器方法 preHandle and postHandle 包括回调方法 afterCompletetion 可以通过 HandlerMappin

16、g 和一系列Controller关联上,视图解析器(ViewResolver),视图解析器(ViewResolver),从一个逻辑视图名映射到一个视图对象 可以排序, 所以能链在一起 对JSP用户, 通常实现 InternalResourceViewResolver: ,视图(View),视图(View),支持的几种视图模板技术: InternalResourceView (JSP) JstlView (JSP + JSTL) VelocityView (Velocity) FreeMarkerView (FreeMarker) TilesView (Tiles) TilesJstlView

17、(Tiles + JSTL) 还支持渲染下列视图: Excel files PDF files XSLT results Jasper Reports,其它视图解析器的实现,VelocityViewResolver 针对Velocity templates设计的 FreeMarkerViewResolver 针对 FreeMarker templates设计的 ResourceBundleViewResolver 映射关系在一个 properties 文件 支持国际化 XmlViewResolver 映射关系在XML文件,Spring MVC 其它特性,其它Spring MVC 功能这里不再介

18、绍了,但很优秀 处理多请求 支持自定义主体 支持国际化 方便 ServletContextListener 初始化 Log4J Spring MVC标签,拦截器Interceptors例子,下面的例子提供了一个拦截器,它拦截所有请求,如果当前时间不是在上午9点到下午6点,它将用户重定向到某个页面。 所有的请求都将被TimeBasedAccessInterceptor截获, 如果当前时间不在上班时间,用户会被重定向到一个静态html页面,提供诸如只有上班时间才能访问网站之类的告示。,拦截器Interceptors例子, /*.form=editAccountFormController /*.view=editAccountFormC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论