燃气表维修调度管理系统Web端的设计与实现外文翻译资料

 2022-11-03 20:53:15

第五节. 网页

这部分的参考文档涵盖了Spring框架的支持表示层(特别是web表示层)。

Spring框架的web框架,Spring web MVC,在前几章所覆盖。大量的剩余的章节参考文档的这一部分担心与Spring框架的集成与其他web技术,如Struts和JSF(两个名字)。

本节总结与Spring的MVC portlet框架的报道。

  1. . Web MVC框架
  2. .视图技术
  3. .与其它web框架集成
  4. .Portlet MVC 框架

16.web框架

16.1 web框架的介绍

Spring MVC(模型-视图-控制器)中的web框架是用来围绕分发器所设计的,其中分发器用来分发请求到处理器中,其框架还包括可配置的处理器映射,视图解析以及本地化、主题解析和对文件上传的支持。缺省的处理器是建立在控制器以及请求映射的注解之上的,提供一个大范围的灵活的解决方法。在Spring3.0的介绍之中,通过对用来对指定请求的URL路径里面的变量的注解以及其他的特征,控制器机制同样允许你创建一个网站或者是应用软件的架构风格。

“对扩展是开放的...”

Spring MVC的web框架以及在整个spring框架的关键设计原则就是:“对扩展开放,对修改封闭”。

Spring MVC中关键类的许多方法都被定义为了final,作为一个开发者你不能对这些方法进行重写以便支持你自己的行为。而这并不是专横的想刁难我们的开发者,而是为了去遵循上述设计原则。

为了解释这个原则,你可以查看由Seth Ladd等人所编著的《Expert Spring Web MVC and Web Flow 》这本书。特别看这本书的第一版的第117页,其中章节的标题为 'A Look At Design'。

如果有选择的话也可以选看下面这篇文档:Bob Martin, The Open-Closed Principle (PDF)

当使用spring MVC框架时你不能对final方法进行改动。例如,你不能对AbstractController.setSynchronizeOnSession()这个方法进行改动,可以通过叫“Understanding AOP proxies”的章节来获取更多关于aop代理的信息,以及为什么不能在final方法中进行修改。

在spring MVC的web框架中你可以用任何对象来作为一个命令对象或者表单对象;你不需要继承特定于框架的接口或者基础类。Spring的数据绑定十分的灵活,举一个例子来说,它认为类型不匹配的错误应该是应用级别的错误而不是系统级别的错误。因此你不需要重复去定义一个与业务对象具有相同属性的表单对象来处理简单的,无类型的字符串或者对字符串进行转换以便为了保证表单内容的正确提交,取而代之的是,它经常更好的去直接对业务对象进行绑定。

Spring框架的视图解析尤为灵活。一个控制器就可以向response输出一个视图,其中包括数据和选取一个视图名,但是它同样可以直接写入响应流以及完成请求。其中对视图名称的解析处理可以通过bean的名字、属性文件或者自定义的ViewResolver实现来进行解析也是高度可配置的。Spring MVC中的M也就是模型其实就是一个视图接口,允许完成视图技术中的抽象。你可以直接集成基于模板的呈现JSP等技术、速度和Freemarker或直接生成XML、JSON、原子,和许多其他类型的内容。模型地图只不过是变成了一个适当的格式,比如JSP请求属性,Velocity模板模型。

Spring MVC框架的特点

Spring web探索

Spring web探索旨在为web应用网页探索提供最好的解决办法。

Spring Web Flow与现有像Spring MVC框架,集成Struts,JSF servlet和portlet的环境。如果你有一个业务过程(或进程)将受益会话模型而不是一个纯粹的请求模型,然后Spring Web Flow可能的解决方案。

Spring Web Flow可以捕捉逻辑页面流作为独立的模块是可重用的不同的情况,因此是理想的构建web应用程序模块,指导用户通过导航控制,驱动业务流程。

获取更多关于swf的信息,请访问Spring Web Flow website.

Spring的web框架包括许多独一无二的网络支持功能。

明确分工,每个角色——控制器,验证器,命令对象,对象,模型对象,DispatcherServlet,处理程序映射视图解析器,等等,可以实现专门的对象。

强大的和简单的配置框架和应用程序类javabean。这个配置在上下文功能包括简单的引用,比如从web控制器业务对象和验证器。

non-intrusiveness,适应性和灵活性。你需要定义任何控制器方法签名,可能使用一个参数注释(如@RequestParam @RequestHeader,@PathVariable等等)对于一个给定的场景。

可重用的业务代码,不需要重复。使用现有的业务对象作为命令或形式对象而不是镜像他们扩展基类的一个特定的框架。

定制绑定和验证。类型不匹配,应用程序级验证错误的价值,本地化的日期和号码绑定,等等,而不是String-only表单对象手工解析和转换为业务对象。

可定制的处理程序映射和决议。处理程序映射和视图解决战略范围从简单的基于url的配置,复杂的,专门解决策略。Spring比web MVC框架更灵活授权特定技术。

灵活的模式转移。模型转换与一个名称/值映射支持轻松集成视图技术。

可定制的语言环境和主题决议,支持jsp有或没有Spring标记库,支持JSTL,支持速度而不需要额外的桥梁,等等。

一个简单而强大的JSP标记库称为Spring标记库提供支持数据绑定和主题等特性。的自定义标记允许最大的灵活性标记代码。标记库描述符的信息,请参阅附录《附录F,spring.tld》 。

