基于Spring的Web开发
来源:用户上传
作者: 陆浩言
摘 要: Spring是一个为了解决企业应用程序开发复杂性而创建的开源框架,提供了一种有效的方式来建立和组织J2EE应用程序。本文首先简单介绍了Spring和Spring MVC框架,然后介绍了用Spring MVC开发应用程序的过程。
关键词:Spring MVC 框架 Web开发
一、引言
在软件开发中出现过各种各样的框架,开源软件的兴起,使得各种各样的框架纷纷出现。例如,Apache组织下就拥有诸多的框架类产品。框架就是一组协同工作的类,它们为特定类型的软件构筑了一个可重用的设计。然而,传统的框架使得应用程序组件过于依赖于框架中的类,这种耦合度的提高降低了组件的复用性。Spring框架的出现,使得组件之间更松散的耦合成为了可能。
二、Spring简介
Spring框架由一个容器,一个配置和组织组件的框架,和一组内置的为事务、持久化和Web用户接口提供的服务组成。作为一种轻量级的J2EE框架,Spring提供了一种有效的方式来建立和组织J2EE应用程序。
Spring IoC,借助于依赖注入设计模式,使得开发者不用理会对象自身的生命周期极其关系,而且能够改善开发者对模式的使用。IoC(Inversion of Control;控制反转),又称DI(Dependency Injection;依赖注入),是面向对象领域新兴的编程思想,也是Spring的精髓所在。简单地说,IoC就是指程序之间的关系由容器来控制,而不是传统实现中由程序代码直接操控。这也就是所谓IoC的概念所在:控制权由应用代码转到外部容器,控制权的转移,也就是所谓的反转。IoC将控制创建的职责搬进了框架中,并把它从应用代码脱离开来。当使用Spring的IoC容器时只需指出组件需要的对象,在运行时Spring的IoC容器会根据XML配置数据提供给它。
Spring AOP,借助于Spring实现拦截器,开发者能够实现以声名方式使用企业级服务,比如安全性服务、事务服务。AOP合理地补充了OOP,借助于Spring AOP,开发者能够高效地使用J2EE服务。
Spring服务抽象,借助于各种J2EE API抽象,使得开发者能够一致地使用J2EE技术,而不管具体是使用什么J2EE API,借助于Spring服务抽象,使代码大大减少,满足“更少代码,更少BUG”的软件设计原则。
Spring IoC+Spring AOP+Spring服务抽象,一起形成Spring,这样一个有机体,使得构建轻量级J2EE成为可能。
三、Spring MVC简介
大部分Java应用都是Web应用,Spring框架提供了构建Web的框架。和众多其它Web框架一样,它基于MVC设计理念。此外,由于它采用了松散耦合可插拔组件结构,因此具有比其它MVC框架更多的扩展性和灵活性。
Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet的作用是截获请求并组织一系列组件共同完成请求的处理工作。
Spring MVC是基于Model 2实现的技术框架,Model 2是经典的MVC(Model View Control)模型的Web应用变体,这个改变主要源于HTTP协议的无状态性。Model 2的目的和MVC一样,也是利用处理器分离模型、视图和控制,达到不同技术层级间松散耦合的效果,提高系统灵活性、复用性和可维护性。在多数情况下,你可以将Model 2与MVC等同起来。
四、用Spring MVC进行开发的处理过程
(1)整个过程开始于客户端发送一个HTTP请求。
(2)Dispatcher Servlet接收这个请求后,并将请求的处理工作委托给具体的处理器(Handler),后者负责处理请求执行相应的业务逻辑。在这之前,Dispatcher Servlet必须能够凭借请求信息(URL或请求参数等)按照某种机制找到请求对应的处理器,Dispatcher Servlet是通过垂询Handler Mapping完成这一工作的。
(3)当Dispatcher Servlet从Handler Mapping中得到当前请求对应的处理器后,它就将请求分派给这个处理器。处理器根据请求的信息执行相应的业务逻辑,一个设计良好的处理器应该通过调用Service层的业务对象完成业务处理。
Spring提供了丰富的处理器类型,在真正处理业务逻辑前,有些处理器会事先执行两项预处理工作:
第一项:将HttpServletRequest请求参数绑定到一个POJO对象中;
第二项:对绑定了请求参数的POJO对象进行数据合法性校验;
(4)处理器完成业务逻辑的处理后将返回一个Model And View给Dispatcher Servlet,Model And View包含了视图逻辑名和渲染视图时需要用到的模型数据对象。
(5)由于Model and View中包含的是视图逻辑名,DispatcherServlet必须知道这个逻辑名对应的真实视图对象,这项视图解析的工作通过调用ViewResolver来完成。
(6)当得到真实的视图对象后,DispatcherServlet将请求分派给这个View对象,由其完成Model数据的渲染工作。
(7)最终客户端得到返回的响应,这可能是一个普通的HTML页面,也可能是一个Excel电子表格,甚至是一个PDF文档等不一而足的视图形式,Spring的视图类型异常丰富和灵活。
参考文献:
[1]王福强.Spring揭秘.人民邮电出版社,2009.
[2]罗时飞.精通Spirng.电子工业出版社,2007.
转载注明来源:https://www.xzbu.com/9/view-967606.htm