本文以 c 标签为例来分析 JSTL 的源码。
JSTL 对标签的实现,比前面的看起来要复杂些,以 OutTag 为例,下图中,OutTag 出现在三个包中
真的不清楚为什么要写同名的三个类,而且 compat 和 el 包下的类内容也是一样的,但通过标签配置文件,可以找到实际用到的类。
浏览 core tag 部分的代码,做类图如下:
上面的类图很明显地反映出一个程序语言通用的地方,即程序语句的三种结构:顺序语句,条件判断,和循环结构。
趣事
在看源码时,发现很多类都是 Shawn Bayern 写的,就去搜了下,结果搜了一堆,都是和法学院相关,感觉不对劲,再搜"Shawn Bayer jstl",搜到维基页面 http://en.wikipedia.org/wiki/Shawn_Bayern,一看,乐了:这哥们儿还真行,后来转到法律去了,牛屄啊。他的官方个人主页是:http://www.law.fsu.edu/faculty/sbayern.html,这里对他的计算机经历一字未提。
附
类图的源文件在:https://cyiridiumsitewikineed.googlecode.com/svn/trunk/uml/jstl.zargo