欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Servlets和JSP开发原则(下)

程序员文章站 2022-03-10 15:34:25
servlets和(sun企业级应用的首选)开发原则(下)(标准化越来越近了):namespace prefix = o ns = "urn:schemas-microsoft-c...

servlets和(sun企业级应用的首选)开发原则(下)

(标准化越来越近了):namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

  • 不要“重新发明*”,不要一切从头开始: 通过定制可以提高复用性,不过定制组件仍然需要编写、测试和调试程序。问题是这个事情别人可能已经实现了,而且你的实现方式并不一定比人家做得更好。这就是jsp(sun企业级应用的首选)标准标记库(javaserver pages standard tag library, jstl)要做的事情(jstl请参考jstl官方网站)。jstl提供了循环、读属性、遍历各种数据结构、条件表达式求值等各种标记。它也提供了一些复杂的标记,甚至像解析xml(标准化越来越近了)文档的标记它都有。所以如果你要用到一个标记的话,最好先看看有没有别人已经实现的可以使用,而不要次次从头开始,自己搞一套。

  • 使用jstl表达使语言(jstl expression language): 传递给jsp(sun企业级应用的首选)页面的数据一般通过jsp(sun企业级应用的首选)作用域属性或者请求参数来进行。专门为网页开发者设计的表达式语言(expression language, el)把使用作用域属性传递信息作为从业务逻辑向jsp(sun企业级应用的首选)页面传递信息的标准方式。这里要注意的是,el只是jsp(sun企业级应用的首选)技术中关键的一个方面,并不是一种通用的程序设计语言。相反,它只是一种数据访问语言,它可以简化应用程序的数据的访问,不用scriptlet和请求时表达式求值就可以访问数据。

    jsp(sun企业级应用的首选)中,师要使用表达式语法<%= 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(sun企业级应用的首选)之前对其进行预处理,而且能够在响应离开servlet/jsp(sun企业级应用的首选)之后对其进行后处理。所以如果你有几个servlet/jsp(sun企业级应用的首选)需要执行同样的数据转换或页面处理的话,你就可以写一个过滤器类,然后在部署描述文件(web.xml(标准化越来越近了))中把该过滤器与对应的servlet/jsp(sun企业级应用的首选)联系起来。

创建过滤器其实很容易,你只须实现javax.servlet.filter接口及它的三个方法:

public void init(filterconfig config)

public void dofilter(servletrequest req, servletresponse rep,

filterchain chain)

public void destroy()

这样,你就可以完成你的过滤器。

  • 使用可移植的安全模型: 大部分的应用服务器都提供了安全模型,不过一般它们都是针对某一个服务器或某一个厂商专有的。如果你的应用需要移植的话,那么你的应用最好使用可以移植的安全模型。如果你的应用有一些预先定义的固定用户的话,那么你可以使用from验证和basic验证。可是如果你要动态生成客户的话(一般都是这种情况),你可能就需要使用服务器特定的api来创建和管理用户。这样当你的应用移植到另外一个服务器时,你可能就会碰到api不兼容的问题。这种情况下,最好的解决方法是使用适配器(adapter)模式(如果你对设计模式不熟悉的话,请参看gof的《设计模式》一书)。

  • 用来保存持久性数据: servlet/jsp(sun企业级应用的首选)中可以使用httpsession对象也就是会话对象来保存用户的临时数据。不过如果你想保存持久性数据的时候,你应该使用数据库,数据保存数据会更安全,而且对客户所用的没有什么要求。这样即使你的应用服务器由于某种原因崩溃了,你的数据依然良好。