﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-JAVA及相关技术学习</title><link>http://www.blogjava.net/a237359957/</link><description>Servlet</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:04:54 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:04:54 GMT</pubDate><ttl>60</ttl><item><title>Hibernate 所使用的jar包及作用</title><link>http://www.blogjava.net/a237359957/archive/2009/03/20/261042.html</link><dc:creator>乱せ英豪</dc:creator><author>乱せ英豪</author><pubDate>Fri, 20 Mar 2009 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/a237359957/archive/2009/03/20/261042.html</guid><wfw:comment>http://www.blogjava.net/a237359957/comments/261042.html</wfw:comment><comments>http://www.blogjava.net/a237359957/archive/2009/03/20/261042.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/a237359957/comments/commentRss/261042.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/a237359957/services/trackbacks/261042.html</trackback:ping><description><![CDATA[<p><a href="http://ant.apache.org/" target="_blank"><font size="2">ant-1.63.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://ant.apache.org/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ant 的核心包,在构建Hibernate 时会用到<br />
</font><a href="http://www.antlr.org/" target="_blank"><font size="2">antlr-2.7.5H3.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.antlr.org/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 语言转换工,Hibernate利用它实现 HQL 到 SQL的转换<br />
</font><a href="http://asm.objectweb.org/" target="_blank"><font size="2">asm.jar/asm-attrs.jar </font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://asm.objectweb.org/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ASM 字节转换库<br />
</font><a href="http://sourceforge.net/projects/c3p0" target="_blank"><font size="2">c3p0-0.8.5.2.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://sourceforge.net/projects/c3p0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C3PO JDBC 连接池工具<br />
</font><a href="http://cglib.sourceforge.net/" target="_blank"><font size="2">cglib-2.1.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://cglib.sourceforge.net/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 高效的代码生成工具, Hibernate用它在运行时扩展 Java类和实现 Java 接口<br />
</font><a href="http://jakarta.apache.org/commons/collections" target="_blank"><font size="2">commons-collections-2.1.1.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://jakarta.apache.org/commons/collections Apache 的工具集,用来增强Java对集合的处理能力<br />
<a href="http://jakarta.apache.org/commons/logging/" target="_blank"><font size="2">commons-logging-1.0.4.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://jakarta.apache.org/commons/logging/&nbsp;&nbsp;&nbsp;&nbsp; Apache 软件基我组所提供的日志工具<br />
</font></font><a href="http://gee.cs.oswego.edu/dl/classes%20/EDU/oswego/cs/dl/util/concurrent/intro.html" target="_blank"><font size="2">concurrent-1.3.2.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 线程同步工具,在使用JBoss 的树状缓存时需要用到<br />
</font><a href="http://java.sun.com/j2ee/connector/" target="_blank"><font size="2">connector.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://java.sun.com/j2ee/connector/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用连接多个应用服务器的标准连接器<br />
</font><a href="http://dom4.j.org/" target="_blank"><font size="2">dom4j-1.6.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://dom4.j.org/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dom4j XML 解析器<br />
</font><a href="http://sourceforge.net/projects/echache" target="_blank"><font size="2">ehcache-1.1.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://sourceforge.net/projects/echache&nbsp;&nbsp;&nbsp;&nbsp; 缓存工具.在没有提供其他缓存工具时,这个缓存工具是必不可少的<br />
</font><a href="http://java.sun.com/products/jass/" target="_blank"><font size="2">jaas.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://java.sun.com/products/jass/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 标准的 Java 权限和认证服务包<br />
</font><a href="http://hi.baidu.com/lanren_/blog/item/jaxen.org/" target="_blank"><font size="2">jaxen-1.1-beta-4.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http:jaxen.org/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通用的 XPath 处理引&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 擎<br />
</font><a href="http://www.jboss.com/products/jbosscache" target="_blank"><font size="2">jboss-cache.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.jboss.com/products/jbosscache&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JBoss 的一种树状缓存实现工具<br />
</font><a href="http://jboss.org/" target="_blank"><font size="2">jboss-common.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://jboss.org/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Jboss 的基础包,在使用 JBoss 的树状缓存时必须有此包<br />
</font><a href="http://jboss.org/" target="_blank"><font size="2">jboss-jmx.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://jboss.org/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JBoss 的 JMX 实现包<br />
</font><a href="http://jboss.org/" target="_blank"><font size="2">jboss-system.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://jboss.org/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JBoss 的核心,包括服务器和部署引擎<br />
</font><a href="http://java.sun.com/products/jdbc/download.html#spec" target="_blank"><font size="2">jdbc2_0-stdext.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://java.sun.com/products/jdbc/download.html#spec&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 标准的 JDBC 2.0 扩展API<br />
</font><a href="http://www.jgroups.org/" target="_blank"><font size="2">jgroups2.2.7.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.jgroups.org/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 网络通信工具包<br />
</font><a href="http://java.sun.com/products/jta" target="_blank"><font size="2">jta.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://java.sun.com/products/jta&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 标准的 JAVA 事务处理接口<br />
</font><a href="http://www.junit.org/" target="_blank"><font size="2">junit-3.8.1.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.junit.org/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JUnit 测试框架<br />
</font><a href="http://logging.apache.org/log4j/" target="_blank"><font size="2">log4.j-1.2.9.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://logging.apache.org/log4j/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log4j 库,Apache 的日志工具<br />
</font><a href="http://www.opensymphony.com/oscache/" target="_blank"><font size="2">oscache-2.1.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.opensymphony.com/oscache/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java 对象的缓存工具<br />
</font><a href="http://proxool.sourceforge.net/" target="_blank"><font color="#800080" size="2">proxool-0.8.3.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://proxool.sourceforge.net/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Proxool JDBC 连接池 工具<br />
</font><a href="http://swarmcache.sourceforge.net/" target="_blank"><font size="2">swarmcache-1.0rc2.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://swarmcache.sourceforge.net/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hibernate 可以使用的一种缓存工具<br />
versioncheck.jar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 版本检查工具包,用于在构建 Hibernate 的时候检查辅助 jar 包文件的版本<br />
</font><a href="http://xml.apache.org/xerces2-j/" target="_blank"><font size="2">xerces-2.6.2.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://xml.apache.org/xerces2-j/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SAX XML 解析器<br />
</font><a href="http://xml.apache.org/xerces2-j/" target="_blank"><font size="2">xml-apis.jar</font></a><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://xml.apache.org/xerces2-j/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java语言中标准的XML 解析器</font></p>
<img src ="http://www.blogjava.net/a237359957/aggbug/261042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/a237359957/" target="_blank">乱せ英豪</a> 2009-03-20 15:21 <a href="http://www.blogjava.net/a237359957/archive/2009/03/20/261042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Action类的工作机制</title><link>http://www.blogjava.net/a237359957/archive/2009/03/11/259108.html</link><dc:creator>乱せ英豪</dc:creator><author>乱せ英豪</author><pubDate>Wed, 11 Mar 2009 06:30:00 GMT</pubDate><guid>http://www.blogjava.net/a237359957/archive/2009/03/11/259108.html</guid><wfw:comment>http://www.blogjava.net/a237359957/comments/259108.html</wfw:comment><comments>http://www.blogjava.net/a237359957/archive/2009/03/11/259108.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/a237359957/comments/commentRss/259108.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/a237359957/services/trackbacks/259108.html</trackback:ping><description><![CDATA[<p>Action类的工作机制<br />
所有的Action类是org.apache.struts.action.Action的子类。Action子类应该覆盖父类的execute方法。当ActionForm Bean被创建，并且表单验证顺利通过后，Struts框架就会调用Action类的execute()方法。execute()方法如下定义：<br />
public ActionForward execute(ActionMapping mapping,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ActionForm form,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletRequest request,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response)throws IOException,ServletException<br />
execute()方法包含以下参数：<br />
ActionMapping:包含了这个Action的配置信息，和struts-config.xml文件中的&lt;action&gt;元素对应。<br />
ActionForm:包含了用户的表单数据，当Struts框架调用execute()方法时，ActionForm中的数据已经通过了表单验证。<br />
HttpServletRequest:当前的HTTP请求对象。<br />
HttpServletResponse:当前的HTTP响应对象。 </p>
<p>访问封装在MessageResources中的本地化文本</p>
<p>Action类的execute()方法首先获得MessageResources对象：<br />
MessageResources messages=getResources(request);<br />
在Action类中定义了getResources(HttpServletRequest request)方法，该方法返回当前默认的MessageResources对象，它封装了Resource Bundle中的文本内容。接下来Action类就可以通过MessageResources对象来访问文本内容。例如，如果要读取消息KEY为&#8220;hello.jsp.title&#8221;对应的文本内容，可以调用MessageResources类的getMessage(String key)方法：<br />
String title=messages.getMessage("hello.jsp.title");</p>
<p>业务逻辑验证<br />
ActionMessages errors=new ActionMessages();<br />
String userName=(String)((HelloForm)form).getUserName();<br />
String badUserName="Monster";</p>
<p>if(userName.equalsIgnoreCase(badUserName))<br />
{<br />
&nbsp;&nbsp; errors.add("username",new ActionMessage("hello.dont.talk.to.monster",badUserName));<br />
saveErrors(request,errors);<br />
return(new ActionForward(mapping.getInput()));<br />
}<br />
如果用户输入的姓名&#8220;Monster&#8221;，将创建包含错误信息的ActionMessage对象，ActionMessage对象被保存岛ActionMessages对象中。接下来调用在Action基类中定义的saveErrors()方法，它负责把ActionMessages对象保存岛request范围内。最后返回ActionForward对象，Struts框架会根据ActionForward对象包含的转发信息把请求转发岛恰当的视图组件，视图组件通过&lt;html:errors&gt;标签把request范围内的ActionMessage对象中包含的错误消息显示出来，提示用户修改错误。<br />
</p>
<img src ="http://www.blogjava.net/a237359957/aggbug/259108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/a237359957/" target="_blank">乱せ英豪</a> 2009-03-11 14:30 <a href="http://www.blogjava.net/a237359957/archive/2009/03/11/259108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据验证</title><link>http://www.blogjava.net/a237359957/archive/2009/03/11/259107.html</link><dc:creator>乱せ英豪</dc:creator><author>乱せ英豪</author><pubDate>Wed, 11 Mar 2009 06:29:00 GMT</pubDate><guid>http://www.blogjava.net/a237359957/archive/2009/03/11/259107.html</guid><wfw:comment>http://www.blogjava.net/a237359957/comments/259107.html</wfw:comment><comments>http://www.blogjava.net/a237359957/archive/2009/03/11/259107.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/a237359957/comments/commentRss/259107.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/a237359957/services/trackbacks/259107.html</trackback:ping><description><![CDATA[<p>几乎所有和用户交互的应用都需要数据验证，而从头设计并开发完善的数据验证机制往往很费时。幸运的是，Struts框架提供了现成的、易于使用的数据验证功能。Struts框架的数据验证可分为两种类型：表单验证和业务逻辑验证，在本例中，它们分别运用于以下场合：<br />
表单验证：如果用户没有在表单中输入姓名就提交表单，将生成表单验证错误。<br />
业务逻辑验证：如果用户在表单中输入姓名为&#8220;Monster&#8221;,按照本应用的业务规则，则不允许向&#8220;Monster&#8221;打招呼，因此将生成业务逻辑错误。<br />
第一种类型的验证，即表单验证由Action Bean来负责处理。<br />
这个工作可以用以上的HelloForm.java的validate()方法负责完成这一任务：</p>
<p>public ActionErrors validate(ActionMapping mapping,HttpServletRequest request)<br />
{<br />
&nbsp;&nbsp; ActionErrors errors=new ActionErrors();<br />
&nbsp;&nbsp; if((userName==null)||(userName.length())&lt;1)<br />
&nbsp;&nbsp;&nbsp; error.add("username",new ActionMessage("hello.no.username.error"));</p>
<p>return errors;<br />
}<br />
第二种类型的验证，即业务逻辑验证由Action来负责处理。</p>
<p>例：<br />
package hello;</p>
<p>import javax.servlet.RequestDispatcher;<br />
import javax.servlet.Servlet.ServeltException;<br />
import javax.servlet.http.HttpServletRequest;<br />
import javax.servlet.http.HttpServletResponse;</p>
<p>import org.apache.struts.action.Action;<br />
import org.apache.struts.action.ActionMessage;<br />
import org.apache.struts.action.ActionMessages;<br />
import org.apache.struts.action.ActionForm;<br />
import org.apache.struts.action.ActionForward;<br />
import org.apache.struts.action.ActionMapping;<br />
import org.apache.struts.util.MessageResource;</p>
<p>public final class HelloAction extends Action<br />
{<br />
&nbsp;&nbsp; public ActionForward execute(ActionMapping mapping,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ActionForm form,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletRequest request,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response)throws Exception<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageResources message=getResources(request);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Action Messages errors=new ActionMessages();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String userName=(String)((HelloForm)form).getUserName();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //ActionMessages errors=new ActionMessage(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //String userName=(String)((HelloForm)form).getUserName();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String badUserName="Monster";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(userName.equalslgnoreCase(badUserName))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errors.add("username",new ActionMessage("hello.dont.talk.to.monster",badUserName));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; saveErrors(request,errors);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (new ActionForward(mapping.getInput()));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PersonBean pd=new PersonBean();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pd.setUserName(userName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pd.saveToPersistentStore();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.setAttribute(Constants.PERSON_KEY,pd);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.removeAttribute(mapping.getAttribute());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(mapping.findForward("SayHello"));<br />
}<br />
}</p>
<img src ="http://www.blogjava.net/a237359957/aggbug/259107.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/a237359957/" target="_blank">乱せ英豪</a> 2009-03-11 14:29 <a href="http://www.blogjava.net/a237359957/archive/2009/03/11/259107.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实例——创建ActionForm Bean</title><link>http://www.blogjava.net/a237359957/archive/2009/03/11/259106.html</link><dc:creator>乱せ英豪</dc:creator><author>乱せ英豪</author><pubDate>Wed, 11 Mar 2009 06:28:00 GMT</pubDate><guid>http://www.blogjava.net/a237359957/archive/2009/03/11/259106.html</guid><wfw:comment>http://www.blogjava.net/a237359957/comments/259106.html</wfw:comment><comments>http://www.blogjava.net/a237359957/archive/2009/03/11/259106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/a237359957/comments/commentRss/259106.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/a237359957/services/trackbacks/259106.html</trackback:ping><description><![CDATA[<p>创建ActionForm Bean<br />
当用户提交HTML表单后，Struts框架将自动把表单数据组装到ActionForm Bean中。ActionForm Bean 中的属性和HTML表单中的字段一一对应。ActionForm Bean还提供数据验证方法，以及把属性重新设置为默认值的方法。Struts框架中定义的ActionFrom类是抽象的，必须在应用中创建它的子类，来存放具体的HTML表单数据。<br />
package hello;</p>
<p>import javax.servlet.http.HttpServletRequest;<br />
import org.apache.struts.action.ActionMessage;<br />
import org.apache.struts.action.ActionErrors;<br />
import org.apache.struts.action.ActionForm;<br />
import org.apache.struts.action.ActionMapping;<br />
public final class HelloForm extends ActionForm<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp; private String userName=null;<br />
&nbsp;&nbsp;&nbsp;&nbsp; public String getUserName(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(this.userName);<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; public void setUserName(String userName)<br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.userName=userName;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; public void reset(ActionMapping mapping,HttpServletRequest request)<br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.userName=null;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; public ActionErrors validate(ActionMapping mapping, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletRequest request)<br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ActionErrors errors=new ActionErrors();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((userName==null)||(userName.length()&lt;1))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errors.add("username",new ActionMessage("hello.no.username.error"));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return errors;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
}<br />
ActionForm Bean 实质上是一种JavaBean,不过它除了具有JavaBean的常规方法，还有两种特殊方法：<br />
validate():用于表单验证。<br />
reset:把属性重新设置为默认值。</p>
<img src ="http://www.blogjava.net/a237359957/aggbug/259106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/a237359957/" target="_blank">乱せ英豪</a> 2009-03-11 14:28 <a href="http://www.blogjava.net/a237359957/archive/2009/03/11/259106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实例——创建消息资源文件</title><link>http://www.blogjava.net/a237359957/archive/2009/03/11/259105.html</link><dc:creator>乱せ英豪</dc:creator><author>乱せ英豪</author><pubDate>Wed, 11 Mar 2009 06:27:00 GMT</pubDate><guid>http://www.blogjava.net/a237359957/archive/2009/03/11/259105.html</guid><wfw:comment>http://www.blogjava.net/a237359957/comments/259105.html</wfw:comment><comments>http://www.blogjava.net/a237359957/archive/2009/03/11/259105.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/a237359957/comments/commentRss/259105.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/a237359957/services/trackbacks/259105.html</trackback:ping><description><![CDATA[<p>hello.jsp使用&lt;bean:message&gt;标签来输出文本内容。这些文件来自于Resource Bundle,每个Resource Bundle 都对应一个或多个本地化的消息资源文件。资源文件为<br />
application.properties：<br />
#SDFSALKFJSLAKFLAK<br />
//#为资源文件的注释<br />
hello.jsp.title=Hello-A first Struts program<br />
对于JSP代码：<br />
&lt;bean:message key="hello.jsp.title"/&gt;</p>
<p>&lt;bea:message&gt;标签的key属性为&#8220;hello.jsp.title&#8221;,Resource Bundle中与匹配的内容为：<br />
hello.jsp.title=Hello-A first Struts program<br />
因此，以上&lt;bean:message&gt;标签将把&#8220;Hello-A first Struts program&#8221;输出岛网页上。<br />
</p>
 <img src ="http://www.blogjava.net/a237359957/aggbug/259105.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/a237359957/" target="_blank">乱せ英豪</a> 2009-03-11 14:27 <a href="http://www.blogjava.net/a237359957/archive/2009/03/11/259105.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>stuts学习——ActionServlet</title><link>http://www.blogjava.net/a237359957/archive/2009/03/11/259104.html</link><dc:creator>乱せ英豪</dc:creator><author>乱せ英豪</author><pubDate>Wed, 11 Mar 2009 06:27:00 GMT</pubDate><guid>http://www.blogjava.net/a237359957/archive/2009/03/11/259104.html</guid><wfw:comment>http://www.blogjava.net/a237359957/comments/259104.html</wfw:comment><comments>http://www.blogjava.net/a237359957/archive/2009/03/11/259104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/a237359957/comments/commentRss/259104.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/a237359957/services/trackbacks/259104.html</trackback:ping><description><![CDATA[ActionServlet接收到一个客户请求时，将执行如下流程。<br />
