2005-11-25

Servlets和JSP开发原则

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

  JSP技术中包含了定制标记库的功能。Java开发人员可以生成自己的标记库,这样网页设计人员就可以使用类似HTML的语法来使用这些标记。编写和使用自己定制的标记库可以在更大程度上促进业务逻辑和表示的分离。使用定制标记库主要有以下好处:

  可以消除在JSP页面中使用scriptlet 标记使用的任何参数都可以通过属性传入,从而不需要使用Java代码就可以达到希望的目的。

  可以简化使用 网页设计人员不需要学会使用Java语法,他们可以用类似HTML语法就可以使用标记。
不懂Java的网页设计人员可以使用标记库来完成单独使用HTML不能完成的任务。

  提高了复用性 标记库完全可以复用,这可以节省开发和测试的时间。Scriptlet代码只能在“拷贝粘贴”级别上进行“复用”。

  简单说来,你可以像用HTML构建表示层一样使用标记库完成非常复杂的任务。下面是表页标记库的一些注重事项:

  1. 保持简洁性:假如一个标记需要好几个属性的话,那么尽可能把它分为几个标记。

  2. 保持复用性:同标记的使用人员(网页设计人员)多多交流,尽量开发出可以高度复用的标记库。

  3. 不要一切都从头开始:现在已经有一些可以免费使用的标记库,比如Jakarta Taglibs。假如你要用到一个标记,先看看是不是已经有现成的可以使用。

  不要“重新发明轮子”,不要一切从头开始: 通过定制组件可以提高复用性,不过定制组件仍然需要编写、测试和调试程序。问题是这个事情别人可能已经实现了,而且你的实现方式并不一定比人家做得更好。这就是JSP标准标记库(JavaServer Pages Standard Tag Library, JSTL)要做的事情(JSTL请参考JSTL官方网站)。JSTL提供了循环、读属性、遍历各种数据结构、条件表达式求值等各种标记。它也提供了一些复杂的标记,甚至像解析XML文档的标记它都有。所以假如你要用到一个标记的话,最好先看看有没有别人已经实现的可以使用,而不要次次从头开始,自己搞一套。

  使用JSTL表达使语言(JSTL Expression Language): 传递给JSP页面的数据一般通过JSP作用域属性或者请求参数来进行。专门为网页开发者设计的表达式语言(Expression Language, EL)把使用作用域属性传递信息作为从业务逻辑向JSP页面传递信息的标准方式。这里要注重的是,EL只是JSP技术中要害的一个方面,并不是一种通用的程序设计语言。相反,它只是一种数据访问语言,它可以简化应用程序的数据的访问,不用Scriptlet和请求时表达式求值就可以访问数据。
  在JSP中,网页设计师要使用表达式语法<%= name %>或JavaBean组件来取得某些变量或属性的值,例如:

<tagLib:tag attribute="<%=

pageContext.getAttribute("name") %>">

  或

<%= aCustomerBean.getAddress().getCountry() %>

  表达使语言让网页设计师可以使用简化的语法来访问信息。假如你只是要访问一个简单的变量,你可以使用这样的语法:

<tagLib:tag attribute="${name}">

  假如你要访问一个嵌套JavaBean的属性,你可以这样:

<tagLib:tag attribute ="${

aCustomerBean.address.country}">

  表达式语言(EL)借用了JavaScript 的语法,所以假如你对JavaScript 很熟悉的话,你就会觉得巨爽。

  使用过滤器(filter): 过滤器是一个对象,可以传输请求或修改响应。它可以在请求到达Servlet/JSP之前对其进行预处理,而且能够在响应离开Servlet/JSP之后对其进行后处理。所以假如你有几个Servlet/JSP需要执行同样的数据转换或页面处理的话,你就可以写一个过滤器类,然后在部署描述文件(web.xml)中把该过滤器与对应的Servlet/JSP联系起来。
共5页: 上一页 [1] [2] 3 [4] [5] 下一页
(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:在 C# 中加载自己编写的动态链接库  
下一篇:用浏览器来接收C# 的程序返回的时间cool!
    评论加载中…
 推荐文章
     

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