Archive for the ‘Open Sources’ Category
一个偶然的点击发现了一个使用纯Java编写的处理XML的类库,里面涉及了java底层的一些知识,包括反射、泛型、注释等等。决定从这个小框架的研究开始学习java jdk的底层知识。
POI是Apache的Jakata项目,POI 代表 Poor Obfuscation Implementation,即不良模糊化实现。POI 的目标就是提供一组 Java API 来使得基于 Microsoft OLE 2 Compound Document 格式的 Microsoft Office 文件易于操作。
POI的jar包现在为3.6版本的了,在网上搜索一下可以搜到2.5版本、3.01版本、3.5版本的,而且每个版本之间的差异很大。由于公司项目需要Excel的导入导出功能,而且公司项目中的POI jar包为2.5版本的,所以只能基于POI-2.5.1.jar进行开发。
JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。
Java + XML = JDOM !
JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念以及映射),把SAX和DOM的功能有效地结合起来。
Jdom是用Java语言读、写、操作XML的新API函数。Jason Hunter 和 Brett McLaughlin公开发布了它的1.0版本。在直觉、简单和高效的前提下,这些API函数被最大限度的优化。在接下来的篇幅里将介绍怎么用Jdom去读写一个已经存在的XML文档。
现在开始学习如何用myeclipse创建birt报表,记录如何创建报表的过程,虽然没有图片,但是整个步骤还是非常清晰的。
一、 新建一个报表项目Report Web Project
l 创建一个报表Report,选定所在的项目,填写报表名称,选中一个模版
二、 设置报表的属性。
1.设置数据源信息
l 创建一个数据源Data Sources,设置一个jdbc连接,当然也可以设置其他数据源
- In the Data Explorer view, right-click Data Sets and choose New Data Set.
- On New Data Set, Choose Next.
- On Query, in Available Items, expand one or more tables in the ClassicModels database.
- To create a SQL query, drag column names from Available Items [...]
commons-logging是为”所有的Java日志实现”提供一个统一的接口,它自身的日志功能平常弱,而log4j功能非常强大全面,所以两者配合使用.
commons-logging工作原理:
1. 首先在classpath下寻找自己的配置文件commons-logging.properties,如果找到,则使用其中定义的Log实现类
2. 如果找不到commons-logging.properties文件,则在查找是否已定义系统环境变量org.apache.commons.logging.Log,找到则使用其定义的Log实现类
3. 查看classpath中是否有Log4j的包,如果发现,则自动使用Log4j作为日志实现类
4. 使用JDK自身的日志实现类(JDK1.4以后才有日志实现类)
5. 使用commons-logging自己提供的一个简单的日志实现类SimpleLog
Log4j是Apache的一个开放源代码项目,使用Log4j,我们可以很方便的来记录日志.
LOG4J的配置之简单使它遍及于越来越多的应用中了:Log4J配置文件实现了输出到控制台、文件、 回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。
使用log4j前需要定义配置文件,也可以不使用,而是在代码中配置log4j环境.但是使用配置文件使应用程序更加灵活。
log4j配置文件有三个主要的组件:Logger,Appender和Layout,分别为日志类型,日志输出目的地,日志输出格式.
跟proxool类似,log4j支持两种类型的配置文件,xml和properties
log4j.properties配置文件如下:(需要把log4j的配置文件放在src下)
log4j.rootLogger = [level], appenderName, appenderName, … (level是错误级别,appenderName是输出目的地,可以定义多个)
level优先级分别为FATAL、ERROR、WARN、INFO、DEBUG 5个级别.通过定义的级别,你可以控制程序中的日志输出.比如在这里定义了ERROR级别,程序中只有FARAL、ERROR 级别的LOG会被输出.
Velocity是什么?
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
当Velocity 应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。
Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。 Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。
关于模板引擎
模板引擎作为整体概念,Velocity 作为具体实现,它们的生命在 HTML 之外。Velocity 把数据合并到文本主体中不同的点上。文本可以是文字、电子邮件或 HTML。由于采用这种方式,Velocity 模板引擎有点儿像 Microsoft Word 的“邮件合并”特性。邮件合并允许您方便地把动态数据(例如姓名、地址和电话号码)合并到信件中。
公司项目解析xml使用的是SAX(Stream API for XML)解析xml数据字典。关于SAX,Simple API for XML(简称SAX)是个循序存取XML的解析器API。SAX提供一个机制从XML文件读取资料。它是除了文档对象模型(DOM)的另外一种流行选择。
优点
SAX解析器在某些方面优于DOM风格解析器。SAX解析器的内存使用量一般远低于DOM解析器使用量。DOM解析器在任何处理开始之前,必须把整棵树放在内存,所以DOM解析器的内存使用量完全根据输入资料的大小。相对来说,SAX解析器的内存内容,是只基于XML档案的最大深度(XML树的最大深度)和单一XML项目上XML属性储存的最大资料。这两个总是比整颗解析树本身还小。
因为SAX事件驱动的本质,处理文件通常会比DOM风格的解析器快。内存存取耗时,所以DOM较大的内存
使用也是一个效能议题。
因为SAX的本质,从磁盘串流读取是可行的。无法放入内存的XML文件只可能使用SAX解析器(或另外的
串流XML解析器)来处理。
缺点
SAX事件驱动的模型对于XML解析很有用,但它确实有某些缺点。
某些种类的XML验证需要存取整份文件。例如,一个DTDIDREF 属性需要文件内有项目使用指定字串当成
DTD ID属性。要在SAX解析器内验证,必须追踪每个之前遇过的ID和IDREF属性,检查是否有任何相符。
更甚者,一个IDREF不符合ID,使用者只会在整份文件都解析完后才发现,若这种连结对于建立有效输
出是重要的,那浪费在处理整份文件的时间只能舍弃。
另外,某些XML处理仅要求存取整份文件。举例来说,XSLT及XPath需要能够任何时间存取任何解析过的
XML树。当SAX以用来建构此树时,DOM解析器在设计上已经是如此了。
