当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > javascript > 正文 |
|
|||
Servlets和JSP Pages最佳实践 | |||
2005-12-30 19:21:11 文/45IT收集 出处:电脑软硬件应用网 | |||
Java Servlet技术与JSP技术使Java服务器端技术,目前他们控制了整个服务器端Java技术市场,并且逐渐成为构建商业Web应用的标准。Java开发者喜欢这些技术是由于很多的原因,包括:这些技术很容易学习,一次编写,处处运行(Write Once, Run Anywhere)。更重要的是,如果更高效地采用了下面的实践,Servlet与JSP能够帮助分开Web的表示与内容。“最佳实践”是被证明为开发高质量、可重用与易维护的基于Servlet和JSP的Web应用的较好方法。与此相对应的是,将Java代码混合在HTML中,这样很容易产生低效率、不易重用、难于维护的复杂应用程序。最佳实践将改变这些弊端。 本文将描述为Servlets与JSP准备的最佳实践的重要性;这里假设读者已经了解两者的基本工作原理。这篇文章将涵盖以下内容: 简要介绍Java Servlet与JavaServer Pages (JSP)。 当发出客户端请求的时候,调用service 方法并传递一个请求和响应对象。Servlet首先判断该请求是GET 操作还是POST 操作。然后它调用下面的一个方法:doGet 或 doPost。如果请求是GET就调用doGet方法,如果请求是POST就调用doPost方法。doGet和doPost都接受请求(HttpServletRequest)和响应(HttpServletResponse)。 最简单地说,servlets是能够使用print语句产生动态HTML内容的Java类。然而,有一点必须要提一下,那就是servlets是在一个容器内运行的,并且APIs 提供了对会话和对象的生命周期的管理。因此,当你使用servlets时,你就能获得Java平台的所有优势,它包括沙箱 (安全)、通过JDBC的数据库存取API和具有跨平台可移植性的servlets。 Java Server Pages (JSP) JSP页面如何工作? JSP页面实际上是一个带有传统HTML和Java代码的Web页面。JSP页面的文件扩展名是.jsp而并不是.html或.htm,该扩展名告诉服务器该页面需要特殊的处理,该特殊处理必须由服务器扩展或插件实现。 当一个JSP页面被读取时,他首先将被编译(JSP引擎来做这件事情)为一个Servlet。 这时候这个Servlet就像其他Servlet一样被交给Servlet引擎来处理。然后Servlet引擎读取那个Servlet对应的类(用ClassLoader)并且执行它,产生一个动态HTML页面(图1)。这个Servlet创建一些必需的元件,然后将这些元件作为一个字符串写入输出流(OutputStream),并显示在浏览器中。 下次请求该页面的时候,JSP引擎执行早就装载的servlet除非JSP页面早就更改,在这种情况下,会将它自动重新编译进一个servlet中并执行。 最佳实践 在HTML页面中不要过多使用Java代码: 将所有的Java代码直接放在JSP页面中,对于小项目而言没有问题,但是过度使用将会导致意大利面条似的代码,难于阅读,难于理解。减少Java代码的方法是编写独立的Java类来实现计算等逻辑。一旦测试了这些类,就创建了实例。 当JSP正在转换成Servlet时,第一种include机制将包含指定文件的内容(转换阶段),对于第二种include机制来说,当该页面执行后时,页面包含了用Response产生的内容。当被包含的页面不太改变的时候,我推荐使用第一种include指令方式,这种方式比较快,性能较好;当被包含的文件经常改变(其中也有动态内容)时,并且在执行主页的时候不能确定所要引入的的页面的时候,使用第二种include行为方式。 另一种include机制是使用JSP标准标记库(JSTL)中的<c:import> 行为标记。可以使用这种方式来包含本地的或者远程的文件,下面是一些例子: <c:import url="./copyright.html"/><c:import url="http://www.somewhere.com/hello.xml"/> 如果在你的应用程序中使用了Enterprise JavaBeans (EJBs)组件,必须将业务逻辑保留在EJB组件中,提供生命周期管理,事务支持与对多客户端对域对象(实体Beans)的存取。可以在Enterprise BluePrints 获得更为详细的资料。 使用自定义标记: 并不是所有HTML内容开发者都喜欢将Java代码(或scriptlets)嵌入在HTML文档中的,可能是因为他们不了解Java语言并且也不乐意学习它的语法。但是不能使用JavaBeans组件封装很多Java代码,在JSP页面中使用它们仍然要求内容开发者具有Java语法的知识。 JSP技术允许你通过标记库设备引入新的自定义标记。作为一个Java开发者,你可以通过引入能够部署并在HTML这类语法中使用的自定义标记扩展JSP页面。自定义标记通过进一步分隔业务逻辑和表示逻辑也允许你提供更好的封装。另外,它们提供了自定义表示的方法,而使用JSTL却很难做到这一点。 自定义标记的好处: 简而言之,你可以使用和使用HTML创建表达式一样的方法来通过自定义标记完成复杂的任务。 编写自定义标记库的时候,可以使用下列编程指南: 保持简单性:如果需要在一个标记中包含多个属性,那么最好将它分为多个标记。 在JSP 1.x中,页面作者必须使用表达式<%= aName %> 来存取系统的值,如下面的例子所示: <%= aCustomer.getAddress().getCountry() %> <someTags:aTag attribute="${aName}"> <someTags.aTag attribute="${ aCustomer.address.country}"> 如果可能使用过滤器: 过滤器是JSP技术的一项新功能。如果你曾经遇到过这样一种情况,那就是有多个servlet或JSP页面需要压缩它们的内容,那么在这种情况下你就能够编写一个简单的压缩过滤器并将它应用到所有的资源上。例如,在Java BluePrints中,通过过滤器来提供SignOn。 模型2体系结构,如图3所示,集成使用了servlets 和JSP页面。在该模型中,JSP页面用于表示层,并且servlets负责处理各类任务。Servlet作为一个控制器,负责处理请求并创建JSP页面所需的任何bean。该控制器也负责确定将该请求传递到哪个JSP页面。JSP页面检索servlet创建的对象,并提取动态内容插入在一个模板中。
图 3: JSP模型 2 体系结构 该模型促进了模型视图控制器(MVC)体系结构风格设计模式的使用。注意,早就存在多个框架能够实现该有用的设计模式,并将内容和表示真正地独立开来。Apache Struts是MVC的形式化框架。该框架非常适用于复杂的应用程序,在这些复杂的应用程序中单个请求或表单提交会产生看起来截然不同的结果。 结束语 请留心servlets和JSP技术,因为在这些技术中有许多激动人心的东西。例如,JavaServer Faces (JFC),是一个Java程序社区(Java Community Process),它的目标是定义一个标准的Web应用框架,这将很好地和Apache Struts集成。 |
|||
最新热点 | 最新推荐 | 相关文章 | ||
javascript实用技巧点滴(三) javascript实用技巧点滴(2) javascript实用技巧点滴(1) javascript教程 - 第一课 1.1 用js制作完善的日,月组合下拉框 利用JSP编程建立动态Web站点 用PHP制作留言板 PHP生成动态WAP页面 PHP实现文件下载 PHP4的session功能 |
关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 | |
Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号 |