1.4 JSP的开发模式
JSP自产生到现在,应用越来越广泛,其相关技术也越来越多,如JavaBean、EJB等。随着相关技术的产生,使JSP技术更容易实现Web网站的开发和控制。JSP网站开发技术经常使用下面几种组合开发网站,包括纯粹JSP技术实现、JSP+JavaBean实现、JSP+JavaBean+Servlet实现、J2EE实现等。不同的开发组合,可以称为不同的设计模式,最常用的技术是JSP+JavaBean+Servlet。
1.4.1 纯粹JSP实现
使用纯粹JSP技术实现动态网站开发,是JSP初学者经常使用的技术。JSP页面中包含所有完成页面功能的元素,如HTML标记、CSS标记、JavaScript标记、逻辑处理、数据库处理代码等。这么多类型的元素,混合在一个页面中,容易出现错误。并且在出现错误后,不容易查找和调试。实际中,Java Web应用一般不会将所有页面全部采用纯粹的JSP实现。
1.4.2 JSP+JavaBean实现
JSP+JavaBean技术的使用,很好地使页面静态部分和动态部分相互分离。在这种模式中,JSP使用HTML、CSS等可以构建数据显示页面,而对于数据处理,可以交给JavaBean处理,如数据库访问。把执行业务功能的代码封装到JavaBean中,同时也达到了代码重用的目的。如显示当前时间的JavaBean,不仅可以用在当前页面,还可以用在其他页面。JSP+JavaBean相对纯粹JSP实现,将页面显示与业务处理的分离,使其结构上更加清晰。
1.4.3 JSP+JavaBean+Servlet实现
JSP+JavaBean+Servlet技术的组合,很好地实现了MVC模式,MVC(Model-View-Controller),中文翻译为“模型-视图-控制器”,MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变了Model或View,或者同时改变两者。只要Controller改变了Model的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。MVC模式最早是Smalltalk语言研究团提出的,应用于用户交互应用程序。MVC模式是一个复杂的架构模式,其实现也显得非常复杂。MVC三个部分的形式如图1.3所示。
图1.3 MVC三个部分的形式
视图(View)代表用户交互界面,随着Web应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,在MVC中视图组件通常用来完成用户交互和数据显示,不会在视图中完成业务逻辑处理。业务逻辑处理由模型组件来完成,例如,在一个有关订单操作的Web应用中,视图组件(JSP)可以用来完成显示订单数据和提交订单信息。
模型(Model)就是业务流程的处理,以及业务规则的制定。业务流程的处理过程对其他层来说是黑箱操作,控制器组件接受视图组件传递的数据并调用模型组件完成业务功能,模型组件将处理结果返回给控制器,由控制器将负责跳转至某个视图组件显示处理结果。业务模型的设计可以说是MVC的核心。按照MVC设计模式的要求,业务逻辑操作应该被抽取出来封装在模型组件中。Model常由JavaBean实现。
控制器(Controller)可以理解为从用户接受请求,根据请求使用对应的模型进行处理,再将处理结果传递给视图,完成用户的请求。控制器相当于一个分发器,它根据用户请求,选择模型和视图,完成用户请求的处理,控制器并不做任何的数据处理。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示更新。
1.4.4 J2EE模式实现
J2EE是纯粹基于Java的解决方案。1998年,Sun发布了EJB 1.0标准。EJB是企业级应用的JavaBean,为企业级应用中必不可少的数据封装、事务处理、交易控制等功能提供了良好的技术基础。在J2EE平台的三大核心技术Servlet、JSP和EJB支持下,1999年,Sun正式发布了J2EE的第一个版本。到2003年时,Sun的J2EE版本已经升级到了J2EE 1.4版,其中三个关键组件的版本也发展到了Servlet 2.4、JSP 2.0和EJB 2.1。至此,J2EE体系及相关的软件产品已经成为了Web服务器端开发的一个强有力的支撑环境。在这种模式里,EJB替代了前面提到的JavaBean技术。
在Web服务器端,2000年以后出现了几种主要的技术融合方式。首先,越来越多的Web开发环境开始支持MVC的设计模型,为开发者提供了全套的开发框架。实际上,J2EE和.NET平台本身就是这种开发框架的典型代表。开源项目在Web开发框架和应用模型方面表现得非常积极,Struts、Jetspeed、JPortlet、Cocoon、Lenya、XOOPS等都是开源世界里与MVC开发框架、门户服务和Web内容管理相关的优秀解决方案。
J2EE设计模式由于框架大、不容易编写和调试,因此比较难以掌握。目前只是应用在一些大型的网站上,当然,J2EE模式的前景是好的,是Java Web应用开发的发展方向。
对于上述4种JSP开发模式,纯粹JSP实现常用于初学者学习,实践中常用的是JSP+JavaBean实现和JSP+JavaBean+Servlet实现。只有在充分理解这两种开发模式的基础上,才能掌握J2EE设计模式。