Spring Web MVC框架外文翻译资料

 2022-07-22 12:07

英语原文共 34 页,剩余内容已隐藏,支付完成后下载完整资料


第7章:Spring Web MVC框架

在上一章中,我向大家概述了Spring框架。我们了解了什么是Spring,它是如何打包的,以及它包含的各种模块。我还提到,在Spring中,当你决定是否使用Spring时,你不必采取使用全部模块的方法。换句话说,根据你的需要,你可以一次在Spring框架中同步一个模块(以及任何依赖项)。在本章中,我将演示如何使用Spring Web MVC框架,来构建我们的工时系统,即示例Web应用程序。

请注意,从此处起,我会在大部分时候将Spring Web MVC框架简称为Spring MVC。

本章包括的内容

在本章中,我们将会:

  • 介绍使用Spring MVC的各种好处
  • 深入了解Spring Web MVC框架
  • 使用Spring MVC构建工时系统中的三个界面:一个无控制器,两个表单控制器和一个Spring HTTP拦截器。

注意

本书中使用的完整代码示例可以在本书的代码压缩文件(提供在本书的网站上)中找到。

这是令人兴奋的一章,所以我不会浪费任何时间无聊地介绍材料。让我们开始吧!

Spring Web MVC框架的优点

Spring Web MVC框架是一个强大,灵活和设计良好的框架,用于使用MVC设计模式快速开发Web应用程序。使用此Spring模块所获得的好处与Spring框架的其余部分相似。我们来回顾一下这些。本章稍后将介绍其中的一些好处。

  • 更易于测试——你会发现在所有的Spring课程中,这是一个常见的主题。Spring的大部分类被设计为JavaBeans的事实使你能够使用这些类的setter方法注入测试数据。Spring还提供了模拟类来模拟Java HTTP对象(例如HttpServletRequest),这使Web层的单元测试更加简单。
  • 可直接绑定到业务对象——Spring MVC不需要你的业务(模型)类来扩展任何特殊类;这使你能够通过将业务对象直接绑定到HTML表单字段来重用你的业务对象。事实上,你的控制器类是唯一需要扩展Spring类(或实现Spring控制器接口)的类。
  • 可明确分离角色——Spring MVC很好地分离了构成此Web框架的各种组件所起的作用。例如,当我们讨论诸如控制器,命令对象和验证器之类的概念时,你将开始看到每个组件如何起着不同的作用。
  • 可适应性控制器——如果你的应用程序不需要HTML表单,你可以编写一个更简单的Spring控制器版本,它需要所有表单控制器所需的额外组件。事实上,Spring提供了几种类型的控制器,每种控制器都有不同的用途。例如:无表单控制器,简单表单控制器,向导形式控制器,无控制器的视图,甚至是预包装的控制器,使你无需自己的自定义控制器就可以编写视图。
  • 简单但功能强大的标签库——Spring标签库很小,直接,但功能强大。 例如,Spring使用JSP表达式语言(EL)作为lt;spring:bindgt;标签的参数。
  • Web流程——此模块是一个子项目,不与Spring核心分发捆绑。它建立在Spring MVC之上,并增加了轻松编写跨多个HTTP请求的向导式Web应用程序(例如网络购物车)的功能。
  • 视图技术和Web框架——尽管我们使用JSP作为视图技术,但Spring还支持其他视图技术,例如Apache Velocity(jakarta.apache.org/velocity/)和FreeMarker(freemarker.org)。这是一个强大的概念,因为从JSP切换到Velocity是一个配置问题。此外,Spring还为Apache Struts(struts.apache.org),Apache Tapestry(jakarta.apache.org/tapestry)和OpenSymphony的WebWork(opensymphony.com/webwork/)提供集成支持。
  • 轻量级环境——正如我在上一章中提到的,Spring使你能够使用POJO构建企业级应用程序;环境设置可以更简单、成本更低,因为你可以使用更轻量级的servlet容器来开发和部署应用程序。

Spring Web MVC概念

Java的世界在过去几年中已经出现了许多基于MVC设计模式的Web框架(其中几个在本章末尾列出)。MVC最初是在1978-79时间段内在XEROX PARC设计的,后来在Smalltalk-80类库(也在XEROX PARC)中实施。这是一个相对简单的概念来掌握和提供图像和数据的清晰分离,我将在此简要解释。

首先,我们来看看我们在本书前面建立的架构图,如图7.1所示。

图7.1 工时系统的高级架构图

