选择显示字体大小

实例讲解jsp model2体系结构(上)


  最近已经有了很多相关的介绍,jsp正在成为一种卓越的java技术,可用于创建动态web应用程序。java程序员之所以喜爱jsp有数不清的理由。 有些人喜欢它为交互式页面带来的“一次编写,处处使用”的方式;还有些人欣赏它是因为它容易学习,并且使他们可以把java作为一种服务器端脚本语言来使用。但更多的还都是因为一个共同原因――使用jsp的最大好处是它能帮助你有效地把表达与内容分离开。在本文中,我对下面的问题作了深入探讨,那就是,如何使用jsp model 2体系结构获得最佳的表达-内容分离效果。这个模型也可以被看作是通用mvc设计模式服务器端的一个实现。请注意,在阅读本文之前,你需要熟悉基本的jspservlet编程,因为文中将不会涉及到任何语法规则问题。

servlets有什么问题?
  尽管jsp在动态web内容服务和分离内容与表达上可以做得非常好,但仍然会有人置疑,为什么要把servlets丢在一边呢?其实servlets的作用不容置疑。它们在服务器端处理上做得很优秀,而且,由于它们已有了坚实的基础,所以仍将被保留。实际上,从结构上讲,你可以把jsp看作是servlets的一种高级抽象,就像servlet2.1 api的一种扩充一样来实现。然而,你也不应当滥用servlets,它们并非对每个人都适用。举个例子,如果网页设计者能够很容易地用传统htmlxml工具写出jsp页的话,servlets就更适合那些后台程序的开发者,因为servlets通常是用集成开发环境(ide)编写的――一般来说这种方式需要更高级的编程技能。在运用servlets时,即使是开发者也必须小心谨慎以确保表达和内容不存在紧密的联系。要做到这一点,你通常可以使用第三方html包(比如htmlkona)来混合代码。但即便是这种方法,尽管它通过简单的屏幕变换带来了一些灵活性,却无法帮你避免表达格式本身的改动。例如,如果你的表达格式从html变为dhtml,你就必须确保那些语言包适应新的格式。假设一种最坏的情况,如果一个包不可用,你也许将不得不忙于在动态内容中艰难地编写表达,这会把你累死。那么,如何解决这个问题呢?接下来你将看到,使用jspservlets技术相结合是构建应用系统地一种好方法。

不同的体系
  早期的jsp规范提出了两种用jsp技术建立应用程序的方式。这两种方式在术语中分别称作jsp model 1 和jsp model 2,它们的本质区别在于处理批量请求的位置不同。在model 1体系中,如图1所示,jsp页面独自响应请求并将处理结果返回客户。这里仍然存在表达与内容的分离,因为所以的数据存取都是由bean来完成的。尽管model 1体系十分适合简单应用的需要,它却不能满足复杂的大型应用程序的实现。不加选择地随意运用model 1,会导致jsp页内被嵌入大量的脚本片段或java代码,特别是当需要处理的请求量很大时,情况更为严重。尽管这对于java程序员来说可能不是什么大问题,但如果jsp页面是由网页设计人员开发并维护的――通常这是开发大型项目的规范――这就确实是个问题了。从根本上讲,将导致角色定义不清和职责分配不明,给项目管理带来不必要的麻烦。


  图1:jsp model 1 体系结构

  图中文字:browser:浏览器;request:请求;response:响应;application server:应用服务器;enterprise servers/data sources:企业服务器/数据源。

  model 2体系结构,如图2所示,是一种把jspservlets联合使用来实现动态内容服务的方法。它吸取了两种技术各自的突出优点,用jsp生成表达层的内容,让servlets完成深层次的处理任务。在这里,servlets充当控制者的角色,负责管理对请求的处理,创建jsp页需要使用的bean和对象,同时根据用户的动作决定把那个jsp页传给请求者。特别要注意,在jsp页内没有处理逻辑;它仅负责检索原先由servlets创建的对象或beans,从servlet中提取动态内容插入静态模板。在我看来,这是一种有代表性的方法,它清晰地分离了表达和内容,明确了角色的定义以及开发者与网页设计者的分工。事实上,项目越复杂,使用model 2体系结构的好处就越大。


  图2:jsp model 2体系结构

  图中文字:instantlate:瞬间延时;controller、view、model分别为mvc设计模式中的控制者、试图、模型;其他同图1。

  为了进一步阐明model 2体系结构的概念,我们来看一个用它实现的例子:一个叫做“音乐无国界”的网上音乐商店。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons