Web MVC与Spring框架
Juergen Hoeller
1.简介:首先面对Spring框架时,有人可能会想:“很明显,这不是另一个Web框架”。 本文将概述Spring为什么不是Web框架,而是一个具有专门的Web支持的通用轻量级应用程序框架,并展示了Struts和WebWork的体系结构差异。
与Struts或WebWork相比,Spring是所有层的应用程序框架:它提供了一个bean配置基础,AOP支持,JDBC抽象框架,抽象事务支持等。它是非侵入性的工作:应用程序类 ,如果没有必要,不需要依赖任何Spring类。如果你喜欢,你可以自己重用每个部分。从其设计来看,该框架鼓励层次的清晰分离,最重要的是Web层和业务逻辑。验证框架不依赖于Web控制器。主要目标是可重用性和可测试性:不必要的容器或框架依赖可以被认为是可避免的。
当然,Spring自己的Web支持与框架的一般模式很好地集成在一起。 然而用Struts,WebWork等替代Web解决方案很简单。通过Spring的Web支持或不同的支持,Spring允许在Web体系中构建真正的专用中间层,可以在测试环境或独立应用程序中重新使用完全相同的业务逻辑。在J2EE中,您的业务逻辑会必要地依赖于集装箱服务(如JTA或EJB),允许复杂的架构良好的Web应用程序在像Tomcat或Resin这样的“简单”体系中运行。
需要注意的是,Spring通常不会与现有解决方案竞争。它相当于促进了与Servlet,JSP,JTA,JNDI,JDBC和JDO等标准的无缝集成,以及非常适合的工具,如Hibernate,Velocity,Log4J和Caucho的Hessian / Burlap。该框架旨在根据您的应用程序的需求,在技术选择方面发展:例如,如果需要分布式事务,则可能会通过Spring的JtaTransactionManager使用JTA,但只有这样,就可以对单个数据库进行完美的替换,例如DataSourceTransactionManager或HibernateTransactionManager。
2Web MVC:Spring Web框架的设计
Spring的Web框架围绕一个DispatcherServlet设计,它将请求分派给处理程序,具有可配置的处理程序映射,视图分辨率以及区域设置和主题分辨率。 默认处理程序是一个非常简单的Controller接口,只提供一个“ModelAndView handleRequest(request,response)”方法。 这可以用于应用程序控制器,但是您更喜欢包含的实现层次结构,由AbstractController,AbstractCommandController,MultiActionController,SimpleFormController,AbstractWizardFormController组成。 应用程序控制器通常是这些的子类。 请注意,您可以选择适当的基类:如果没有表单,则不需要FormController。 这是Struts的主要区别。
您可以将任何对象作为命令或表单对象:不需要实现接口或从基类派生。 Spring的数据绑定非常灵活,例如它将类型不匹配视为可由应用程序评估的验证错误,而不是系统错误。所以您不需要将您的业务对象的属性复制为表单对象中的字符串,只是为了能够处理无效提交,或者正确转换字符串。相反,通常最好直接绑定到您的业务对象。这是Struts的另一个主要区别,它是围绕所需的基类(如Action和ActionForm)构建的,适用于每种类型的操作。与WebWork相比,Spring具有更多的差异化对象角色:它支持Controller,可选命令或表单对象以及传递给视图的模型的概念。该模型通常包括命令或表单对象,但也包括任意参考数据。相反,WebWork Action将所有这些角色组合成一个对象。WebWork允许您使用现有的业务对象作为表单的一部分,但只需将它们作为相应Action类的bean属性。最后,处理请求的同一个Action实例被用于在视图中进行评估和表单填充。因此,参考数据需要被建模为Action的bean属性。这些可以说是一个对象中太多的角色。
关于观点:Spring的观点决议非常灵活。Controller实现甚至可以将视图直接写入响应,返回null作为ModelAndView。在正常情况下,ModelAndView实例由视图名称和模型Map组成,包含bean名称和对应对象(如命令或表单,参考数据等)。视图名称解析是高度可配置的,无论是通过bean名称,通过属性文件还是通过您自己的ViewResolver实现。 抽象模型Map允许对视图技术的完整抽象,而不会有任何麻烦:无论是JSP,Velocity还是其他每个渲染器都可以直接集成。模型Map简单地转换为适当的格式,如JSP请求属性或Velocity模板模型。
3.集成:使用与Spring不同的Web框架
许多团队将尝试利用他们对现有项目和新项目的专有技术和工具的投资。 具体来说,Struts不仅有大量的书籍和工具,还有很多有经验的开发人员。 因此,如果您可以使用Struts的架构缺陷,它仍然可以成为Web层的可行选择。 这同样适用于WebWork和其他Web框架。
如果您不想使用Spring的Web MVC,但打算利用Spring提供的其他解决方案,您可以轻松地将您选择的Web框架与Spring集成。只需通过ContextLoaderListener启动Spring根应用程序上下文,并通过其Struts或WebWork操作中的ServletContext属性(或Spring的各自的帮助方法)访问它。请注意,没有任何“插件”涉及,因此没有专门的集成:从Web层的角度来看,您只需使用Spring作为库,将根应用程序上下文实例作为入口点。即使没有Spring的Web MVC,所有注册的bean和Spring的所有服务都可以在你的指尖。 Spring在这种用法中并不与Struts或WebWork进行竞争,它只是解决了纯Web框架不从bean配置到数据访问和事务处理的许多方面。所以您可以使用Spring中间层和/或数据访问层来丰富您的应用程序,即使您只想使用例如JDBC或Hibernate的事务抽象。
- 功能检查表
如果只是集中在Web支持上,Spring的一些独特功能就是:角色的分离:控制器vs验证器vs命令对象与表单对象与模型对象,DispatcherServlet与处理器映射vs视图解析器等。强大而直观的配置框架和应用程序类作为JavaBeans,包括通过应用程序上下文的简单的中间引用,例如从Web控制器到业务对象和验证器。适用性,非侵扰性:对于给定的方案,不需要从Action / ActionForm派生所有的东西,就可以使用任何需要的Controller子类(plain,command,form,wizard,multi action或custom)。可重用的业务代码,不需要重复:您可以使用现有的业务对象作为命令或表单对象,而不是在特殊的ActionForm子类中进行镜像。可自定义的绑定和验证:类型不匹配作为应用程序级验证错误,保持违规值,本地化日期和数字绑定等,而不是使用手动解析和转换为业务对象的仅String形式对象。可定制的处理程序映射,可定制的视图分辨率:通过名称/值映射,处理程序映射和视图分辨率策略的灵活模型传输从简单到复杂而不是单一方式。可自定义的区域设置和主题解析,支持带有和不带有Spring标签库的JSP,支持JSTL,支持Velocity,无需额外的桥接等。简单而强大的标签库,可以避免任何代价的HTML生成,从而实现最大的灵活性标记代码条款。
基于Hibernate和Struts J2EE的开发策略应用
本文分析了Hibernate和Struts的机制,根据Hibernate的J2和Struts应用开发策略提出了1种EE。在这种策略中,模型层使用Hibernate实现,并参考图和控制器,然后使用 一个Struts框架的实现,所以可以大大降低Ou代码匹配性和提升系统的开发效率。
关键词:Hibernate,Struts,MVC,长期保持
- 序言:Java技术逐渐成熟完善,建立企业级应用标准平台,J2 EE平台得到了大量发展。几种技术要求帮助包括在J2EE规范中:企业JavaBean (EJB),Java Servlets(Servlet),Java服务器页面(JSP),Java消息服务(JMS)等等,开发了许多应用系统。但是,在传统的J2中也出现了一些问题,EE的应用开发过程:
1)数据模型和逻辑模型的反义。 目前使用的数据库基本上都是关系类型数据库,但Java本质上就是一种面向对象的语言,用于读取使用的存储对象SQL和JDBC进行数据库操作,降低了效率和系统的编制距离的可维护;
2)J2EE应用程序的传统很多采用是根据EJB重量框架,这种框架适合开发大型企业应用程序,但是使用EJB容器进行开发调整,将会浪费大量的时间。为了降低代码符合性,提升系统的开发效率,本文根据Struts框架的J2和Hibernate框架应用开发策略提出了1种EE。
2数据长期保持长时间层次和休眠状态是一个长期的层次框架,是反映射击(O / R映射)的工具的一种实现对象和关系,它承载在对象上的轻量级打包到JDBC并使程序成员可以使用对象pl距离思考到操作数据库。它不仅提供了从Java摄取来反映数据的形式,而且还提供了一个搜索和建立机制的数据。在使用JDBC和SQL的操作数据库时,使用Hibernate能力提升了效率。Hibernate框架使用形式的分配文档来反映定义Java对象和数据形式的摄取关系,同时在更深层次的数据形式的关系解释等关系中,如继承和遏制等的Java对象。传递使用HQL语言句子关系的并发计算方式使用对象描述的方式,在很大程度上根据搜索简化对数,速度发展效率。在Hibernate中有一个简单但保持API的视图,用于数据库意味着对象性能搜索。想要建立或修改这些对象,需要在程序中继续交给对方,然后通过Hibernate来保存。所以,经过大量的包装,长期以来,业务逻辑的转动操作不再需要写一个简单的JDBC语言句子来使数据长久,因此这是该层最大的简化。
3使用Struts实现MVC结构MVC(Model-View-Controller)是由Trygve Reenskaug提出的,首先在环境SmallStalk-80中的驱动应用程序,是很多用交互界面系统构成的基础。根据接口设计变量的需要,MVC互相交换构成系统解析为模型,参见图,控制器三部分。模型(Model)是在内部抽象的内容和形式环境下的外部表现独立的软件处理问题逻辑,包含核心数据,问题逻辑和计算关系的功能,具体的接口表达和I / O操作的独立性。参见图(View)平均信息和模型数据和逻辑关系以及客户外观的形式演示。它从模型中获取表现信息,可以有许多与信息不同的表现形式的同源性。控制器(Controller)是一个处理客户的软件交付双方的操作,其工作是控制提供各种传播模式,确保客户界面之间的正确模式应用联系; 它接受进口客户,给出输入反馈模型,然后实现计算模型控制,将模型和图以适度的零件工作。通常它被看做一个图表的权利应该是一个控制器。模型见图和控制器分开,使一个模型能够有很多表现图示。如果客户通过看图表的控制器更改模型的数据,所有其他依赖这些数据图中的所有应该反映到这些变化。因此,不管发生什么样的数据种类,控制人都会将各种通知用户看图,以及更新的表现。 这实际上是一种多样的模式传播机制。
Struts框架将作为Apache雅加达的项目组成部分,在最早的阶段发布运气,它继承了MVC的每个项目的特点,并根据J2 EE对应的特征进行扩展。Struts框架很好地结合了Jsp,Java Servlet,Java Bean,Talia等技术。在Struts中,在MVC中承担控制器角色是一个ActionServlet。ActionServlet是一个通用的控制模块。这个控制模块提供了一个处理所有的HTTP声明,发出了Struts的入口点。它的拦截将这些声明分发到对应的动作类型(这些动作全部是Action的子类型)此外,控制模块还负责使用对应的索引参数填充动作表单(FromBean)和传递动作类型(ActionBean).Action类型面试核心的业务逻辑,然后面对Java Bean或调整使用EJB。结束动作类型控制JSP文档的电源传递跟踪,从JSP文档出发看图。所有这些控制逻辑使用Struts-config.xml文件进行分配。参见图中Struts框架主要从JSP出生页面完成,Struts提供丰富的JSP标签数据库,这有利于分离性能逻辑和过程逻辑。模型与1或形式存在几个Java Bean。在Struts中,主要存在三种Bean,分别为BE:Action,ActionForm,EJB或Java Bean。Struts框架没有具体的定义模型层的实现,实际上在开发中,模型层通常与业务逻辑相连接,并希望对一楼数据进行操作。下面的介绍是一种开发策略,引导Hibernate进入Struts框架的模型层,使用它来进行数据打包,反映出印象,提供长时间的转机支持。
4使用Hibernate和Struts开发J2EE应用程序
4.1系统结构根据Hibernate和Struts系统结构图的开发策略。
4.2开发实践结合开发实践,在J2中EE应用程序非常广泛的客户注册过程为例,阐述上述系统结构是如何具体使
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[140825],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。