1、检索和用户请求匹配的ActionMapping实例，如果不存在，就返回用户请求路径无效的信息。<br />
2、如果ActionForm实例不存在，就创建一个ActionForm对象，把客户提交的表单数据保存岛ActionForm对象中。<br />
3、根据配置信息决定是否需要表单验证，如果需要验证，就调用ActionForm的validate()方法。<br />
4、如果AcctionForm的validate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象，就表示表单验证成功。<br />
5、ActionServlet 根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action。如果相应的Action实例不存在，就先创建这个实例，然后用Action的execute()方法。<br />
6、Action的execute()方法返回一个ActionForward对象，ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。<br />
7、ActionForward对象指向的JSP组件生成动态网页，返回给客户。<br />
对于以上流程的流程4，如果ActionForm的validate()方法返回一个包含一个或多个ActionMessage的ActionErrors对象，就表示表单失败，此时ActionServlet将直接把请求转发给包含用户提交表单的JSP组件。在这种情况下，不会再创建Action对象并调用Action的execute()方法。
<img src ="http://www.blogjava.net/a237359957/aggbug/259104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/a237359957/" target="_blank">乱せ英豪</a> 2009-03-11 14:27 <a href="http://www.blogjava.net/a237359957/archive/2009/03/11/259104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Servlet API中有几个比较重要的类</title><link>http://www.blogjava.net/a237359957/archive/2009/03/11/259102.html</link><dc:creator>乱せ英豪</dc:creator><author>乱せ英豪</author><pubDate>Wed, 11 Mar 2009 06:26:00 GMT</pubDate><guid>http://www.blogjava.net/a237359957/archive/2009/03/11/259102.html</guid><wfw:comment>http://www.blogjava.net/a237359957/comments/259102.html</wfw:comment><comments>http://www.blogjava.net/a237359957/archive/2009/03/11/259102.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/a237359957/comments/commentRss/259102.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/a237359957/services/trackbacks/259102.html</trackback:ping><description><![CDATA[<p>HttpServletRequest:Servlet容器把HTTP请求信息保存在HttpServletRequest对象中，Servlet组件从request对象中读取用户的请求数据。此外，HttpServletRequest可以存放request范围内的共享数据。<br />
HttpServletResponse:用于生成HTTP响应结果。<br />
HttpSession:Servlet容器为每个WEB应用创建一个ServletContext实例，ServletContext可以存放application范围的共享数据。<br />
HttpServletRequest、HttpSession、ServletContext分别提供在request、session、application范围内保存和读取共享数据的方法：<br />
//save shared data<br />
setAttribute(String key,Object value);<br />
//get shared data<br />
getAttribute(String key);<br />
在保存共享数据时，应该指定属性KEY。在读取共享数据时，将根据这个属性KEY来检索共享数据。<br />
例：<br />
把ShoppingCart对象（购物车）存放在session范围内，存放时指定属性KEY卫&#8220;cart&#8221;,然后再通过这个属性KEY把ShoppingCart对象检索出来：<br />
ShoppingCart shoppingCart=new ShoppingCart();<br />
ShoopingCart myCart=null;<br />
//sava cart<br />
session.setAttribute("cart",shoppingCart);<br />
//get cart<br />
myCart=(ShoppingCart)session.getAttribute("cart");</p>
<p>&nbsp;</p>
<p>请求转发：<br />
Servlet的service()方法中执行以下代码：<br />
RequestDispatcher rd=request.getRequestDispatcher("hello.jsp");<br />
//Forward to requested URL<br />
rd.forward(request,response);<br />
在JSP页面中，可以使用&lt;jsp:forward&gt;标签来转发请求<br />
例如：<br />
&lt;jsp:forward page="hello.jsp"/&gt;</p>
<p><br />
请求重定向：<br />
WEB组件可以将请求重定向到任意URL，而不仅仅是同一应用中的URL。<br />
重定向的源组件和目标组件之间不共用同一个HttpServletRequest对象，因此不能共享request范围内的共享数据。<br />
response.sendRedirect("http://jakarta.apache.org/struts/");</p>
<p>&nbsp;</p>
<p>包含：<br />
Servlet类使用javax.servlet.RequestDispatcher.include()<br />
RequsetDispatcher rd;<br />
rd=req.getRequestDispatcher("/header.jsp");</p>
<p>在JSP文件中，可以通过&lt;include&gt;指令来包含其他的WEB资源，<br />
&lt;%@ include file="header.jsp"%&gt;</p>
<img src ="http://www.blogjava.net/a237359957/aggbug/259102.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/a237359957/" target="_blank">乱せ英豪</a> 2009-03-11 14:26 <a href="http://www.blogjava.net/a237359957/archive/2009/03/11/259102.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Servlet持久化</title><link>http://www.blogjava.net/a237359957/archive/2009/03/11/259101.html</link><dc:creator>乱せ英豪</dc:creator><author>乱せ英豪</author><pubDate>Wed, 11 Mar 2009 06:23:00 GMT</pubDate><guid>http://www.blogjava.net/a237359957/archive/2009/03/11/259101.html</guid><wfw:comment>http://www.blogjava.net/a237359957/comments/259101.html</wfw:comment><comments>http://www.blogjava.net/a237359957/archive/2009/03/11/259101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/a237359957/comments/commentRss/259101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/a237359957/services/trackbacks/259101.html</trackback:ping><description><![CDATA[<p>Servlet持久化<br />
Servlet容器在某些情况下把这些HttpSession对象从内存中转移到文件系统或数据库中。<br />
在访问HTTPSESSION信息时再把他们加载到内存中。<br />
好处:<br />
1、假如有一万个人同时在访问某个WEB应用，SERVLET容器中会生成一万个HTTPSESSION对象。如果吧这些对象都一直存放在内存中，将消耗大量的内存资源。显然不可取，因此可</p>
<p>以把处于不活动状态的HTTPSESSION对象转移到文件系统或数据库中，这样可以提高对内存。资源的利用率。<br />
2、假定某个客户正在一个购物网站上购物，它将购买的物品先放在虚拟的购物车HTTPSESSION对象中。如果此时WEB服务器突然出现故障而终止，那么内存中的HTTPSESSION对象联</p>
<p>通客户的购物信息都会丢失。如果吧HTTPSESSION对象实现保存在文件系统或数据库中，当WEB服务器重启后，还可以从文件系统或数据库中恢复SESSION数据</p>
<img src ="http://www.blogjava.net/a237359957/aggbug/259101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/a237359957/" target="_blank">乱せ英豪</a> 2009-03-11 14:23 <a href="http://www.blogjava.net/a237359957/archive/2009/03/11/259101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Session</title><link>http://www.blogjava.net/a237359957/archive/2009/03/11/259100.html</link><dc:creator>乱せ英豪</dc:creator><author>乱せ英豪</author><pubDate>Wed, 11 Mar 2009 06:23:00 GMT</pubDate><guid>http://www.blogjava.net/a237359957/archive/2009/03/11/259100.html</guid><wfw:comment>http://www.blogjava.net/a237359957/comments/259100.html</wfw:comment><comments>http://www.blogjava.net/a237359957/archive/2009/03/11/259100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/a237359957/comments/commentRss/259100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/a237359957/services/trackbacks/259100.html</trackback:ping><description><![CDATA[<p>比如：在网上书店应用中，从一个客户开始购物，到最后结账，整个过程是一个Session.<br />
Servlet API中定义了javax.servlet.http.HttpSession接口，Servlet容器必须实现这一接口。当一个Session开始时，Servlet容器将创建一个HttpSession对象，在HttpSession对象中可以存放客户状态的信息。Servelt容器为HttpSession分配一个唯一标识符，称为Session ID.Servlet容器把Session ID作为Cookie保存在客户的浏览器中。每次客户发出HTTP请求时，Servlet容器可以从HttpRequest对象中读取Session ID,然后根据SessionID找到相应的HttpSession对象，从而获取客户的状态信息。<br />
HttpSession接口中的方法：<br />
getId():返回Session的ID；<br />
invalidate():使当前的Session失效，Servlet容器会释放HttpSession对象占用的资源。<br />
setAttribute(String name,Object value):将一对name/Value属性保存在HttpSession对象中<br />
getAttribut(String name):根据name参数返回保存在HttpSession对象的属性值。<br />
getAttributeNames():以数组的方式HttpSession对象中所有的属性名。<br />
isNew():判断是否是新创建的Session，如果是新创建的Session，返回true,否则返回false<br />
setMaxInactiveInterval():设定一个Session可以处于不活动状态的最大时间间隔，以秒为单位。如果超过这个时间。Session自动失效，如果设置为负数，表示不限制Session付出与不活动状态的时间。<br />
getMaxInactiveInterval()读取当前Sessions可以处于不活动状态的最大时间间隔。<br />
在Java Servlet API中提出了跟踪Session的另一种机制，如果客户浏览器不支持Cookie，Servlet容器可以重写客户请求的URL，吧Session ID添加到URL信息中。<br />
HttpServletResponse接口提供了重写URL的方法：<br />
public java.lang.String encodeURL(java.lang.String url)<br />
该方法的实现机制为：<br />
先判断当前的Web组件是否启用Session，如果没有启用Session,例如在JSP中声明<br />
&lt;%@ page session="false"%&gt;或者已经执行了session.invalidate()方法，那么直接返回参数URL<br />
再判断客户浏览器是否支持Cookie，如果支持Cookie，就直接返回参数URL；如果不支持，就在参数URL中加入Session ID信息，然后返回修改后的URL.</p>
<img src ="http://www.blogjava.net/a237359957/aggbug/259100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/a237359957/" target="_blank">乱せ英豪</a> 2009-03-11 14:23 <a href="http://www.blogjava.net/a237359957/archive/2009/03/11/259100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转发JSP请求</title><link>http://www.blogjava.net/a237359957/archive/2009/03/11/259099.html</link><dc:creator>乱せ英豪</dc:creator><author>乱せ英豪</author><pubDate>Wed, 11 Mar 2009 06:22:00 GMT</pubDate><guid>http://www.blogjava.net/a237359957/archive/2009/03/11/259099.html</guid><wfw:comment>http://www.blogjava.net/a237359957/comments/259099.html</wfw:comment><comments>http://www.blogjava.net/a237359957/archive/2009/03/11/259099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/a237359957/comments/commentRss/259099.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/a237359957/services/trackbacks/259099.html</trackback:ping><description><![CDATA[<p align="justify">转发JSP请求<br />
&lt;jsp:forward&gt;用于将客户请求重定向到其他的HTML文件、JSP文件或者Servlet文件。<br />
&lt;jsp:forward&gt;语法：<br />
&nbsp;&lt;jsp:forward page="重定向的文件"/&gt;<br />
&lt;jsp:forward&gt;标签从一个JSP文件向另一个文件传递包含用户请求的request对象。<br />
如果使用了这个标签，那么这个JSP文件中的所有输出数据都不会被发送到客户端，并且这个标签以下的代码不会被执行。</p>
<img src ="http://www.blogjava.net/a237359957/aggbug/259099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/a237359957/" target="_blank">乱せ英豪</a> 2009-03-11 14:22 <a href="http://www.blogjava.net/a237359957/archive/2009/03/11/259099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>