如你所见,来自Web浏览器的所有传入的HTTP请求都由Controllers控制。控制器如名称所示,通过促进它们之间的数据交换来控制视图和模型。这种方法的主要优点是该模型可以只关心数据,不用理解视图。另一方面,视图不了解模型和业务逻辑,只是将数据传递给它(作为我们的网页)。MVC 模式还允许我们更改视图的同时,无需更改模型。

我们来看一下Spring MVC基本概念。首先,我们将介绍与Java编码相关的概念,然后我们将介绍完成所有这些工作所需的配置。

Spring MVC的Java概念

图7.1为我们提供了工时系统架构的高级视图。现在我们来进行Spring MVC组件的一些更详细和重点的介绍。图7.2显示了工时系统中典型界面的端到端流程。此图显示了我们将在下面讨论的许多概念。

控制器

Spring提供了许多类型的控制器。这既有好的影响,也有坏的印象。好的是,你有多种控制器可供选择,但这也恰好是坏的部分,因为它可能有点混乱,首先使用哪一个。

决定使用哪种控制器类型的最佳方式是了解你需要什么类型的功能。例如,你的界面是否包含表单?你需要灵活的功能吗?你只想重定向到JSP页面,不需要有控制器?这些是你需要询问的问题,以帮助你缩小选择范围。

图7.2 使用Spring和Hibernate输入时界面的端到端流程

图7.3显示了一些更有趣的控制器的类图,它们是Spring MVC的一部分。表7.1提供了有关接口和类的简要说明,如图7.3所示。(注意:本表中提供的说明直接从Spring Framework Javadocs中获取)。我倾向于使用SimpleFormController,UrlFilenameViewController和AbstractController。我们将在本章后面看到这些例子。

图7.3 Spring控制器部分列表的类图

表7.1各种Spring控制器的说明

Controller

Description (Taken Directly from the Spring Javadocs)

AbstractCommandController

Abstract base class for custom command controllers.

AbstractController

Convenient superclass for controller implementations, using the Template Method design pattern.

AbstractFormController

Form controller that autopopulates a form bean from the request.

AbstractUrlViewController

Abstract base class for Controllers that return a view name based on the URL.

AbstractWizardFormController

Form controller for typical wizard-style workflows.

BaseCommandController

Controller implementation that creates an object (the command object) on receipt of a request and attempts to populate this object with request parameters.

CancellableFormController

Extension of SimpleFormController that supports “cancellation” of form processing.

Controller

Base Controller interface, representing a component that receives HttpServletRequest and HttpServletResponse like a HttpServlet but is able to participate in an MVC workflow.

ParameterizableViewController

Trivial controller that always returns a named view.

SimpleFormController

Concrete FormController implementation that provides configurable form and success views, and an onSubmit chain for convenient overriding.

UrlFilenameViewController

Controller that transforms the virtual filename at the end of a URL into a view name and returns that view.

模型和视图

Controller相关子类中的许多方法返回一个org.springframework.web.servlet.ModelAndView对象。该对象包含模型(作为java.util.Map对象)和视图名称,并可以从方法返回一个返回值。我们将在本章后面看到我们构建工时系统的两个界面的示例。

命令(表单备份)对象

Spring使用命令对象的概念,它本质上是一个JavaBean样式类,它从HTML表单的字段中填充数据。同一个对象也被传递给我们的验证器(下面讨论),用于数据验证,如果验证通过 ,它被传递给onSubmit方法(在控制器相关类中)以处理有效数据。鉴于此命令对象是一个简单的JavaBean样式类,我们可以直接使用我们的业务对象进行数据绑定,而不是仅为数据绑定编写特殊类。我将在本章的后面展示这个好处。

验证器

一个Spring验证器是一个可选类,可以为给定的命令(form)控制器验证表单数据。该验证器类是一个实现org.springframework.validation.Validator接口的具体类。该接口所需的两种方法之一是验证方法,它传递一个如前所述的命令对象和一个Errors对象,可用于返回错误。我将在本章后面展示一个Validator类的示例。一个值得注意的验证类是org.springframework.validation.ValidationUtils,它为拒绝空字段提供了方便的方法。

Spring标签库(spring:bind)

Spring绑定标签库简单而强大。它通常通过JSP文件中使用lt;spring:bindgt;标签,其实质上将HTML表单域绑定到命令对象。此外,它提供对JSP中特殊变量的访问,例如$ {status.value},$ {status.expression}和$ {status.errorMessages},我们将在本章的后面查看。

Spring MVC配置概念

在本节中,我们将回顾一些与配置Spring Web MVC框架相关的核心概念。

前端控制器DispatcherServlet

DispatcherServlet(org.springframework.web.servlet包的一部分)是Spring Web MVC的入口点,

全文共31259字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[145911],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。