struts中一些常用包的详解

commons-beanutils.jar
  Commons-Beanutils这个是jakartacommons项目中的一个子项目。这个项目开发的目的是帮助开发者动态的获取/设值JavaBean的属性,同时解决每次都要写getXXX和setXXX的麻烦。
commons-digester.jar
  Digester本来仅仅是JakartaStruts中的一个工具,用于处理struts-config.xml配置文件。显然,将XML文件转换成相应的Java对象是一项很通用的功能,这个工具理应具有更广泛的用途,所以很快它就在JakartaCommons项目(用于提供可重用的Java组件库)中有了一席之地。

  在内部, Struts 使用来自于Jakarta Commons[ASF, Commons]项目的Digester来解析Struts配置文件。Digester 使用struts-configDTD来校验文档的格式,并且创建文档所描述的Java对象。如果XML文件包含了非正式文档化的元素,或者以非正式文档化的方式使用了元素,Digester将不会处理这个文件。

commons-fileupload.jar
  Commons-FileUploadFileUpload使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力struts中上传文件要用到。
  struts的验证框架依赖以下的两个包:

  commons-validator.jar
  (校验方法)和校验规则。支持校验规则的和错误消息的国际化。 struts使用它对表单进行验证。

  jakarta-oro.jar
  Commons-EL Commons-Jexl Search Jakarta OROJakartaORO一套文本处理工具,能提供perl5.0兼容的正则表达式,AWK-like正则表达式,glob表达式。还提供替换,分割,文件名过虑等功能。

  struts.jar
  struts核心包。

  其他的一下jar包
  commons-collections.jar
  扩展了标准的JavaCollection框架,提供了额外的Map、List和Set实现以及多个有用的工具类库。功能比java.util.*强大。
  commons-logging.jar:
  ApacheCommons包中的一个,包含了日志功能。这个包本身包含了一个SimpleLogger,但是功能很弱。在运行的时候它会先在CLASSPATH找log4j,如果有,就使用log4j,如果没有,就找JDK1.4带的java.util.logging,如果也找不到就用SimpleLogger。commons-logging.jar的出现是一个历史的的遗留的遗憾,当初Apache极力游说Sun把log4j加入JDK1.4,然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了,因此拒绝了Apache的要求,使用自己的java.util.logging,这个包的功能比log4j差的很远,性能也一般。
  后来Apache就开发出来了commons-logging.jar用来兼容两个logger。因此用commons-logging.jar写的log程序,底层的Logger是可以切换的,你可以选择log4j,java.util.logging或者它自带的SimpleLogger。不过我仍然强烈建议使用log4j,因为log4j性能很高,log输出信息时间几乎等于System.out,而处理一条log平均只需要5us。你可以在Hibernate的src目录下找到Hibernate已经为你准备好了的log4j的配置文件,你只需要到Apache网站去下载log4j就可以了。commons-logging.jar也是必须的jar包。

时间: 2024-08-22 15:04:23

struts中一些常用包的详解的相关文章

在Struts中使用Validator验证框架详解

Validatro框架以成为Jakarta的公共项目的一部分,可以从http://jakarta.apache.org/commons/下载单独的Validator框架,在Struts中已经呆了这个框架. Validator主要依赖两个jar包 Jakarta-oro.jar:-提供一组处理文本的类,具有文本替换.过滤.和分割功能. Commons-validator.jar:提供了一个简单.可扩展的验证框架,包含了通用的验证方法和验证规则. 在用Struts中用这个框架,需加入这两个包,用起来

python中list常用操作实例详解

  本文实例讲述了python中list常用操作.分享给大家供大家参考.具体分析如下: 1.定义list ? 1 2 3 4 5 6 7 >>> li = ["a", "b", "mpilgrim", "z", "example"] >>> li ['a', 'b', 'mpilgrim', 'z', 'example'] >>> li[0] 'a' &

js基础之DOM中document对象的常用属性方法详解_javascript技巧

-----引入 每个载入浏览器的 HTML 文档都会成为 Document 对象. Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问. 属性 1  document.anchors  返回对文档中所有 Anchor 对象的引用.还有document.links/document.forms/document.images等 2  document.URL       返回当前文档的url 3  document.title       返回当前文档的标题 4  do

Android 中倒计时验证两种常用方式实例详解

Android 中倒计时验证两种常用方式实例详解 短信验证码功能,这里总结了两种常用的方式,可以直接拿来使用.看图: 说明:这里的及时从10开始,是为了演示的时间不要等太长而修改的. 1.第一种方式:Timer /** * Description:自定义Timer * <p> * Created by Mjj on 2016/12/4. */ public class TimeCount extends CountDownTimer { private Button button; //参数依

Java开发中的23种设计模式详解(转)

Java开发中的23种设计模式详解(转) 设计模式(Design Patterns)                                   --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合

AngularJS 中的Promise --- $q服务详解

先说说什么是Promise,什么是$q吧.Promise是一种异步处理模式,有很多的实现方式,比如著名的Kris Kwal's Q还有JQuery的Deffered. 什么是Promise 以前了解过Ajax的都能体会到回调的痛苦,同步的代码很容易调试,但是异步回调的代码,会让开发者陷入泥潭,无法跟踪,比如: funA(arg1,arg2,function(){ funcB(arg1,arg2,function(){ funcC(arg1,arg2,function(){ xxxx.... })

Python中的zipfile模块使用详解

  这篇文章主要介绍了Python中的zipfile模块使用详解,zipfile模块是用来操作zip文件,需要的朋友可以参考下 zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile类来操作zip文件,下面具体介绍一下: class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]]) 创建一个ZipFile对象,表示一个zip文件.参数file表示文件的路径或类文件对象(file-like object);参

seajs中模块的解析规则详解和模块使用总结

 这篇文章主要介绍了seajs中模块的解析规则详解和模块使用总结,需要的朋友可以参考下 seajs github 模块标识已经说的相对清楚了.但并没有面面俱到,特别是当你需要手写 [模块ID]和[模块依赖]的时候,或者自己写自动化工具来做 transport 的时候(ps:spm貌似适应性不是很强也不易用,毕竟每个项目的目录结构可能相差很大,且不易改变.当然如果他的定位是包管理工具就别指望它来做你的项目的自动化构建工具了),ID的解析规则就需要了解透彻了. 注意事项: 1. 顶级标识始终相对 b

JavaScript中浅讲ajax图文详解_javascript技巧

1.ajax入门案例 1.1 搭建Web环境 ajax对于各位来说,应该都不陌生,正因为ajax的产生,导致前台页面和服务器之间的数据传输变得非常容易,同时还可以实现页面的局部刷新.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 对于JavaWeb项目而言,ajax主要用于浏览器和服务器之间数据的传输. 如果是单单地堆砌知识点,会显得比较无聊,那么根据惯例,我先不继续介绍ajax,而是来写一个案例吧. 打开