解压struts2你会看到一大堆的jar包。我的是struts2.3.15.2。lib目录下有126个jar包。作为新手一看就懵了。现在我来给大家详解一下这126个jar用途,以及核心jar包。至于其他的你如果用到的话。就自己去对照者列表用。
antlr:自定义编译器生成工具。我是这么理解的,antlr是一个工具,提供一些基础类让我们定义自己的语法和词法。通过这个工具能够生成语法分析器和词法分析器。最后做一个驱动程序驱动语法和词法分析器就能做一个自己的编译器了。好高深,基本上用不到。常用的我知道的是hibernate框架通过这个工具,将hql转为sql。参见:http://www.blogbus.com/dreamhead-logs/1583119.html
aopalliance:aop alliance是一个组织名称,这个组织定义了一套aop标准接口。aop面向切面编程是一种很好的编程思想。在spring中被广泛应用。aopaliance.jar 就是一个实现了aop标准接口的包。
asm:字节码操作框架。可以理解为通过asm可以在程序运行时,通过修改类的字节码给类新增方法,修改方法等操作。参考:http://blog.csdn.net/liyangbing315/article/details/5472862。我是没看懂
asm-commons:没有找到详细的用途说明,但是打开jar包,我们能看到许多以Adapter结尾的类。所以我猜想,这个jar包应该是asm的适配器。至于什么叫适配器,这就牵扯到适配器设计模式。参见:http://www.cnblogs.com/nankezhishi/archive/2012/05/31/2529201.html
asm-tree:同理,打开看了以后判断肯可能是asm。
builder:可能是定义了一些模板,这个jar应该适用于构建复杂对象(对象中包含很多其他类的对象)。参见Builder设计模式
classworlds:classworlds
is a framework for container developers who require complex manipulation of Java's ClassLoaders. Java's nativeClassLoader
mechanims and classes can cause much headache and confusion for certain types of application developers. Projects which involve dynamic loading of components or otherwise represent a 'container' can benefit from the classloading control provided by classworlds
.根据这段话,我理解classworlds.jar是一个用户自定义的classloader。
commons-beanutils:struts框架利用反射机制操作bean。
commons-chain:实现责任链设计模式的Java 类库
commons-collections:对java标准collection类进行扩展
commons-digester:用于处理struts-config.xml配置文件
commons-fileupload:struts上传文件
commons-io:针对java.io.InputStream和Reader进行了扩展
commons-lang:对java.lang.*的扩展
commons-logging:日志包,实现了JCL接口。将一些错误日志输出到err上
commons-logging-api:日志接口。用户适配器模式开发。
commons-validator:用来把验证规则程序提取出来,以供重复使用
……………………待补充……………………