利用servlet filter的特点
servlet filter是Servlet2。3规范中引入的,但是这些filter同样有利于
JSP开发和维护。因为
JSPs需要被转换成servlets,
JSPs与servlet技术紧密相关。因此servlet规范的重要发展会影响到
JSP的发展,对此你不应该感到奇怪。
Servlet filters是Intercepting Filter模式的J2ee实现,因此提供了这个模式的所提供的特点,包括更好的维护性,少的代码冗余以及更好的可移植性。这是因为:通常你需要加入服务到每个
JSP页面中,而现在可以通过将这些服务放到一个filter中。并且这些
JSPs根本不需要这些filter的存在。因为在可插入的filters与
JSPs之间没有关联性,因此在filter中的修改将不会直接影响到
JSPs。你可以使用filter链,使用不同的filter的组合,每个filter用来实现不同的目的。
JSP网络应用中servlet filter的作用
下面的两个例子说明了在基于
JSP的网络应用中servlet filter的作用。在许多的安全配置中,每一个
JSP页面都会检验会话ID和其他一些安全性来授权一个
JSP调用。你可以将这些在每个
JSP页面中的检验代码移植到一个servlet filter中,并且确保这个filter在调用每个
JSP页面之前被调用。这样就提高了
JSPs的可维护性和可移植性。你可以仅仅的在这一个servlet中进行一些安全检验方面的修改,或者是在其中加入一些和安全相关的代码。而不是在每一个
JSP页面中进行修改。如果将来整个安全机制改变了,系统中唯一要修改的地方仅仅是这个filter,独立的
JSP页面将不需要任何修改。
在上一篇“
JSP Best Practices”中,我推荐将异常信息存储到“Secondary Storage”中,并且仅仅的提供给用户一个可以检索这些异常信息的一个标志(and only providing the user with an identifier to search the storage for the entire exception trace)。在这种情况下servlet filter非常的有用。你可以通过配置来使网络应用(Web Application)在调用异常
JSP时自动的来执行用来记录异常日志的filter。Sevlet规范提出了许多的潜在的servlet filter用法。
为
JSPs的创建API文档(document.nbspthe APIs for your
JSPs)
Java的许多悦人心意的特点之一便是它支持JavaDoc。通过JavaDoc可以快速而容易的为java代码提供Web-based的文档。不幸的是,javadoc工具不支持
JSP,并且
JSP规范没有“唤起”一个方法来提供“
JSP APIs”。
什么是
JSP API?
能够不通过阅读
JSP的全部的代码就能够快速的确定一些
JSP方面是非常之有用的。比方说,你需要知道哪些变量是绑定到会话(session),请求(request)和应用(application)的范围,并且这些变量是具体的被绑定到了具体的哪一个范围之上。另外一个
JSP API用处的例子是在
JSP segment之中,segment需要知道在被包含的时候,调用它们的
JSP中已经声明和制定了哪些变量(Another example of useful
JSP API information is denoting in
JSP segments which variables they require the calling
JSP to have declared and defined when including them)。
JSP规范没有涉及关于如何的建立
JSP API的文档。Sun的
JSP 1.x 代码公约文档讨论将注释和作者,版权,以及描述的信息一起写在
JSPs的上部,但是我喜欢更详细的记录
JSPs的期望的输入(but I like to document.nbspmy
JSPs' expected inputs
more thoroughly)。
因为
JSP规范中没有涉及到这些,因此没有一个标准的用来注释
JSP API。一个方法是在
JSP中使用java代码(scriptlets)并且在代码中嵌入javadoc形式的注释(/** javadoc comment */)。尽管我很少在
JSPs中使用java代码,但是这是在服务器端保留这些注释的最简单的方法。使用XML/HTML风格的注释会将
JSP API暴露在客户端,这是一个很不好的方法。
我知道有两种免费可以使用的产品可以用来为你的
JSPs做注释,SourceForge.net的
JSPDoc以及OSDN(Open Source Development Network)的Freshmeat.net的
JSPDoc。(关于两种工具的详细情况见resource这里我将简要的介绍一下这两个工具。
JSPDoc(SourceForge)
SourceForge的
JSPDoc可以用来为
JSPs生成Javadoc风格的文档。这个工具通过将XML-Compliant的标签放入到Javadoc风格的注释(/** */)之中,而这些注释是放在了
JSP page的java代码中。这个工具的缺点是目前它仅仅支持
JSP pages,尽管对
JSP document.支持已经在计划列表中。
这个工具还提供了转换
JSP pages到
JSP document.功能。因为我从一开始就编写
JSP document.因为我没有用过这项功能,但是对于想从
JSP pages转换到
JSP document.用户来说,这是一个很好的工具。还要另外一个功能就是将
JSP document.换到
JSP pages。
JSPDoc(Freshmeat.net)
Freshmeat的
JSP 文档生成器
JSPDoc从
JSPs中抽取信息来创建Javadoc风格的基于Web的文档页面。这个工具的一个优点是它能够将产生的
JSP文档与用Javadoc工具产生的java类的文档结合起来。缺点是,为了产生注释要求有一个相当严格的注释结构。这个特殊的语法使用了Javadoc的(/** */)但是并不能够识别@符号,而@在标准javadoc是有一定的含义的。另一个缺点就是这个工具不支持XML-compliant的
JSP document.而是要求用的语法结构。This product is available under the Mozilla public license.
JSP document.tion for
JSP document. 因为
JSPDoc和
JSPDoc都不支持
JSP document.我利用
JSP document.XML-compliance的特性来产生Javadoc形式的文档。使用XSLT stylesheet,可是很容易的来为
JSP document.建HTML页面形式的注释文档。而且不需要自定义的解析。因为当你的
JSP是一个正确的XML文档时有标准的工具(比方Xalan)能够进行这些处理。