JSTL 源码研究之一:部署源码的调试环境

要研究 JSTL 源码,第一步就把源码部署好,让它能够跑起来。整个思路很简单:下载源码,部署源码调试环境。由于对 eclipse 比较熟悉,所以打算用 eclipse 来实现这个思路:通过 eclipse 直接到 SVN 服务器下载代码,再配置成 Dynamic Web Project。下面就是具体操作过程:

新建工程

在 eclipse 中新建一个工程:选 SVN 方式获取代码,并配置为 Dynamic Web Project

  • SVN: http://svn.apache.org/repos/asf/tomcat/taglibs/standard/trunk
  • 参考页面: http://tomcat.apache.org/taglibs/standard

配置工程

这个环节会比较繁琐些。

解决依赖问题

对具体的依赖关系,参 README_bin.txt 里的 LIBRARY DEPENDENCIES 介绍

  • Xalan
    • http://archive.apache.org/dist/xml/xalan-j/binaries/
    • 下载最新的 zip 包,解压后把那几个 jar 放到工程里 examples\web\WEB-INF\lib 目录下
  • JAXP 1.2
    • http://jaxp.java.net/downloads.html
    • 下载最新的 jar 包,放到工程里 examples\web\WEB-INF\lib 目录下
  • JDBC Standard Extension 2.0 (这个我不打算去碰,前端去操作数据库比较讨厌,暂时不考虑)
  • 以及 tomcat 里的 el-api.jar, jsp-api.jar, servlet-api.jar

注:xalan, jaxp 的包一定要放在 examples\web\WEB-INF\lib 目录下

xalan jaxp

设置源码路径

如图所示,我目前是这样设置的:

source path

部分测试代码,我这里暂时没有设置进来。

修改几个类

由于依赖版本的关系,有几个然后需要改几个类,由上图也能看出,那几个类位于 example/src, impl/src/main/java 中,具体修改无外乎调整 imports, 子类实现的方法不够,需要增加,这里不赘述了。

修改 web content root directory

调整 web content root directory 到 examples/web 。直接修改.settings/org.elcipse.wst.common.component 就行,方法参:http://www.goomoon.com/it/program/J2EE/789.html

添加标签配置文件

需要下载 javax.servlet.jsp.jstl-1.2.1.jar (http://jstl.java.net/download.html),解压后,在 /javax.servlet.jsp.jstl-1.2.1/META-INF 把标签配置问题找出来,加到这个工程里。

不需要配置 web.xml —— 这也说明把标签配置文件直接放到规范的文件夹后,web.xml 可以不用再写配置文件的路径信息。这一步下载的 jar 包并非 Apache 的,但也能用,因为它们都遵循同样的接口标准。

运行

通过前面介绍的步骤:从 SVN 上 check out 代码——建立 Dynamic Web Project——补充了 jar 包——设置了代码目录——修改了几个类——调整了 web content root directory——添加标签库配置文件后,就可以启动这个 web 工程了:

jstl example home page

如果能看到这个让人激动的页面,表示本地可能把 jstl 源码布置好了。再看看这个页面:http://localhost:8081/jstlweb/elsupport/Out.jsp

jstl cout jsp

如果出现上图,说明 jstl 的源码就已经布置好了。

后记:jstl 的实现可以有很多版本,这里选择的是 apache 的实现。