2005-11-25

Servlets和JSP开发原则

来源: 本站收集整理 作者:佚名 评论 0 条
 


图1: 调用JSP页面的流程

  以后再有客户访问这个页面的时候,只要该文件没有发生过更改,JSP引擎就直接调用已经装载的Servlet。假如已经做过修改的话,那就会再次执行以上过程,翻译、编译并装载。其实这就是所谓的“第一人惩罚”。因为首次访问的时候要执行一系列以上的过程,所以会耗费一些时间;以后的访问就不会这样了。

  开发原则

  这一部分我们列出一些开发原则,重点是JSP页面。关于如何分离表现和内容的MVC因为要涉及到JSP和Servlet的整合,我们稍候再谈。

  不要在JSP页面中嵌入过量的Java代码:对于非常简单或是测试性的代码,把所有的Java 代码直接放入JSP页面内是没有问题的。但是这种方法不应该被过度使用,否则就会产生一大堆HTML和Java混合起来的代码,让人难以阅读和理解。解决方法是写一个单独的类,用来执行相关的计算。一旦这个类测试通过,就可以把它放在任何执行同样计算的场合中。这样可以促进代码的复用。

  选择合适的包含(include)机制: 假如一个应用中每个页面有一样的抬头和底部,或者还有导航条,那么就应该把它们放到一个单独的文件中,然后在每一个页面中使用包含机制把它们加入到这个页面中:

Include 指令: <%@ include file="filename" %>或等效xml语法
<jsp:directive.includefile=”filename” />

Include 动作: <jsp:include page="page.jsp" flush="true" />

  Include指令是当JSP页面翻译为Servlet的时候包含另外一个文件,Include 动作是当请求时包含另外一个文件的输出。假如被包含的文件不是经常改动的时候,我建议使用Include 指令,这样速度更快。假如被包含的文件需要不时改动或者知道请求时才能决定需要包含的内容时,那么应该使用Include 动作。

  假如你使用JSP标准标记库(JavaServer pages Standard Tag Library即JSTL)的话,那么还有第三中包含机制<c:import>,可以用来包含本地或者远程的资源。例如:

<c:import url="./copyright.html"/>
<c:import url="http://www.somewhere.com/hello.xml"/>

  不要把业务逻辑和表示混合在一起: 复杂的应用涉及大量的代码,因而把业务逻辑和前端的表示相分离就显得格外重要,这种分离可以让任何一方的变化不会影响到另外一方。所以,所有的JSP代码都应该限制在表示层,可是假如这样的话,你如何实现你的业务逻辑呢?这就是JavaBean所做的事情。JavaBean技术是一个独立于平台的组件模型,它让开发者编写、测试通过一个组件后,可以随处使用,提高了复用性。在JSP技术中,JavaBean实现了业务逻辑部分,它把数据返回给JSP页面,由JSP页面负责格式化数据并输出到客户端的浏览器。在JSP页面中使用JavaBean组件的好处是:

  产生了可以复用的组件:任何应用都可以使用这些组件

  可以把业务逻辑和表示相分离:你可以修改数据的显示方式而不用考虑业务逻辑。这样做的结果也可以明确工作中开发人员的分工,网页开发人员可以把精力放到如何显示数据上,Java开发者则更为眼球业务逻辑的实现。

  对于JavaBean你不用提供源代码,这样你的代码就不会被浏览器网页的人轻易获得,可以保护你的劳动成果。

  假如你的应用中使用了EJB组件,那么业务逻辑就应该放置在EJB中,因为EJB模型提供了生命周期治理、事务治理以及多客户访问域对象(Entity Beans)。你可以仔细看一下Enterprise BluePrints中的例子,它就是这么做的。

  使用定制的标记: 上面我们已经讨论过,把所有Java代码嵌入到JSP页面内并不合适,因为网页开发人员并不一定懂得Java语言,更难以理解Java语法。JavaBean可以封装很多Java代码,不过在JSP页面内使用JavaBean仍然要求页面开发人员了解一些Java语法。
共5页: 上一页 [1] 2 [3] [4] [5] 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:在 C# 中加载自己编写的动态链接库  
下一篇:用浏览器来接收C# 的程序返回的时间cool!
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号