在HTML页面中不要过多使用Java代码:将所有的Java代码直接放在JSP页面中,对于小项目而言没有问题,但是过度使用将会导致意大利面条似的代码,难于阅读,难于理解。减少Java代码的方法是编写独立的Java类来实现计算等逻辑。一旦测试了这些类,就创建了实例。
选择合适的include机制: 最好将页眉、页脚和导航条内容存储在单个文件中,并且不要重新动态产生它们。一旦将这些内容存储在各个独立的文件中,使用下面include机制中的任何一个就能在所有的页面中引入它们:
Include 指令: <%@ include file="filename" %>
Include行为: <jsp:include page="page.jsp" flush="true" />
当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"/>
不要将业务逻辑和表示混合起来:在更为复杂的应用中,并且更多的代码被引入时,很重要的一点是不要将业务逻辑与表示混在同一个文件中。分开业务逻辑与表示使得当其中的任何一方需要改动是不至于影响到另外一方。JSP仅仅被作为前台的表示。那么,该如何实现业务逻辑部分呢?这就是JavaBeans的用武之地了。JavaBeans技术是轻便的、平台无关的组建模型,它使开发人员编写组件并且可以处处运行。在JSP环境中,JavaBeans组件处理业务逻辑并返回数据给JSP页面,这反过来格式化从JavaBeans组件返回的数据,以便在浏览器中显示。JSP页面通过调用JavaBeans组件的get方法和set方法来操作Bean 的各项属性。使用JavaBeans技术的好处如下:
可重用:不同的应用可以使用同一个组件。
分离业务逻辑与表示:可以在JSP页面上改变数据的显示外观而不影响业务逻辑。换而言之,网页设计师只需要关注设计,Java开发人员只需要关注业务逻辑。
保持源代码的安全性,保护自己的知识产权。
如果在你的应用程序中使用了Enterprise JavaBeans (EJBs)组件,必须将业务逻辑保留在EJB组件中,提供生命周期管理,事务支持与对多客户端对域对象(实体Beans)的存取。可以在 Enterprise BluePrints 获得更为详细的资料。
使用自定义标记:并不是所有HTML内容开发者都喜欢将Java代码(或scriptlets)嵌入在HTML文档中的,可能是因为他们不了解Java语言并且也不乐意学习它的语法。但是不能使用JavaBeans组件封装很多Java代码,在JSP页面中使用它们仍然要求内容开发者具有Java语法的知识。
JSP技术允许你通过标记库设备引入新的自定义标记。作为一个Java开发者,你可以通过引入能够部署并在HTML这类语法中使用的自定义标记扩展 JSP页面。自定义标记通过进一步分隔业务逻辑和表示逻辑也允许你提供更好的封装。另外,它们提供了自定义表示的方法,而使用JSTL却很难做到这一点。
自定义标记的好处:
他们能够消除JSP应用程序中的scriptlets。标记必需的参数可以作为属性或内容体传递,因此,不需要Java代码初始化或设置组件属性。它们的语法非常类似。Scriptlets是使用Java代码编写的,但是可以在类似于HTML语法中使用自定义标记。它们能够提高非程序员内容开发者的生产率,允许它们执行HTML不行完成的任务。它们是可重用的。节省了开发和测试的时间。Scriptlets不是可重用的,除非你通过剪切粘贴 来“重用”。简而言之,你可以使用和使用HTML创建表达式一样的方法来通过自定义标记完成复杂的任务。编写自定义标记库的时候,可以使用下列编程指南:保持简单性:如果需要在一个标记中包含多个属性,那么最好将它分为多个标记。使它具有可用性:咨询标记的使用者(HTML开发者)从而获得高可用性。不要在JSP页面中发明一种编程语言:不要开发自定义标记让用户编写显式的程序。尽量不要重新发明轮子:目前有多个JSP标记库可用,如Jakarta Taglibs Project。查看这些标记库,看看是否有你所想要的东西。
不要重新发明轮子:虽然自定义标记提供了重用宝贵的组件的方法,但是仍然要创建、测试和调试它们。另外,开发者仍然要不断地重新发明轮子,该解决方案的效率不是最高的。问题就是通过提供一组颗重用的标准标记解决JavaServer Pages Standard Tag Library (JSTL) 。JSTL定义了一组在任何地方都一样工作的标准标记库,这样你就不再需要使用scriptlet(或各类供应商提供的迭代标记)在集合中进行迭代。 JSTL 包括各类标记,循环、不使用Java语法就读取属性、迭代各类数据结构、有条件地计算表达式、通过一种精确的方式设置属性和脚本变量并分析XML文档。
使用JSTL表达式语言: 使用JSP范围属性和请求参数将信息传递给JSP页面。表达式语言 (EL)是为页面作者特别设计的语言,将JSP范围属性提升为业务逻辑到JSP页面通讯的标准方法。然而Servlet和JSP,注意,然而EL是JSP技术的一个关键方面.
联系客服