一个JSP标记库形式,在Spring 2.0中引入的,使写作形式在JSP页面更加容易。标记库描述符的信息,请参阅附录《附录G,spring-form.tld》 。

bean的生命周期是当前HTTP请求或HTTP会话作用域。这不是一个特定的Spring MVC的本身,而是WebApplicationContext容器(s)的Spring MVC的用途。这些bean范围章节中所描述的“请求、会话和全球会议作用域。

可插入性的MVC实现

对一些项目Non-Spring MVC实现更可取。许多团队希望利用现有投资的技能和工具。大量的知识和经验存在Struts框架。如果你能忍受Struts架构的缺陷,它可以是一个可行的选择web层,这同样适用于网络系统和其他web MVC框架。

如果你不想使用Spring的web MVC,但打算利用其他手段提供其他解决方案,您可以将您所选择的web MVC框架集成在spring中很容易。只是启动一个Spring应用程序上下文根通过其ContextLoaderListener,和访问它通过其ServletContext属性(或Spring的各自的助手方法)在Struts或网络系统操作。没有“插件”,所以没有专门的集成是必要的。从web层的角度来看,您只需使用Spring库,与根应用程序上下文实例作为入口点。

你注册的bean和Spring的服务可以唾手可得,即使没有Spring的Web MVC。Spring不与Struts或网络系统在这种情况下。它只是解决了许多领域,纯web MVC框架不从bean配置数据访问和事务处理。所以你可以丰富您的应用程序的Spring中间层和/或数据访问层,即使你只是想使用,例如,JDBC事务抽象或对象关系映射框架。

16.2分发器

Spring的Web MVC框架,像许多其他的Web MVC框架,要求驱动,围绕一个中心Servlet分派请求控制器和提供其他功能,有利于开发Web应用程序。Spring的分发器然而,不仅仅是那。它与Spring IOC容器完全集成,因此允许您使用Spring的所有其他功能。

在Spring Web MVC 分发器的请求处理流程如下图所示。精明的读者会认识到模式的分发器是“前端控制器”设计模式的一种表达(这是一个模式,Spring Web MVC与许多其他领先的Web框架)。

在Spring Web MVC请求处理流程(高级别)

分发器是一个实际的servlet(它从一个基类继承的),这样在你的Web应用的web.xml声明。你需要地图请求你想要的分发器的处理,通过使用URL映射在相同的web.xml文件。这是标准的java EE servlet配置;下面的例子显示了这样一个分发器声明和映射:

lt;web-appgt;

lt;servletgt;

lt;servlet-namegt;examplelt;/servlet-namegt;

lt;servlet-classgt;org.springframework.web.servlet.DispatcherServletlt;/servlet-classgt;

lt;load-on-startupgt;1lt;/load-on-startupgt;

lt;/servletgt;

lt;servlet-mappinggt;

lt;servlet-namegt;examplelt;/servlet-namegt;

lt;url-patterngt;*.formlt;/url-patterngt;

lt;/servlet-mappinggt;

lt;/web-appgt;

在前面的示例中,所有请求启动/实例将由分发器命名实例实例处理。这是只有在建立Spring Web MVC的第一步。你现在需要配置由Spring的Web MVC框架使用的各种豆类(超过分发器本身)。

在4.14节中详细介绍,“应用前后关系”附加功能,在spring的应用前后关系实例可以范围。在Web MVC框架,每个分发器有自己的网页应用前后关系,继承所有的豆子已经在根网页应用前后关系定义。这些继承的豆子可以在servlet的具体范围覆盖,你可以定义新的范围比bean本地的一个给定的servlet实例。

在Spring Web MVC上下文层次

在一个分发器初始化,Spring MVC找一个名叫[在Web应用程序的WEB-INF目录servlet名称] -servlet.xml文件并创建bean定义的存在,超越任何bean定义具有相同名称的全局范围内的定义。

考虑下面的分发器servlet配置(在web.xml文件):

lt;web-appgt;

...

lt;servletgt;

lt;servlet-namegt;golfinglt;/servlet-namegt;

lt;servlet-classgt;org.springframework.web.servlet.DispatcherServletlt;/servlet-classgt;

lt;load-on-startupgt;1lt;/load-on-startupgt;

lt;/servletgt;

lt;servlet-mappinggt;

lt;servlet-namegt;golfinglt;/servlet-namegt;

lt;url-patterngt;*.dolt;/url-patterngt;

lt;/servlet-mappinggt;

lt;/web-appgt;

在上述的servlet的配置,您将需要有一个文件名为/下/ golfing-servlet.xml申请;该文件将包含所有您的Web

MVC-的具体组成部分。你可以通过一个servlet初始化参数更改此配置文件的具体位置(详情见下文)。

网页应用前后关系是应用前后关系,有一些额外的功能,为Web应用程序所必需的延伸。它不同于一般的应用,它是能够解决的主题(见16.9节,“主题”),那它就知道servlet与它关联的(有一个链接到ServletContext)。网页应用前后关系必将在ServletContext,采用静态的方法对requestcontextutils课你总是抬头网页应用前后关系如果你需要访问它。

特殊类型的网页应用前后关系

分发器辨别两种工艺的特殊要求及在适当的观点。这一部分是MVC的飞跃。你可以选择这两个特殊bean使用简单的配置一个或多个:他们在网页应用前后关

剩余内容已隐藏,支付完成后下载完整资料


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

您需要先支付 30元 才能查看全部内容!立即支付

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