﻿<?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-J2EE剑侠行-随笔分类-J2EE技术类</title><link>http://www.blogjava.net/heweiya/category/6065.html</link><description>直觉我的J2EE应用生涯，打造我心中的一把利剑。</description><language>zh-cn</language><lastBuildDate>Wed, 20 Jun 2007 05:31:39 GMT</lastBuildDate><pubDate>Wed, 20 Jun 2007 05:31:39 GMT</pubDate><ttl>60</ttl><item><title>找到一个好用的UML建模工具-argouml</title><link>http://www.blogjava.net/heweiya/archive/2007/06/20/125328.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Wed, 20 Jun 2007 05:29:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2007/06/20/125328.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/125328.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2007/06/20/125328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/125328.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/125328.html</trackback:ping><description><![CDATA[&nbsp;很不错的一个UML建模工具-argouml<br>
&nbsp;&nbsp;&nbsp;&nbsp; <a  href="http://argouml-downloads.tigris.org/nonav/argouml-0.24/ArgoUML-0.24.zip">argouml下载地址</a><br>
&nbsp;&nbsp;&nbsp;&nbsp; 我一眼就看上他的原因是：生成的用例和包图可能直接生成JAVA代码，而且准备无误，这正是我要找的。<br>
&nbsp;&nbsp;&nbsp;&nbsp;
我想:以后使用一些框架的话，可能由PD生成一些实体,然后Hibernate生成pojo等,加入到argouml,然后根据一个框架的特性生成一些包
和类.就等于详细设计了吧.应该来说是比详细设计还实用的东西.总比哪些WORD文档好吧.还有让人看不懂的概要设计.<br>
&nbsp;&nbsp;&nbsp; 我想从技术出发,这个是一条比较适用的路子.下班了.我明天将会汇报一下我使用的情况和一些范例.<br>
&nbsp;&nbsp;&nbsp; 反过来又想像.这好象是一个组合的脚手架.好象ROR的零星操作步骤.应该学习.ROR毕竟是一个新生事物,JAVAEYE的推广也需要一个时间.如果像我这样的打工,混口饭吃的人还是专心的研究J2EE好一点.否则明天就没有饭吃了.<br>
<br>
&nbsp;&nbsp;&nbsp; 呵呵.我的文章可被JAVAEYE收回到水贴里了，可能自己的能力不如人吧，好好学习，天天向上，如果看客有什么好的工具和软件生产思路，可以共同交流。<br><img src ="http://www.blogjava.net/heweiya/aggbug/125328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2007-06-20 13:29 <a href="http://www.blogjava.net/heweiya/archive/2007/06/20/125328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>三个JAVA文件完成你的MVC应用</title><link>http://www.blogjava.net/heweiya/archive/2006/09/29/72760.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Fri, 29 Sep 2006 03:43:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2006/09/29/72760.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/72760.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2006/09/29/72760.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/72760.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/72760.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 只需要你三个JAVA类和两个配置文件，就可以完成你的MVC应用，我们就做一个示例吧。本文以一个登录为例。第一个JAVA文件Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/**======================================...&nbsp;&nbsp;<a href='http://www.blogjava.net/heweiya/archive/2006/09/29/72760.html'>阅读全文</a><img src ="http://www.blogjava.net/heweiya/aggbug/72760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2006-09-29 11:43 <a href="http://www.blogjava.net/heweiya/archive/2006/09/29/72760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用二维数组管理好你零乱的状态、分类和其它常用选项</title><link>http://www.blogjava.net/heweiya/archive/2006/09/05/67785.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Tue, 05 Sep 2006 05:31:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2006/09/05/67785.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/67785.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2006/09/05/67785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/67785.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/67785.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:    在大家的编码过程当中，有没有遇到过这么一种情况，很多零乱的状态、分类和其它常用选项常常是定义死了。但是没有一个完整的东东来约束他，在每个模块当中使用相关的信息时，往往重新COPY一次，或者COPY过来修改一次。如果多人协作的话，务必会让代码变的零乱、不好管理等。<br>    本次主要是把一些静态的分类、状态或者其它常用选项使用二维数组管理起来。如果你是一个使用JSTL或者STRUTS做前台表现的话，你就更应该好好关注了.......&nbsp;&nbsp;<a href='http://www.blogjava.net/heweiya/archive/2006/09/05/67785.html'>阅读全文</a><img src ="http://www.blogjava.net/heweiya/aggbug/67785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2006-09-05 13:31 <a href="http://www.blogjava.net/heweiya/archive/2006/09/05/67785.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts表单 vs JSTL表现之多条件查询示例</title><link>http://www.blogjava.net/heweiya/archive/2006/07/21/59383.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Fri, 21 Jul 2006 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2006/07/21/59383.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/59383.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2006/07/21/59383.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/59383.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/59383.html</trackback:ping><description><![CDATA[    struts表单主要是利用actionform来取得JSP页面所有的request的，所有的Struts标签无非在取得request当中的所有INPUT,并赋值回标签值的，同理，JSTL能够在JSP表单当中轻易的表现要输出的结果。<br />    如果你是高手，你就知道这个标题有误，是的，struts表单与JSTL表现没有可比性，但是如果我们要在实现一个多条件的查询页面时，这个比较就比较有效了。<br />    我不妨比较一下利用struts表单的查询实现 和 利用JSTL做为表现而实现的查询功能有什么不同，让读者寻其方便。<br />    示例说明：<br />    用户表-USER<br />    username  用户名称<br />    loginid   登录ID<br />    sex        性别<br />    一、利用struts表单的查询实现<br />        实现步骤：<br />        创建多条件的序列化对象(java)-&gt;在struts.config当中申明actionform-&gt;Action当中实现-&gt;输出结果<br />        <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">    </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"> The value of the simple userName property. </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> java.lang.String userName;<br />    </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"> The value of the simple loginId property. </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> java.lang.String loginId;<br />    </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"> The value of the simple sex property. </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> java.lang.String sex;<br />    </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />     * Return the value of the USER_NAME column.<br />     * </span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"> java.lang.String<br />     </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> java.lang.String getUserName()<br />    {<br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.userName;<br />    }<br /><br />    </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />     * Set the value of the USER_NAME column.<br />     * </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> userName<br />     </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> setUserName(java.lang.String userName)<br />    {<br />        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.userName </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> userName;<br />    </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />     * Return the value of the LOGIN_ID column.<br />     * </span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"> java.lang.String<br />     </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> java.lang.String getLoginId()<br />    {<br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.loginId;<br />    }<br /><br />    </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />     * Set the value of the LOGIN_ID column.<br />     * </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> loginId<br />     </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> setLoginId(java.lang.String loginId)<br />    {<br />        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.loginId </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> loginId;<br />    }<br />    </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />     * Return the value of the sex column.<br />     * </span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"> java.lang.String<br />     </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> java.lang.String getSex()<br />    {<br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.sex;<br />    }<br /><br />    </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />     * Set the value of the sex column.<br />     * </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> loginId<br />     </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> setSex(java.lang.String sex)<br />    {<br />        </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.sex </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> sex;<br />    }</span></div><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">&lt;!-- struts_fonfig --&gt;<br />        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">form-bean </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="UserActionForm"</span><span style="color: rgb(255, 0, 0);"> type</span><span style="color: rgb(0, 0, 255);">="org.apache.struts.validator.DynaValidatorForm"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">form-property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="userCondition"</span><span style="color: rgb(255, 0, 0);"> type</span><span style="color: rgb(0, 0, 255);">="com.antbee.searchCondition.UserFindCondition"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);">        <br />        </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">form-bean</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>Action当中<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">DynaValidatorForm UserForm </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> (DynaValidatorForm) form;<br />        UserFindCondition Condition </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> (UserFindCondition) UserActionForm<br />                .get(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">userCondition</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);"> 取得查询条件</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">List user </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> userManager.find(Condition,<br />                (iCurPageNo </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">) </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);"> pageCon.PAGE_SIZE, pageCon.PAGE_SIZE);</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">呵呵，加入了hibernate的分页</span></div>具体实现：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">    </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> List find(UserFindCondition Condition, </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> begin,<br />            </span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> count) {<br />        StringBuffer sql </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> StringBuffer(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">from User as a where 1=1</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);               <br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (Condition </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">) {<br />            makeSql(sql, shipmentFindCondition);<br />        }<br />        String fsql </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> sql.toString();<br />        Query query </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getSession().createQuery(fsql);<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (Condition </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">) {<br />            setParameter(query, Condition);<br />        }<br />        query.setFirstResult(begin);<br />        query.setMaxResults(count);<br />        List tt </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> query.list();<br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> tt;<br />    }</span></div><br />--<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">    /**<br />     * 根据条件生成一个sql语句<br />     * <br />     * @author 和<br />     * @param sql<br />     *            初始的sql语句(一般为select a from A as a where 1=1)<br />     * @param condition<br />     *            查询的条件<br />     * @return<br />     * @version 1.0<br />     */<br />private</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> makeSql(StringBuffer sql, UserFindCondition condition) {<br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (condition.getUsername() </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);"><br />                </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">condition.getUsername().toString().equals(</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">)) {<br />            sql<br />                    .append(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> and a.username like :</span><span style="color: rgb(0, 0, 0);">username</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />        }<br /><br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (condition.getLoginid() </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);"><br />                </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">condition.get</span><span style="color: rgb(0, 0, 0);">Loginid(</span><span style="color: rgb(0, 0, 0);">().equals(</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">)) {<br />            sql<br />                    .append(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> and a.</span><span style="color: rgb(0, 0, 0);">loginid(</span><span style="color: rgb(0, 0, 0);"> = :</span><span style="color: rgb(0, 0, 0);">loginid(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />        }<br /><br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (condition.getSex() </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);"><br />                </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">condition.getSex().equals(</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">)) {<br />            sql.append(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> and a.sex = :sex</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />        }</span><span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 0);"><br /><br />    }<br /><br />    </span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />     * 根据条件设置query的值<br />     * <br />     * </span><span style="color: rgb(128, 128, 128);">@author</span><span style="color: rgb(0, 128, 0);"> 和<br />     * </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> query<br />     *            一个hibernate的Query对象<br />     * </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> condition<br />     *            查询的条件<br />     * </span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"><br />     * </span><span style="color: rgb(128, 128, 128);">@version</span><span style="color: rgb(0, 128, 0);"> 1.0<br />     </span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> setParameter(Query query, UserFindCondition condition) {<br /><br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (condition.getUsername() </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);"><br />                </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">condition.get</span><span style="color: rgb(0, 0, 0);">Username</span><span style="color: rgb(0, 0, 0);">().equals(</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">)) {<br />            query.setString(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">username</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">%</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> condition.get</span><span style="color: rgb(0, 0, 0);">Username</span><span style="color: rgb(0, 0, 0);">()<br />                    </span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">%</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />        }<br /><br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (condition.getLoginid() </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);"><br />                </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">condition.get</span><span style="color: rgb(0, 0, 0);">Loginid</span><span style="color: rgb(0, 0, 0);">().equals(</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">)) {<br />            query.setString(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">loginid</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, condition.get</span><span style="color: rgb(0, 0, 0);">Loginid</span><span style="color: rgb(0, 0, 0);">());<br />        }<br /><br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (condition.getSex() </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);"><br />                </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">condition.get</span><span style="color: rgb(0, 0, 0);">Sex</span><span style="color: rgb(0, 0, 0);">().equals(</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">)) {<br />            query.setString(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">sex</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, condition.get</span><span style="color: rgb(0, 0, 0);">Sex</span><span style="color: rgb(0, 0, 0);">());<br />        }       </span><span style="color: rgb(0, 0, 0);"><br />    }</span></div><br />呵呵，笑死人了，这个方法很通用，我才在我的第二个项目当中才用到，真是可惜，当然了，使用Actionform有一个毛病就是对date类型要转换成STRING类型来处理，这是actionform的一个死穴。还有对Actionform不能够重置，只能够回来从前。不知道这群设计者怎么想的，真是由于这一点，所以我们有必要使用最原始的方法来解决问题了。使用页面当中的input，我们来拼request如何？<br />   二、利用JSTL做为表现而实现的查询功能<br />     步骤：在JSP页面布置很多的input，当然，你可以加入value了。(省略了...)<br />           创建查询条件的序列化对象(同样user.java)<br />           在action当中拼个condition了，做为查询条件，后面的处理类同第一种方式。<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">     UserSearchCondition userSearchCondition </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br />     userSearchCondition </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> makeUserSearchCondition(request);</span></div><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> UserSearchCondition makeUserSearchCondition(HttpServletRequest request) </span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> Exception{<br />        </span><span style="color: rgb(0, 0, 0);">User</span><span style="color: rgb(0, 0, 0);">SearchCondition userSearchCondition </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> OrderSearchCondition();<br />        String username </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> request.getParameter(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Username</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />        String loginid </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> request.getParameter(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Loginid</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />        String sex </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> request.getParameter(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Sex</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);   </span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 0);"><br />                <br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">username</span><span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">username</span><span style="color: rgb(0, 0, 0);">.trim().equals(</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">)){<br />            </span><span style="color: rgb(0, 0, 0);">username</span><span style="color: rgb(0, 0, 0);">SearchCondition.set</span><span style="color: rgb(0, 0, 0);">Username</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">username</span><span style="color: rgb(0, 0, 0);">);<br />        }<br />        <br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">loginid  </span><span style="color: rgb(0, 0, 0);"></span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">loginid</span><span style="color: rgb(0, 0, 0);">.trim().equals(</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">)){<br />            userSearchCondition.set</span><span style="color: rgb(0, 0, 0);">Loginid </span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">loginid </span><span style="color: rgb(0, 0, 0);">);<br />        }<br />        <br />        </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(sex </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">sex.trim().equals(</span><span style="color: rgb(0, 0, 0);">""</span><span style="color: rgb(0, 0, 0);">)){        <br />            userSearchCondition.setSex(</span><span style="color: rgb(0, 0, 255);">sex</span><span style="color: rgb(0, 0, 0);">);<br />        }        </span><span style="color: rgb(0, 0, 0);"><br />        <br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> userSearchCondition;<br />    }</span></div><br />     以后的方法，我就不用再做举例了吧，可以参考如上第一种方法的实现.<br />     第二种方法的好处就是：在页面上比较好控制，比如重置，又比如日期性数据等。<br />     (所有过程当中的代码没有经过测试，只是说明这种方法而已)<br /><img src ="http://www.blogjava.net/heweiya/aggbug/59383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2006-07-21 11:20 <a href="http://www.blogjava.net/heweiya/archive/2006/07/21/59383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate的延迟加载通用方法</title><link>http://www.blogjava.net/heweiya/archive/2006/07/21/59366.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Fri, 21 Jul 2006 02:09:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2006/07/21/59366.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/59366.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2006/07/21/59366.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/59366.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/59366.html</trackback:ping><description><![CDATA[
		<span class="postbody">呵呵，在忙一个项目，潜水很久，现在冒个泡：<br />(本文适用在struts+spring+hibernate3上做开发的虫虫们) <br />
类名：HibernateUtil 
<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">package</span><span style="color: rgb(0, 0, 0);"> com.antbee.j2eemodel.util;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.lang.reflect.InvocationTargetException;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.lang.reflect.Method;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.util.Collection;<br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> java.util.Iterator;<br /><br /></span><span style="color: rgb(0, 0, 255);">import</span><span style="color: rgb(0, 0, 0);"> org.springframework.orm.hibernate3.support.HibernateDaoSupport;<br /><br /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> HibernateUtil </span><span style="color: rgb(0, 0, 255);">extends</span><span style="color: rgb(0, 0, 0);"> HibernateDaoSupport {<br /><br /></span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />* 初始化POJO类<br />* </span><span style="color: rgb(128, 128, 128);">@author</span><span style="color: rgb(0, 128, 0);"> @家军<br />* </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> object POJO对象<br />* </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> methodName 方法名称<br />* </span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"><br />* </span><span style="color: rgb(128, 128, 128);">@version</span><span style="color: rgb(0, 128, 0);"> 1.0<br /></span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> initialize(Object object, String methodName) </span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {<br /><br />String[] methodArray </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> methodName.split(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">\\.</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />Method method </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br />Object initializeObject </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> object;<br /><br /></span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(methodArray.length </span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">){<br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().lock(initializeObject, org.hibernate.LockMode.NONE);<br />method </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> object.getClass().getMethod(methodArray[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">], </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Class[] {});<br />initializeObject </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> method.invoke(initializeObject, </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Object[] {});<br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().initialize(initializeObject);<br />}</span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);">{<br /></span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;i</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">methodArray.length;i</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">){<br />method </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> initializeObject.getClass().getMethod(methodArray[i], </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Class[] {});<br />initializeObject </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> method.invoke(initializeObject, </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Object[] {});<br />}<br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().lock(initializeObject, org.hibernate.LockMode.NONE);<br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().initialize(initializeObject);<br />}<br />}<br /><br /></span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />* 初始化POJO类<br />* </span><span style="color: rgb(128, 128, 128);">@author</span><span style="color: rgb(0, 128, 0);"> @家军<br />* </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> object POJO对象<br />* </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> methodName 方法名称数组<br />* </span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"><br />* </span><span style="color: rgb(128, 128, 128);">@version</span><span style="color: rgb(0, 128, 0);"> 1.0<br /></span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> initialize(Object object, String methodName[])<br /></span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> SecurityException, NoSuchMethodException,<br />IllegalArgumentException, IllegalAccessException, InvocationTargetException {<br /><br /></span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"> (</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> i </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">; i </span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> methodName.length; i</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">) {<br />String[] methodArray </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> methodName[i].split(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">\\.</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />Method method </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br />Object initializeObject </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> object;<br /><br /></span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(methodArray.length </span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">){<br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().lock(initializeObject, org.hibernate.LockMode.NONE);<br />method </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> object.getClass().getMethod(methodArray[</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">], </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Class[] {});<br />initializeObject </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> method.invoke(initializeObject, </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Object[] {});<br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().initialize(initializeObject);<br />}</span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);">{<br /></span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);"> j</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;j</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">methodArray.length;j</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">){<br />method </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> initializeObject.getClass().getMethod(methodArray[j], </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Class[] {});<br />initializeObject </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> method.invoke(initializeObject, </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> Object[] {});<br />}<br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().lock(initializeObject, org.hibernate.LockMode.NONE);<br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().initialize(initializeObject);<br />}<br />}<br /><br />}<br /><br /></span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />* 初始化POJO类<br />* </span><span style="color: rgb(128, 128, 128);">@author</span><span style="color: rgb(0, 128, 0);"> @家军<br />* </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> object POJO对象<br />* </span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"><br />* </span><span style="color: rgb(128, 128, 128);">@version</span><span style="color: rgb(0, 128, 0);"> 1.0<br /></span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> initialize(Object object) </span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {<br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().lock(object, org.hibernate.LockMode.NONE);<br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.getHibernateTemplate().initialize(object);<br />}<br /><br /></span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />* 初始化POJO类<br />* </span><span style="color: rgb(128, 128, 128);">@author</span><span style="color: rgb(0, 128, 0);"> @家军<br />* </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> collection POJO对象集合<br />* </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> methodName 方法名称数组<br />* </span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"><br />* </span><span style="color: rgb(128, 128, 128);">@version</span><span style="color: rgb(0, 128, 0);"> 1.0<br /></span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> initialize(Collection collection, String methodName[])<br /></span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> SecurityException, NoSuchMethodException,<br />IllegalArgumentException, IllegalAccessException, InvocationTargetException {<br /><br /></span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(Iterator i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">collection.iterator();i.hasNext()Wink{<br />Object object </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> i.next();<br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.initialize(object,methodName);<br />}<br />}<br /><br /></span><span style="color: rgb(0, 128, 0);">/**</span><span style="color: rgb(0, 128, 0);"><br />* 初始化POJO类<br />* </span><span style="color: rgb(128, 128, 128);">@author</span><span style="color: rgb(0, 128, 0);"> @家军<br />* </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> collection POJO对象集合<br />* </span><span style="color: rgb(128, 128, 128);">@param</span><span style="color: rgb(0, 128, 0);"> methodName 方法名称<br />* </span><span style="color: rgb(128, 128, 128);">@return</span><span style="color: rgb(0, 128, 0);"><br />* </span><span style="color: rgb(128, 128, 128);">@version</span><span style="color: rgb(0, 128, 0);"> 1.0<br /></span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);"> initialize(Collection collection, String methodName)<br /></span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);"> SecurityException, NoSuchMethodException,<br />IllegalArgumentException, IllegalAccessException, InvocationTargetException {<br /><br /></span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">(Iterator i</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">collection.iterator();i.hasNext()Wink{<br />Object object </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> i.next();<br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.initialize(object,methodName);<br />}<br />}<br />} </span></div><br />
这个方法的好外是：可以不在hbm.xml的文件当中，指定为lazy=true这个模式，可以直接使用。使用方法如下：
<br />
如果你使用SPRING，则需要把hibernateUtil注入其中：
<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="hibernateUtilTarget"</span><span style="color: rgb(255, 0, 0);"> class</span><span style="color: rgb(0, 0, 255);">="com.antbee.j2eemodel.util.HibernateUtil"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="sessionFactory"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">ref </span><span style="color: rgb(255, 0, 0);">local</span><span style="color: rgb(0, 0, 255);">="mssqlSessionFactory"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="hibernateUtil"</span><span style="color: rgb(255, 0, 0);"> parent</span><span style="color: rgb(0, 0, 255);">="BaseTransactionProxy"</span><span style="color: rgb(255, 0, 0);"> class</span><span style="color: rgb(0, 0, 255);">="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="target"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">ref </span><span style="color: rgb(255, 0, 0);">local</span><span style="color: rgb(0, 0, 255);">="hibernateUtilTarget"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">配置基础事务</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="BaseTransactionProxy"</span><span style="color: rgb(255, 0, 0);"> class</span><span style="color: rgb(0, 0, 255);">="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"</span><span style="color: rgb(255, 0, 0);"> abstract</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="transactionManager"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">ref </span><span style="color: rgb(255, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">="mssqltransactionManager"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="proxyTargetClass"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">true</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="transactionAttributes"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">props</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">prop </span><span style="color: rgb(255, 0, 0);">key</span><span style="color: rgb(0, 0, 255);">="*"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">PROPAGATION_REQUIRED</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">prop</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">props</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"> </span></div><br />
使用示例：
<br />
      如果你使用STRUTS，则需要这样：
<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">List what_ur_view </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> XXXManager.find(<img src="http://www.blogjava.net/images/dot.gif" /><img src="http://www.blogjava.net/images/dot.gif" /><img src="http://www.blogjava.net/images/dot.gif" />.);</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">取得你要展示的对象<br /></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">如果这个对象当中有延迟加载的对象(SET)时，则需要如下加载就行</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.hibernateUtil.initialize(what_ur_view, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">getTbShipmentSale</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br /></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">其中getTbShipmentSale是其对象(SET也可以操作) </span></div><br />
在页面显示的时候，你就可以使用JSTL如下表述：
<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">c:out </span><span style="color: rgb(255, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">="${what_ur_view.tbShipmentSale.goodsReceivePersonPhone}"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);">//呵呵，是不是很爽呀。 </span></div><br />
同样的方法，我们也可以对一个SET在页面进行显示，方法如下：
<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">c:forEach </span><span style="color: rgb(255, 0, 0);">items</span><span style="color: rgb(0, 0, 255);">="${what_ur_view.tbShipmentProductMappingSet}"</span><span style="color: rgb(255, 0, 0);"> var</span><span style="color: rgb(0, 0, 255);">="ProductMapping"</span><span style="color: rgb(255, 0, 0);"> varStatus</span><span style="color: rgb(0, 0, 255);">="status"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">c:out </span><span style="color: rgb(255, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">="${ProductMapping.productNum}"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">c:out </span><span style="color: rgb(255, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">="${ProductMapping.tbOutOfWarehouse.outOfWarehouseNum}"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">c:forEach</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />//呵呵，支持多级嵌套， </span></div><br />
在ACTION当中则需要加入<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">hibernateUtil.initialize(what_ur_view.getTbShipmentProductMappingSet(),<br /></span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> String[] { </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">getTbProduct</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">getTbOutOfWarehouse</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,<br /></span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">getTbProductConfigure</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);"> }); </span></div>呵，如果你要是在HIBERNATE当中使用，这个就太简单了吧。
<br /><br />
怎么样？呵呵呵，
<br />
从此，我对STRUTS的标签深恶痛绝，而对JSTL情有独钟了。
</span>
<img src ="http://www.blogjava.net/heweiya/aggbug/59366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2006-07-21 10:09 <a href="http://www.blogjava.net/heweiya/archive/2006/07/21/59366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TOMCAT内存溢出之解决方法</title><link>http://www.blogjava.net/heweiya/archive/2006/03/10/34659.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Fri, 10 Mar 2006 06:15:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2006/03/10/34659.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/34659.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2006/03/10/34659.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/34659.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/34659.html</trackback:ping><description><![CDATA[

<p class="MsoNormal"><b><span style="font-size: 13.5pt; font-family: 宋体;">问题表现：</span></b><b><span style="font-size: 13.5pt;" lang="EN-US"><o:p></o:p></span></b></p>


<p class="MsoNormal" style="text-indent: 24pt;"><span style="font-family: 宋体;">当用户执行</span><span style="font-family: 宋体;">一个大数据的应用时（</span><span style="" lang="EN-US"></span><span style="font-family: 宋体;">净字节码量约为</span><span style="" lang="EN-US">5M</span><span style="font-family: 宋体;">）时，系统会提示出错：</span><span style="" lang="EN-US"><o:p></o:p></span></p>


<p class="MsoNormal" style="text-indent: 24pt;"><span style="font-family: 宋体;">前台错误为：</span><span style="color: red;" lang="EN-US">HTTP</span><span style="font-family: 宋体; color: red;">　</span><span style="color: red;" lang="EN-US">Status 500</span><span style="" lang="EN-US">-<font color="#0000ff">Dispatch[EAITool] to method listCurTree retrun an
exception</font><o:p></o:p></span></p>


<p class="MsoNormal" style="text-indent: 24pt;"><span style="" lang="EN-US">(</span><span style="font-family: 宋体;">以下省略</span><span style="" lang="EN-US">)<o:p></o:p></span></p>


<p class="MsoNormal" style="text-indent: 24pt;"><span style="" lang="EN-US">………………………………………………………<o:p></o:p></span></p>


<p class="MsoNormal" style="text-indent: 24pt;"><span style="" lang="EN-US">………………………………………………………<o:p></o:p></span></p>


<p class="MsoNormal" style="text-indent: 24pt;"><span style="font-family: 宋体;">后台错误为：</span><span style="" lang="EN-US">java.lang.<span style="color: red;">OutOfMemoryError</span>:&nbsp;unable&nbsp;to&nbsp;create&nbsp;new&nbsp;native&nbsp;thread<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.lang.Thread.start(Native&nbsp;Method)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.loader.WebappLoader.notifyContext(WebappLoader.ja<br>
va:847)<o:p></o:p></span></p>


<p class="MsoNormal" style="text-indent: 24pt;"><span style="" lang="EN-US">(</span><span style="font-family: 宋体;">以下省略</span><span style="" lang="EN-US">)<o:p></o:p></span></p>


<p class="MsoNormal" style="text-indent: 24pt;"><span style="" lang="EN-US">………………………………………………………<o:p></o:p></span></p>


<p class="MsoNormal" style="text-indent: 24pt;"><span style="" lang="EN-US">………………………………………………………<o:p></o:p></span></p>


<p class="MsoNormal"><b><span style="font-size: 13.5pt; font-family: 宋体;">问题分析：</span></b><b><span style="font-size: 13.5pt;" lang="EN-US"><o:p></o:p></span></b></p>


<p class="074"><span style="font-family: 宋体;">　</span><span style="font-family: 宋体;">　　由于</span><span style="" lang="EN-US">TOMCAT</span><span style="font-family: 宋体;">内存溢出而引发的问题，主要原因是</span><span style="" lang="EN-US">JVM</span><span style="font-family: 宋体;">的虚拟内存默认为</span><span style="" lang="EN-US">128M</span><span style="font-family: 宋体;">，当超过这个值时就把先前占用的内存释放，而导致好象</span><span style="" lang="EN-US">TCP/IP</span><span style="font-family: 宋体;">丢包的假象，出现</span><span style="" lang="EN-US">HTTP500</span><span style="font-family: 宋体;">的错误。　　</span><span style="" lang="EN-US"><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体;">解决方法主要是加大</span><span style="" lang="EN-US">TOMCAT</span><span style="font-family: 宋体;">可利用内存，并在程序当中加大内存使用。</span><span style="" lang="EN-US"><o:p></o:p></span></p>


<p class="MsoNormal"><b><span style="font-size: 13.5pt; font-family: 宋体;">解决方法：</span></b><b><span style="font-size: 13.5pt;" lang="EN-US"><o:p></o:p></span></b></p>


<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">方法：加大</span><span lang="EN-US">TOMCAT</span><span style="font-family: 宋体;">可利用内存：</span><span lang="EN-US"><br>
</span><span style="font-family: 宋体;">　　在</span><span lang="EN-US">TOMCAT</span><span style="font-family: 宋体;">的目录下，也就是在</span><span lang="EN-US">TOMCAT41/bin/catalina.bat</span><span style="font-family: 宋体;">文件最前面加入</span><span lang="EN-US"><br>
</span><span style="font-family: 宋体;">　　</span><span lang="EN-US">set
JAVA_OPTS=-Xms800m -Xmx800m<br>
</span><span style="font-family: 宋体;">　　表现效果是当你启动</span><span lang="EN-US">TOMCAT</span><span style="font-family: 宋体;">时，系统内存会增加近</span><span lang="EN-US">800M</span><span style="font-family: 宋体;">使用</span><br>
</p><p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: 宋体;">操作方法：</span><span lang="EN-US"><br>
</span><span style="font-family: 宋体;">　　</span><span lang="EN-US">1</span><span style="font-family: 宋体;">）、先关掉</span><span lang="EN-US">WINDOWS</span><span style="font-family: 宋体;">服务当中的</span><span lang="EN-US">TOMCAT4</span><span style="font-family: 宋体;">服务。</span><span lang="EN-US"><br>
</span><span style="font-family: 宋体;">　　</span><span lang="EN-US">2</span><span style="font-family: 宋体;">）、再找到</span><span lang="EN-US">TOMCAT/BIN</span><span style="font-family: 宋体;">目录下</span><span lang="EN-US">startup.bat</span><span style="font-family: 宋体;">，双击打开它，你会发现现</span><span lang="EN-US">WINDOWS</span><span style="font-family: 宋体;">内存占用会增加近</span><span lang="EN-US">800M</span><span style="font-family: 宋体;">。</span><span lang="EN-US"><br>
</span><span style="font-family: 宋体;">　　</span><span lang="EN-US">3</span><span style="font-family: 宋体;">）、执行程序，因为是</span><span lang="EN-US">TOMCAT</span><span style="font-family: 宋体;">重新编译程序，所以第一次会比较慢。</span><b><span style="font-size: 13.5pt;" lang="EN-US"><o:p></o:p></span></b></p>


<p class="MsoNormal"><b><span style="font-size: 13.5pt; font-family: 宋体;">结论：</span></b><b><span style="font-size: 13.5pt;" lang="EN-US"><o:p></o:p></span></b></p>


<p class="MsoNormal" style="text-indent: 26.25pt;"><span style="font-family: 宋体;">经过测试，我们得出如下数据：</span><span style="" lang="EN-US"><o:p></o:p></span></p>


<p class="MsoNormal" style="text-indent: 26.25pt;"><span style="font-family: 宋体;">当</span><span style="" lang="EN-US"></span><span style="font-family: 宋体;">系统传输约</span><span style="" lang="EN-US">2000</span><span style="font-family: 宋体;">条数据时，大约近</span><span style="" lang="EN-US">12M</span><span style="font-family: 宋体;">的净数据（不压缩时），系统辅助运行的内存大约占用</span><span style="" lang="EN-US">150M</span><span style="font-family: 宋体;">左右的空间，也就是近</span><span style="" lang="EN-US">200M</span><span style="font-family: 宋体;">的内存占用，而我们扩大了近</span><span style="" lang="EN-US">800M</span><span style="font-family: 宋体;">的</span><span style="" lang="EN-US">JAVA</span><span style="font-family: 宋体;">内存使用，这对于业务本身来说是足够了。所以你们不用担心大数据量的传递问题。</span><span style="" lang="EN-US"><o:p></o:p></span></p>


<p class="MsoNormal" style="text-indent: 26.25pt;"><span style="font-family: 宋体;">基于</span><span style="" lang="EN-US">JAVA</span><span style="font-family: 宋体;">虚拟机的原理，</span><span style="" lang="EN-US">JAVA</span><span style="font-family: 宋体;">自动有垃圾回收机制，也就是在你对一些内存长时间不使用时（近</span><span style="" lang="EN-US">2</span><span style="font-family: 宋体;">分钟，取决于使用频度和优先级等），就会自动垃圾回收，从而释放不用的内存占用。</span><span style="" lang="EN-US"><o:p></o:p></span></p>

<img src ="http://www.blogjava.net/heweiya/aggbug/34659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2006-03-10 14:15 <a href="http://www.blogjava.net/heweiya/archive/2006/03/10/34659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MYSQL BUG #5020及解决方法</title><link>http://www.blogjava.net/heweiya/archive/2006/01/18/28483.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Wed, 18 Jan 2006 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2006/01/18/28483.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/28483.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2006/01/18/28483.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/28483.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/28483.html</trackback:ping><description><![CDATA[MYSQL　BUG　＃5020<br>
描述：<br>
　　　<a href="http://bugs.mysql.com/bug.php?id=5020">MYSQL网站BUG公示</a><br>
错误MESSAGE：<br>
&nbsp;&nbsp;&nbsp;&nbsp; <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">Connection&nbsp;was&nbsp;closed&nbsp;due&nbsp;</span><span style="color: rgb(0, 0, 255);">to</span><span style="color: rgb(0, 0, 0);">&nbsp;the&nbsp;following&nbsp;exception:<br><br></span><span style="color: rgb(128, 128, 128);">**</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">BEGIN</span><span style="color: rgb(0, 0, 0);">&nbsp;NESTED&nbsp;EXCEPTION&nbsp;</span><span style="color: rgb(128, 128, 128);">**</span><span style="color: rgb(0, 0, 0);">&nbsp;<br><br>java.sql.SQLException<br>MESSAGE:&nbsp;Communication&nbsp;link&nbsp;failure:&nbsp;java.net.SocketException,&nbsp;underlying&nbsp;cause:&nbsp;Software&nbsp;caused&nbsp;connection&nbsp;abort:&nbsp;recv&nbsp;failed<br><br></span><span style="color: rgb(128, 128, 128);">**</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">BEGIN</span><span style="color: rgb(0, 0, 0);">&nbsp;NESTED&nbsp;EXCEPTION&nbsp;</span><span style="color: rgb(128, 128, 128);">**</span><span style="color: rgb(0, 0, 0);">&nbsp;<br><br>java.net.SocketException<br>MESSAGE:&nbsp;Software&nbsp;caused&nbsp;connection&nbsp;abort:&nbsp;recv&nbsp;failed<br><br>STACKTRACE:<br><br>java.net.SocketException:&nbsp;Software&nbsp;caused&nbsp;connection&nbsp;abort:&nbsp;recv&nbsp;failed<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.net.SocketInputStream.socketRead0(Native&nbsp;Method)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.net.SocketInputStream.</span><span style="color: rgb(0, 0, 255);">read</span><span style="color: rgb(0, 0, 0);">(SocketInputStream.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">129</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.BufferedInputStream.fill(BufferedInputStream.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">183</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.BufferedInputStream.read1(BufferedInputStream.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">222</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.BufferedInputStream.</span><span style="color: rgb(0, 0, 255);">read</span><span style="color: rgb(0, 0, 0);">(BufferedInputStream.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">277</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1385</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1532</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1923</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1163</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1272</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.mysql.jdbc.Connection.execSQL(Connection.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">2236</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1555</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">89</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.hibernate.loader.Loader.getResultSet(Loader.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">880</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.hibernate.loader.Loader.doQuery(Loader.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">273</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">138</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.hibernate.loader.Loader.doList(Loader.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1063</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.hibernate.loader.Loader.list(Loader.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1054</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">854</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1554</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1531</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.hibernate.impl.SessionImpl.</span><span style="color: rgb(0, 0, 255);">delete</span><span style="color: rgb(0, 0, 0);">(SessionImpl.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1678</span><span style="color: rgb(0, 0, 0);">)<br>&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;net.sf.hibernate.impl.SessionImpl.</span><span style="color: rgb(0, 0, 255);">delete</span><span style="color: rgb(0, 0, 0);">(SessionImpl.java:</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1664</span><span style="color: rgb(0, 0, 0);">)</span></div>出错原因：<br>
　　　<span style="font-family: 宋体;">我们的系统一天</span><span lang="EN-US">24</span><span style="font-family: 宋体;">小时运行，但在夜晚的时候是没有人连接的，因此</span><span lang="EN-US">Socket</span><span style="font-family: 宋体;">连接就超时了。早上尝试做任何事情（比如：登录）都将以失败告终，除非我们关闭连接或者重新建立连接。</span><span lang="EN-US"><o:p></o:p></span><span style="font-family: 宋体;">到</span><st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"><span lang="EN-US">3.0.11</span></st1:chsdate><span style="font-family: 宋体;">后才会发生这种情况。</span>
<br>
　　　<font color="#800080">现在我们使用的MYSQL版本号为4.016，问题一样。</font><br>
专家建议：<br>
　　　<font color="#ff0000">[<span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">Mark Matthews</span>],翻译如下：</font><br>
　　　<span style="font-family: 宋体;">注意：我不赞成</span><span lang="EN-US">Autoreconnect</span><span style="font-family: 宋体;">功能，在以后的发行版本中，它最终会被移除。</span><span lang="EN-US"><o:p></o:p></span><span style="font-family: 宋体;">在这种特殊情况下，</span> <span style="font-family: 宋体;">它不起作用的原因是：在</span><st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899" w:st="on"><span lang="EN-US">3.0.11</span></st1:chsdate><span style="font-family: 宋体;">以后，</span><span lang="EN-US">autoreconnect</span><span style="font-family: 宋体;">的方法变得更加安全了并且和阿</span><span lang="EN-US">utoCommit</span><span style="font-family: 宋体;">状态有关联，这样的话就能使当前‘</span><span lang="EN-US">in-flight</span><span style="font-family: 宋体;">’事务失败（如果你在失败后，再次试图连接事务，就会重新被连接）。请查看相关解释文档，文档的修复故障中包括如何正确实用这个属性。</span><span lang="EN-US"><o:p></o:p></span><span style="font-family: 宋体;">无论在哪种情况下，　　　如果</span><span lang="EN-US">TCP/IP</span><span style="font-family: 宋体;">在没有连接的情况下并且还不会冒着数据库被瘫痪的危险，是没有百分之百的方式使得</span><span lang="EN-US">JDBC</span><span style="font-family: 宋体;">驱动器被自动重连接的，这也是为何要移除</span><span lang="EN-US">Autoreconnect</span><span style="font-family: 宋体;">功能的原因。</span><span lang="EN-US"><o:p></o:p></span><span style="font-family: 宋体;">不管网络发生什么情况，</span><span lang="EN-US">
　　　JDBC </span><span style="font-family: 宋体;">都不会说明这个连接是否处于连接状态。</span><span lang="EN-US">JDBC driver </span><span style="font-family: 宋体;">客户端负责处理网络故障，只有应用程序本身（实际上是应用程序的开发者）知道如何正确应对事务失败的情况。在服务器上过期的‘</span><span lang="EN-US">Wait</span><span style="font-family: 宋体;">—</span><span lang="EN-US">timeout</span><span style="font-family: 宋体;">’基本上是服务器给与的强制性网络故障。</span><span style="font-size: 10.5pt; font-family: 宋体; color: red;">你通过把‘</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;; color: red;" lang="EN-US">Wait</span><span style="font-size: 10.5pt; font-family: 宋体; color: red;">—</span><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;; color: red;" lang="EN-US">timeout</span><span style="font-size: 10.5pt; font-family: 宋体; color: red;">’设置的高点儿就可以改正它，尽管如此，作为一个开发者，你的代码应该包含相关的异常处理并采取适当的恢复措施，不要都把它们传到调用堆中。</span><span style="font-family: 宋体;"></span><span style="font-family: 宋体;"></span><span lang="EN-US"><o:p><br>
</o:p></span><span style="font-family: 宋体;">　　　连接错误总是有一个</span><span lang="EN-US">SQL</span><span style="font-family: 宋体;">状态‘</span><span lang="EN-US">08</span><span style="font-family: 宋体;">’。如果你发现它的话，你可以再连接一次并重试事务（如果是适当的话）</span><span lang="EN-US"><o:p><br>
</o:p></span><span style="font-family: 宋体;">　　　不管什么原因，如果这样不起作用的话，配置你的连接池来测试是否处于连接状态并且那些长时间闲置连接（所有的连接池都能这样做，但是它们的配置取决于池子）。<br>
<font color="#ff0000">作者说明：在MYSQL4.1以后的版本当中，没有“wait_timeout”变量，由</font></span><font color="#ff0000">interactiveClient代替<br>
参考资料：http://dev.mysql.com/doc/connector/j/en/cj-configuration-properties.html<br>
&nbsp;&nbsp;&nbsp;&nbsp; [</font><span style="font-size: 10.5pt; font-family: &quot;Times New Roman&quot;;" lang="EN-US">Kirk Wylie</span><font color="#ff0000">]:翻译如下：<br>
　　　</font><span style="font-family: 宋体;">如果有一个事务在运行的话，就能得到一个特别简单的例子：<br>
　　　　</span><span lang="EN-US">---</span><span style="font-family: 宋体;">如果连接在</span><span lang="EN-US">autoCommit</span><span style="font-family: 宋体;">模式下</span><span lang="EN-US">,autoReconnect</span><span style="font-family: 宋体;">是安全的。<br>
　　　　</span><span lang="EN-US">---</span><span style="font-family: 宋体;">如果连接不在</span><span lang="EN-US">autoCommit</span><span style="font-family: 宋体;">模式下，但是没有打开的事务，</span><span lang="EN-US">autoReconnect</span><span style="font-family: 宋体;">是安全的。（因为连接可能在池在里面）<br>
</span><span lang="EN-US">　　　　---</span><span style="font-family: 宋体;">如果连接不在</span><span lang="EN-US">autoCommit</span><span style="font-family: 宋体;">模式下，有打开的事务，这样就会抛出异常。<br>
　　　</span><span style="font-family: 宋体;">这样会解决你不在</span><span lang="EN-US">autoRecom\nnect</span><span style="font-family: 宋体;">模式下的忧虑并且会保留应用程序的功能性。</span><span lang="EN-US"><o:p><br>
</o:p></span><span style="font-family: 宋体;">　　　尽管如此，在它改变的时候，在改变日志中没有任何记录说明发生了改变，这点令我很烦。由于这种改变很可能破坏我的应用程序，这种变化因该添加到</span><span lang="EN-US">CHANGE</span><span style="font-family: 宋体;">文件中。</span>
<br>
<br>
　　<font color="#0000ff">如下是我个人的做法：<br>
　　（STRUTS+SPRING+HIBERNATE）<br>
　　1、把mysql的变量</font><font color="#ff0000">interactiveClient<font color="#0000ff">由
默认的28800（8个小时）延长。并告知用户多长时间后，重新启动TOMCAT服务器。不过，MYSQL5.0.12版本以前的所有版本，只要你设置成
了默认语言为GBK，所有对interactive_timeout(wait_timeout)的时候如何设置，重新连接或者重新启动MYSQL后，都
是28800，现在我使用的5.0.18后，使用GBK，没有问题。<br>
　　2、在HIBERNATE当中加入：<br>
　　　<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);"><img src="http://www.blogjava.net/images/dot.gif"><img src="http://www.blogjava.net/images/dot.gif"><img src="http://www.blogjava.net/images/dot.gif"><img src="http://www.blogjava.net/images/dot.gif"><img src="http://www.blogjava.net/images/dot.gif"><img src="http://www.blogjava.net/images/dot.gif">..<br></span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">property&nbsp;name</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">hibernate.connection.url</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">jdbc:mysql:</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">192.168.100.111/eai?autoReconnect=true&lt;/property&gt;</span><span style="color: rgb(0, 128, 0);"><br></span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">property&nbsp;name</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">enableDeprecatedAutoreconnect</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">property</span><span style="color: rgb(0, 0, 0);">&gt;<br>
&lt;!--&nbsp; 如下的语句是使用第三方的DBCP来建立连接池 --&gt;<br>
&lt;property name="dbcp.maxActive"&gt;100&lt;/property&gt;<br>
&lt;property name="dbcp.whenExhaustedAction"&gt;1&lt;/property&gt;<br>
&lt;!--&nbsp; 看到了没有，这个maxWait一定要大于MYSQL默认的28800（秒） --&gt;<br>
&lt;property name="dbcp.maxWait"&gt;30000&lt;/property&gt;<br>
&lt;property name="dbcp.maxIdle"&gt;10&lt;/property&gt;<br>
<br>
&lt;property name="dbcp.ps.maxActive"&gt;100&lt;/property&gt;<br>
&lt;property name="dbcp.ps.whenExhaustedAction"&gt;1&lt;/property&gt;<br>
&lt;property name="dbcp.ps.maxWait"&gt;30000&lt;/property&gt;<br>
&lt;property name="dbcp.ps.maxIdle"&gt;10&lt;/property&gt;<br>
</span><span style="color: rgb(0, 0, 0);"><img src="http://www.blogjava.net/images/dot.gif"><img src="http://www.blogjava.net/images/dot.gif"><img src="http://www.blogjava.net/images/dot.gif"><img src="http://www.blogjava.net/images/dot.gif"><img src="http://www.blogjava.net/images/dot.gif"><img src="http://www.blogjava.net/images/dot.gif">..</span></div>&nbsp;&nbsp;&nbsp;&nbsp; <br>
　如上两种方法均可，推荐大家使用第二种方法，来遮挡一下MYSQL的BUG。<br>
如果有不对之处，请大家提出自己的见解。<br>
</font></font><font color="#ff0000"><br>
</font><span style="font-family: 宋体;">
</span>


<img src ="http://www.blogjava.net/heweiya/aggbug/28483.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2006-01-18 14:48 <a href="http://www.blogjava.net/heweiya/archive/2006/01/18/28483.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>史上最简单的struts+spring+hibernate配置实例[修订版]</title><link>http://www.blogjava.net/heweiya/archive/2005/12/19/24595.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Mon, 19 Dec 2005 03:27:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2005/12/19/24595.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/24595.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2005/12/19/24595.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/24595.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/24595.html</trackback:ping><description><![CDATA[<span class="postdetails">本文不关心必须的JAR包，这个东东在网上能够找到很多，本文只关心如何配置，才能够让STRUTS SPRING HIBERNATE和MYSQL相关连。
<br>
开发环境：wsad5.1
<br>
         Spring-Version: 1.1.4
<br>
         Struts Framework 1.1
<br>
         Hibernate-Version: 2.1.7
<br>

<br>
&lt;web.xml&gt;
<br>
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
<br>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<br>
&lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"&gt;
<br>
&lt;web-app id="WebApp"&gt;
<br>
	&lt;display-name&gt;MVC_BPEL_MODELWeb&lt;/display-name&gt;
<br>
	&lt;context-param&gt;
<br>
		&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
<br>
		&lt;param-value&gt;/WEB-INF/Hibernate_Context.xml&lt;/param-value&gt;
<br>
	&lt;/context-param&gt;
<br>
	&lt;servlet&gt;
<br>
		&lt;servlet-name&gt;SpringContextServlet&lt;/servlet-name&gt;
<br>
		&lt;servlet-class&gt;org.springframework.web.context.ContextLoaderServlet&lt;/servlet-class&gt;
<br>
		&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
<br>
	&lt;/servlet&gt;
<br>
	&lt;servlet&gt;
<br>
		&lt;servlet-name&gt;action&lt;/servlet-name&gt;
<br>
		&lt;servlet-class&gt;org.apache.struts.action.ActionServlet&lt;/servlet-class&gt;
<br>
		&lt;init-param&gt;
<br>
			&lt;param-name&gt;config&lt;/param-name&gt;
<br>
			&lt;param-value&gt;WEB-INF/struts-config.xml&lt;/param-value&gt;
<br>
		&lt;/init-param&gt;
<br>
		&lt;init-param&gt;
<br>
			&lt;param-name&gt;debug&lt;/param-name&gt;
<br>
			&lt;param-value&gt;2&lt;/param-value&gt;
<br>
		&lt;/init-param&gt;
<br>
		&lt;init-param&gt;
<br>
			&lt;param-name&gt;detail&lt;/param-name&gt;
<br>
			&lt;param-value&gt;2&lt;/param-value&gt;
<br>
		&lt;/init-param&gt;
<br>
		&lt;init-param&gt;
<br>
			&lt;param-name&gt;validate&lt;/param-name&gt;
<br>
			&lt;param-value&gt;true&lt;/param-value&gt;
<br>
		&lt;/init-param&gt;
<br>
		&lt;load-on-startup&gt;2&lt;/load-on-startup&gt;
<br>
	&lt;/servlet&gt;
<br>
	&lt;servlet-mapping&gt;
<br>
		&lt;servlet-name&gt;action&lt;/servlet-name&gt;
<br>
		&lt;url-pattern&gt;*.do&lt;/url-pattern&gt;
<br>
	&lt;/servlet-mapping&gt;
<br>
	&lt;welcome-file-list&gt;
<br>
		&lt;welcome-file&gt;index.html&lt;/welcome-file&gt;
<br>
		&lt;welcome-file&gt;index.htm&lt;/welcome-file&gt;
<br>
		&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
<br>
		&lt;welcome-file&gt;default.html&lt;/welcome-file&gt;
<br>
		&lt;welcome-file&gt;default.htm&lt;/welcome-file&gt;
<br>
		&lt;welcome-file&gt;default.jsp&lt;/welcome-file&gt;
<br>
	&lt;/welcome-file-list&gt;
<br>
	&lt;taglib&gt;
<br>
		&lt;taglib-uri&gt;/WEB-INF/struts-bean.tld&lt;/taglib-uri&gt;
<br>
		&lt;taglib-location&gt;/WEB-INF/struts-bean.tld&lt;/taglib-location&gt;
<br>
	&lt;/taglib&gt;
<br>
	&lt;taglib&gt;
<br>
		&lt;taglib-uri&gt;/WEB-INF/struts-html.tld&lt;/taglib-uri&gt;
<br>
		&lt;taglib-location&gt;/WEB-INF/struts-html.tld&lt;/taglib-location&gt;
<br>
	&lt;/taglib&gt;
<br>
	&lt;taglib&gt;
<br>
		&lt;taglib-uri&gt;/WEB-INF/struts-logic.tld&lt;/taglib-uri&gt;
<br>
		&lt;taglib-location&gt;/WEB-INF/struts-logic.tld&lt;/taglib-location&gt;
<br>
	&lt;/taglib&gt;
<br>
	&lt;taglib&gt;
<br>
		&lt;taglib-uri&gt;/WEB-INF/struts-nested.tld&lt;/taglib-uri&gt;
<br>
		&lt;taglib-location&gt;/WEB-INF/struts-nested.tld&lt;/taglib-location&gt;
<br>
	&lt;/taglib&gt;
<br>
	&lt;taglib&gt;
<br>
		&lt;taglib-uri&gt;/WEB-INF/struts-template.tld&lt;/taglib-uri&gt;
<br>
		&lt;taglib-location&gt;/WEB-INF/struts-template.tld&lt;/taglib-location&gt;
<br>
	&lt;/taglib&gt;
<br>
	&lt;taglib&gt;
<br>
		&lt;taglib-uri&gt;/WEB-INF/struts-tiles.tld&lt;/taglib-uri&gt;
<br>
		&lt;taglib-location&gt;/WEB-INF/struts-tiles.tld&lt;/taglib-location&gt;
<br>
	&lt;/taglib&gt;
<br>

<br>
&lt;/web-app&gt;
<br>
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
<br>
&lt;action-servlet.xml&gt;
<br>
----------------------------------------------------------------------
<br>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<br>
&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
<br>
   "http://www.springframework.org/dtd/spring-beans.dtd"&gt;
<br>

<br>
&lt;beans&gt;
<br>
	&lt;bean name="/User" class="com.yaya.action.UserAction" singleton="false"&gt;
<br>
		&lt;property name="userManager"&gt;
<br>
			&lt;ref bean="userManager" /&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>

<br>
&lt;/beans&gt;
<br>
-------------------------------------------------------------------
<br>
&lt;hibernate_context.xml&gt;
<br>
--------------------------------------------------------------------
<br>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<br>
&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&gt;
<br>

<br>
&lt;beans&gt;
<br>
	&lt;!-- &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt;
<br>
		&lt;property name="viewClass"&gt;&lt;value&gt;org.springframework.web.servlet.view.JstlView&lt;/value&gt;&lt;/property&gt;
<br>
		&lt;property name="prefix"&gt;&lt;value&gt;/WEB-INF/jsp/&lt;/value&gt;&lt;/property&gt;
<br>
		&lt;property name="suffix"&gt;&lt;value&gt;.jsp&lt;/value&gt;&lt;/property&gt;
<br>
		&lt;/bean&gt; --&gt;
<br>
	&lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"&gt;
<br>

<br>
		&lt;property name="driverClassName"&gt;
<br>
			&lt;value&gt;com.mysql.jdbc.Driver&lt;/value&gt;
<br>
		&lt;/property&gt;
<br>

<br>
		&lt;property name="url"&gt;
<br>
			&lt;value&gt;jdbc:mysql://localhost/pdm&lt;/value&gt;
<br>
		&lt;/property&gt;
<br>

<br>
		&lt;property name="username"&gt;
<br>
			&lt;value&gt;root&lt;/value&gt;
<br>
		&lt;/property&gt;
<br>

<br>
		&lt;property name="password"&gt;
<br>
			&lt;value&gt;&lt;/value&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>
	&lt;bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean"&gt;
<br>

<br>
		&lt;property name="dataSource"&gt;
<br>
			&lt;ref local="dataSource" /&gt;
<br>
		&lt;/property&gt;
<br>

<br>
		&lt;property name="mappingResources"&gt;
<br>
			&lt;list&gt;
<br>
				&lt;value&gt;hbm_tb/TSysuser.hbm.xml&lt;/value&gt;
<br>
			&lt;/list&gt;
<br>
		&lt;/property&gt;
<br>

<br>
		&lt;property name="hibernateProperties"&gt;
<br>
			&lt;props&gt;
<br>
				&lt;prop key="hibernate.dialect"&gt;net.sf.hibernate.dialect.MySQLDialect&lt;/prop&gt;
<br>
				&lt;prop key="hibernate.show_sql"&gt;true&lt;/prop&gt;
<br>
			&lt;/props&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>
	&lt;bean id="transactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager"&gt;
<br>

<br>
		&lt;property name="sessionFactory"&gt;
<br>
			&lt;ref local="sessionFactory" /&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>

<br>
	&lt;!-- Spring的数据访问异常转换器（Data Access Exception Translator）定义 --&gt;
<br>
	&lt;bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator"&gt;
<br>
		&lt;property name="dataSource"&gt;
<br>
			&lt;ref bean="dataSource" /&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>
	&lt;bean id="userDao" class="com.yaya.service.dao.hibernate.UserHibernateDao"&gt;
<br>
		&lt;property name="sessionFactory"&gt;
<br>
			&lt;ref local="sessionFactory" /&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>
	&lt;bean id="userManagerTarget" class="com.yaya.service.spring.UserManagerImpl"&gt;
<br>
		&lt;property name="userDao"&gt;
<br>
			&lt;ref local="userDao" /&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>

<br>
	&lt;bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"&gt;
<br>
		&lt;property name="transactionManager"&gt;
<br>
			&lt;ref bean="transactionManager" /&gt;
<br>
		&lt;/property&gt;
<br>

<br>
		&lt;property name="target"&gt;
<br>
			&lt;ref local="userManagerTarget" /&gt;
<br>
		&lt;/property&gt;
<br>

<br>
		&lt;property name="proxyTargetClass"&gt;
<br>
			&lt;value&gt;true&lt;/value&gt;
<br>
		&lt;/property&gt;
<br>
		&lt;property name="transactionAttributes"&gt;
<br>
			&lt;props&gt;
<br>
				&lt;prop key="save*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;
<br>
				&lt;prop key="find*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;
<br>
				&lt;prop key="remove*"&gt;PROPAGATION_REQUIRED,readOnly&lt;/prop&gt;
<br>
				&lt;prop key="*"&gt;PROPAGATION_REQUIRED,readOnly&lt;/prop&gt;
<br>
			&lt;/props&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>

<br>
&lt;/beans&gt;-------------------------------------------------------------------
<br>
&lt;struts-config.xml&gt;
<br>
-------------------------------------------------------------------
<br>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<br>
&lt;!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
<br>
                               "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"&gt;
<br>

<br>
&lt;struts-config&gt;
<br>

<br>
	&lt;!-- 数据源 --&gt;
<br>
	&lt;data-sources&gt;&lt;/data-sources&gt;
<br>

<br>
	&lt;!-- 表单 Bean --&gt;
<br>
	&lt;form-beans&gt;
<br>
		&lt;form-bean name="UserActionForm" type="org.apache.struts.validator.DynaValidatorForm"&gt;
<br>
			&lt;form-property name="user" type="com.yaya.hb.TSysuser" /&gt;
<br>
		&lt;/form-bean&gt;
<br>
	&lt;/form-beans&gt;
<br>

<br>
	&lt;!-- 全局异常 --&gt;
<br>
	&lt;global-exceptions&gt;&lt;/global-exceptions&gt;
<br>

<br>
	&lt;!-- 全局转发 --&gt;
<br>
	&lt;global-forwards&gt;&lt;/global-forwards&gt;
<br>

<br>
	&lt;!-- 操作映射 --&gt;
<br>
	&lt;action-mappings&gt;
<br>
		&lt;action path="/User" type="org.springframework.web.struts.DelegatingActionProxy" 
<br>
		name="UserActionForm" scope="request" parameter="method" validate="false"&gt;
<br>
			&lt;forward name="list" path="/userlist.jsp" /&gt;
<br>
			&lt;forward name="edit" path="/userform.jsp" /&gt;
<br>
		&lt;/action&gt;
<br>

<br>
	&lt;/action-mappings&gt;
<br>

<br>
	&lt;!-- 消息资源 --&gt;
<br>
	&lt;message-resources parameter="mvc_bpel_modelweb.resources.ApplicationResources" /&gt;
<br>
	&lt;plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"&gt;
<br>
		&lt;set-property property="contextConfigLocation" value="/WEB-INF/action-servlet.xml" /&gt;
<br>
	&lt;/plug-in&gt;
<br>
	&lt;plug-in className="org.apache.struts.validator.ValidatorPlugIn"&gt;
<br>
	&lt;set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/&gt;
<br>
	&lt;/plug-in&gt;
<br>

<br>
&lt;/struts-config&gt;
<br>
------------------------------------------------------------------
<br>
UserHibernateDao.java
<br>
------------------------------------------------------------------
<br>
/*
<br>
 * 创建日期 2005-4-7
<br>
 *
<br>
 * 更改所生成文件模板为
<br>
 * 窗口 &gt; 首选项 &gt; Java &gt; 代码生成 &gt; 代码和注释
<br>
 */
<br>
package com.yaya.service.dao.hibernate;
<br>

<br>
import java.util.List;
<br>

<br>
import org.springframework.orm.ObjectRetrievalFailureException;
<br>
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
<br>
import net.sf.hibernate.HibernateException;
<br>

<br>
import com.yaya.hb.TSysuser;
<br>
import com.yaya.service.dao.IUserDao;
<br>
import java.util.List;
<br>

<br>
import org.apache.commons.logging.Log;
<br>

<br>
import org.apache.commons.logging.LogFactory;
<br>

<br>
/**
<br>
 * @author Administrator
<br>
 *
<br>
 * 更改所生成类型注释的模板为
<br>
 * 窗口 &gt; 首选项 &gt; Java &gt; 代码生成 &gt; 代码和注释
<br>
 */
<br>
public class UserHibernateDao extends HibernateDaoSupport implements IUserDao {
<br>

<br>
	private Log log = LogFactory.getLog(UserHibernateDao.class);
<br>

<br>
	/* （非 Javadoc）
<br>
	
<br>
	* @see com.jandar.dao.IUserDAO#getUsers()
<br>
	
<br>
	*/
<br>

<br>
	public List getUsers() {
<br>

<br>
		return getHibernateTemplate().find("from TSysuser");
<br>

<br>
	}
<br>

<br>
	/* （非 Javadoc）
<br>
	
<br>
	* @see com.jandar.dao.IUserDAO#getUser(java.lang.Long)
<br>
	
<br>
	*/
<br>

<br>
	public TSysuser getUser(String username) {
<br>

<br>
		//	   TODO 自动生成方法存根
<br>
		if (this.getHibernateTemplate() == null)
<br>
		{
<br>
			System.out.println("error at there");
<br>
			return null;
<br>
			
<br>
		}
<br>
		TSysuser user = (TSysuser) getHibernateTemplate().get(TSysuser.class,username);
<br>
		//TSysuser user = (TSysuser) getHibernateTemplate().find("from TSysuser users where users.username = 'admin'",username);
<br>
			if (user == null) {
<br>
				throw new ObjectRetrievalFailureException(TSysuser.class, username);
<br>
			}
<br>
			return user;
<br>

<br>

<br>
	   //String msg = getHibernateTemplate().get(TSysuser.class,username).toString();
<br>

<br>
	   //TSysuser user = (TSysuser) getHibernateTemplate().find("from TSysuser where username = ?",username);
<br>
	   //System.out.println(user.getUserdesc());
<br>
	   //System.out.println(user.getHeadship());
<br>

<br>
	   //return user;		
<br>
	}
<br>

<br>
	/* （非 Javadoc）
<br>
	
<br>
	* @see com.jandar.dao.IUserDAO#saveUser(com.jandar.model.User)
<br>
	
<br>
	*/
<br>

<br>
	public void saveUser(TSysuser user) {
<br>

<br>
		log.debug("xxxxxxx");
<br>

<br>
		System.out.println("yyyy");
<br>

<br>
		getHibernateTemplate().saveOrUpdate(user);
<br>

<br>
		if (log.isDebugEnabled()) {
<br>

<br>
			log.debug("username set to " + user.getUsername());
<br>

<br>
		}
<br>

<br>
	}
<br>

<br>
	/* （非 Javadoc）
<br>
	
<br>
	* @see com.jandar.dao.IUserDAO#removeUser(java.lang.Long)
<br>
	
<br>
	*/
<br>

<br>
	public void removeUser(String username) {
<br>

<br>
		Object user = getHibernateTemplate().load(TSysuser.class, username);
<br>

<br>
		getHibernateTemplate().delete(user);
<br>

<br>
		if (log.isDebugEnabled()) {
<br>

<br>
			log.debug("del user " + username);
<br>

<br>
		}
<br>

<br>
	}
<br>

<br>
}
<br>
-------------------------------------------------------------------
<br>
useraction.java
<br>
--------------------------------------------------------------------
<br>
/*
<br>
 * 创建日期 2005-4-11
<br>
 *
<br>
 * 更改所生成文件模板为
<br>
 * 窗口 &gt; 首选项 &gt; Java &gt; 代码生成 &gt; 代码和注释
<br>
 */
<br>
package com.yaya.action;
<br>

<br>
import java.util.Date;
<br>

<br>
import org.apache.struts.actions.DispatchAction;
<br>
import javax.servlet.http.HttpServletRequest;
<br>
import javax.servlet.http.HttpServletResponse;
<br>

<br>
import org.apache.commons.beanutils.ConvertUtils;
<br>
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
<br>
import org.apache.commons.logging.Log;
<br>
import org.apache.commons.logging.LogFactory;
<br>
import org.apache.struts.action.ActionErrors;
<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.action.ActionMessage;
<br>
import org.apache.struts.action.ActionMessages;
<br>
import org.apache.struts.action.DynaActionForm;
<br>
import org.apache.struts.util.MessageResources;
<br>

<br>
import com.opensymphony.user.User;
<br>
import com.yaya.axis.SpringBeanProvider;
<br>
import com.yaya.hb.TSysuser;
<br>
import com.yaya.service.spring.UserManagerImpl;
<br>
/**
<br>
 * @author Administrator
<br>
 *
<br>
 * 更改所生成类型注释的模板为
<br>
 * 窗口 &gt; 首选项 &gt; Java &gt; 代码生成 &gt; 代码和注释
<br>
 */
<br>
public class UserAction extends DispatchAction {
<br>

<br>
	private static Log log = LogFactory.getLog(UserAction.class);
<br>
	private UserManagerImpl mgr = null;
<br>
	public void setUserManager(UserManagerImpl userManager) {
<br>
		this.mgr = userManager;
<br>
	}
<br>

<br>
	public ActionForward delete(
<br>
		ActionMapping mapping,
<br>
		ActionForm form,
<br>
		HttpServletRequest request,
<br>
		HttpServletResponse response)
<br>
		throws Exception {
<br>
		if (log.isDebugEnabled()) {
<br>
			log.debug("entering 'delete' method...");
<br>
		}
<br>
		mgr.removeUser(request.getParameter("user.username"));
<br>
		ActionMessages messages = new ActionMessages();
<br>
		messages.add(
<br>
			ActionMessages.GLOBAL_MESSAGE,
<br>
			new ActionMessage("user.deleted"));
<br>
		saveMessages(request, messages);
<br>
		return list(mapping, form, request, response);
<br>
	}
<br>

<br>
	public ActionForward edit(
<br>
		ActionMapping mapping,
<br>
		ActionForm form,
<br>
		HttpServletRequest request,
<br>
		HttpServletResponse response)
<br>
		throws Exception {
<br>
		if (log.isDebugEnabled()) {
<br>
			log.debug("entering 'edit' method...");
<br>
		}
<br>

<br>
		DynaActionForm UserActionForm = (DynaActionForm) form;
<br>
		String username = request.getParameter("username");
<br>

<br>
		// null userId indicates an add
<br>
		if (username != null) {
<br>
			try
<br>
			{
<br>
				TSysuser user = mgr.getUser(username);
<br>
				if (user == null) {
<br>
					ActionMessages errors = new ActionMessages();
<br>
					errors.add(
<br>
						ActionMessages.GLOBAL_MESSAGE,
<br>
						new ActionMessage("user.missing"));
<br>
					saveErrors(request, (ActionErrors) errors);
<br>
					return mapping.findForward("list");
<br>
				}
<br>
				UserActionForm.set("user",user);
<br>
				//request.setAttribute("user",user);
<br>
			}
<br>
			catch(Exception e)
<br>
			{
<br>
				e.printStackTrace();
<br>
			}
<br>

<br>
		}
<br>
		return mapping.findForward("edit");
<br>
	}
<br>

<br>
	public ActionForward list(
<br>
		ActionMapping mapping,
<br>
		ActionForm form,
<br>
		HttpServletRequest request,
<br>
		HttpServletResponse response)
<br>
		throws Exception {
<br>
		if (log.isDebugEnabled()) {
<br>
			log.debug("entering 'list' method...");
<br>
		}
<br>
		request.setAttribute("users", mgr.getUsers());
<br>
		return mapping.findForward("list");
<br>
	}
<br>

<br>
	public ActionForward save(
<br>
		ActionMapping mapping,
<br>
		ActionForm form,
<br>
		HttpServletRequest request,
<br>
		HttpServletResponse response)
<br>
		throws Exception {
<br>
		if (log.isDebugEnabled()) {
<br>
			log.debug("entering 'save' method...");
<br>
		}
<br>

<br>
		if (isCancelled(request)) {
<br>
			return list(mapping, form, request, response);
<br>
		}
<br>

<br>
		// run validation rules on this form
<br>
		ActionMessages errors = form.validate(mapping, request);
<br>

<br>
		if (!errors.isEmpty()) {
<br>
			saveErrors(request, (ActionErrors) errors);
<br>

<br>
			return mapping.findForward("edit");
<br>
		}
<br>
		DynaActionForm UserActionForm = (DynaActionForm) form;
<br>
		TSysuser user = (TSysuser) UserActionForm.get("user");
<br>

<br>
		mgr.saveUser(user);
<br>

<br>
		ActionMessages messages = new ActionMessages();
<br>
		messages.add(ActionMessages.GLOBAL_MESSAGE,
<br>
				new ActionMessage("user.saved", user.getUsername()));
<br>
		//saveMessages((HttpServletRequest) request.getSession(), messages);
<br>

<br>
		return mapping.findForward("list");
<br>
	}
<br>

<br>
	public ActionForward unspecified(
<br>
		ActionMapping mapping,
<br>
		ActionForm form,
<br>
		HttpServletRequest request,
<br>
		HttpServletResponse response)
<br>
		throws Exception {
<br>
		return list(mapping, form, request, response);
<br>
	}
<br>

<br>
}
<br>

<br>
-------------------------------------------------------------------
<br>
UserActionForm.java
<br>
-------------------------------------------------------------------
<br>
/*
<br>
 * 创建日期 2005-3-29
<br>
 *
<br>
 * 更改所生成文件模板为
<br>
 * 窗口 &gt; 首选项 &gt; Java &gt; 代码生成 &gt; 代码和注释
<br>
 */
<br>
package com.yaya.actionform;
<br>

<br>
import java.util.Date;
<br>

<br>
import javax.servlet.http.HttpServletRequest;
<br>

<br>
import org.apache.struts.action.ActionError;
<br>
import org.apache.struts.action.ActionErrors;
<br>
import org.apache.struts.action.ActionForm;
<br>
import org.apache.struts.action.ActionMapping;
<br>

<br>
/**
<br>
 * @author Administrator
<br>
 *
<br>
 * 更改所生成类型注释的模板为
<br>
 * 窗口 &gt; 首选项 &gt; Java &gt; 代码生成 &gt; 代码和注释
<br>
 */
<br>
public class UserActionForm extends ActionForm {
<br>
	/** identifier field */
<br>
	private String username;
<br>

<br>
	/** identifier field */
<br>
	private String userdesc;
<br>

<br>
	/** identifier field */
<br>
	private String passwords;
<br>

<br>
	/** identifier field */
<br>
	private String deptno;
<br>

<br>
	/** identifier field */
<br>
	private String headship;
<br>

<br>
	/** identifier field */
<br>
	private String sex;
<br>

<br>
	/** identifier field */
<br>
	private String tel;
<br>

<br>
	/** identifier field */
<br>
	private String email;
<br>

<br>
	/** identifier field */
<br>
	private String url;
<br>

<br>
	/** identifier field */
<br>
	private String pcall;
<br>

<br>
	/** identifier field */
<br>

<br>
	/** identifier field */
<br>
	private String userphoto;
<br>

<br>
	/** identifier field */
<br>
	private Integer facerefutime;
<br>

<br>
	/** identifier field */
<br>
	private String facelanguage;
<br>

<br>
	/** identifier field */
<br>
	private String lastmodif;
<br>

<br>
	/** identifier field */
<br>
	private Date lastmdate;
<br>

<br>
	/** identifier field */
<br>
	private String creadtor;
<br>

<br>
	/** identifier field */
<br>
	private Date creatdate;
<br>

<br>
	public String getUsername() {
<br>
		return this.username;
<br>
	}
<br>

<br>
	public void setUsername(String username) {
<br>
		this.username = username;
<br>
	}
<br>

<br>

<br>

<br>
	public String getPasswords() {
<br>
		return this.passwords;
<br>
	}
<br>

<br>
	public void setPasswords(String passwords) {
<br>
		this.passwords = passwords;
<br>
	}
<br>

<br>
	public String getDeptno() {
<br>
		return this.deptno;
<br>
	}
<br>

<br>
	public void setDeptno(String deptno) {
<br>
		this.deptno = deptno;
<br>
	}
<br>

<br>
	public String getHeadship() {
<br>
		return this.headship;
<br>
	}
<br>

<br>
	public void setHeadship(String headship) {
<br>
		this.headship = headship;
<br>
	}
<br>

<br>
	public String getSex() {
<br>
		return this.sex;
<br>
	}
<br>

<br>
	public void setSex(String sex) {
<br>
		this.sex = sex;
<br>
	}
<br>

<br>
	public String getTel() {
<br>
		return this.tel;
<br>
	}
<br>

<br>
	public void setTel(String tel) {
<br>
		this.tel = tel;
<br>
	}
<br>

<br>
	public String getEmail() {
<br>
		return this.email;
<br>
	}
<br>

<br>
	public void setEmail(String email) {
<br>
		this.email = email;
<br>
	}
<br>

<br>
	public String getUrl() {
<br>
		return this.url;
<br>
	}
<br>

<br>
	public void setUrl(String url) {
<br>
		this.url = url;
<br>
	}
<br>

<br>
	public String getPcall() {
<br>
		return this.pcall;
<br>
	}
<br>

<br>
	public void setPcall(String pcall) {
<br>
		this.pcall = pcall;
<br>
	}
<br>

<br>

<br>
	public String getUserphoto() {
<br>
		return this.userphoto;
<br>
	}
<br>

<br>
	public void setUserphoto(String userphoto) {
<br>
		this.userphoto = userphoto;
<br>
	}
<br>

<br>
	public Integer getFacerefutime() {
<br>
		return this.facerefutime;
<br>
	}
<br>

<br>
	public void setFacerefutime(Integer facerefutime) {
<br>
		this.facerefutime = facerefutime;
<br>
	}
<br>

<br>
	public String getFacelanguage() {
<br>
		return this.facelanguage;
<br>
	}
<br>

<br>
	public void setFacelanguage(String facelanguage) {
<br>
		this.facelanguage = facelanguage;
<br>
	}
<br>

<br>
	public String getLastmodif() {
<br>
		return this.lastmodif;
<br>
	}
<br>

<br>
	public void setLastmodif(String lastmodif) {
<br>
		this.lastmodif = lastmodif;
<br>
	}
<br>

<br>
	public Date getLastmdate() {
<br>
		return this.lastmdate;
<br>
	}
<br>

<br>
	public void setLastmdate(Date lastmdate) {
<br>
		this.lastmdate = lastmdate;
<br>
	}
<br>

<br>
	public String getCreadtor() {
<br>
		return this.creadtor;
<br>
	}
<br>

<br>
	public void setCreadtor(String creadtor) {
<br>
		this.creadtor = creadtor;
<br>
	}
<br>

<br>
	public Date getCreatdate() {
<br>
		return this.creatdate;
<br>
	}
<br>

<br>
	public void setCreatdate(Date creatdate) {
<br>
		this.creatdate = creatdate;
<br>
	}
<br>

<br>
	/**
<br>
	 * @return
<br>
	 */
<br>
	public String getUserdesc() {
<br>
		return userdesc;
<br>
	}
<br>

<br>
	/**
<br>
	 * @param string
<br>
	 */
<br>
	public void setUserdesc(String string) {
<br>
		userdesc = string;
<br>
	}
<br>

<br>

<br>
}
<br>
------------------------------------------------------------------
<br>
TSysuser.java
<br>
------------------------------------------------------------------
<br>
package com.yaya.hb;
<br>

<br>
import java.io.InputStream;
<br>
import java.io.Serializable;
<br>
import java.util.Date;
<br>
import org.apache.commons.lang.builder.EqualsBuilder;
<br>
import org.apache.commons.lang.builder.HashCodeBuilder;
<br>
import org.apache.commons.lang.builder.ToStringBuilder;
<br>

<br>
/** @author Hibernate CodeGenerator */
<br>
public class TSysuser implements Serializable {
<br>

<br>
    /** identifier field */
<br>
    private String username;
<br>

<br>
    /** identifier field */
<br>
    private String userdesc;
<br>

<br>
    /** identifier field */
<br>
    private String passwords;
<br>

<br>
    /** identifier field */
<br>
    private String deptno;
<br>

<br>
    /** identifier field */
<br>
    private String headship;
<br>

<br>
    /** identifier field */
<br>
    private String sex;
<br>

<br>
    /** identifier field */
<br>
    private String tel;
<br>

<br>
    /** identifier field */
<br>
    private String email;
<br>

<br>
    /** identifier field */
<br>
    private String url;
<br>

<br>
    /** identifier field */
<br>
    private String pcall;
<br>

<br>
    /** identifier field */
<br>

<br>
    /** identifier field */
<br>
    private String userphoto;
<br>

<br>
    /** identifier field */
<br>
    private Integer facerefutime;
<br>

<br>
    /** identifier field */
<br>
    private String facelanguage;
<br>

<br>
    /** identifier field */
<br>
    private String lastmodif;
<br>

<br>
    /** identifier field */
<br>
    private Date lastmdate;
<br>

<br>
    /** identifier field */
<br>
    private String creadtor;
<br>

<br>
    /** identifier field */
<br>
    private Date creatdate;
<br>

<br>
    /** full constructor */
<br> public TSysuser(String username, String userdesc, String
passwords, String deptno, String headship, String sex, String tel,
String email, String url, String pcall, InputStream userimage, String
userphoto, Integer facerefutime, String facelanguage, String lastmodif,
Date lastmdate, String creadtor, Date creatdate) {
<br>
        this.username = username;
<br>
        this.userdesc = userdesc;
<br>
        this.passwords = passwords;
<br>
        this.deptno = deptno;
<br>
        this.headship = headship;
<br>
        this.sex = sex;
<br>
        this.tel = tel;
<br>
        this.email = email;
<br>
        this.url = url;
<br>
        this.pcall = pcall;
<br>
        this.userphoto = userphoto;
<br>
        this.facerefutime = facerefutime;
<br>
        this.facelanguage = facelanguage;
<br>
        this.lastmodif = lastmodif;
<br>
        this.lastmdate = lastmdate;
<br>
        this.creadtor = creadtor;
<br>
        this.creatdate = creatdate;
<br>
    }
<br>

<br>
    /** default constructor */
<br>
    public TSysuser() {
<br>
    }
<br>

<br>
    public String getUsername() {
<br>
        return this.username;
<br>
    }
<br>

<br>
    public void setUsername(String username) {
<br>
        this.username = username;
<br>
    }
<br>

<br>
    public String getUserdesc() {
<br>
        return this.userdesc;
<br>
    }
<br>

<br>
    public void setUserdesc(String userdesc) {
<br>
        this.userdesc = userdesc;
<br>
    }
<br>

<br>
    public String getPasswords() {
<br>
        return this.passwords;
<br>
    }
<br>

<br>
    public void setPasswords(String passwords) {
<br>
        this.passwords = passwords;
<br>
    }
<br>

<br>
    public String getDeptno() {
<br>
        return this.deptno;
<br>
    }
<br>

<br>
    public void setDeptno(String deptno) {
<br>
        this.deptno = deptno;
<br>
    }
<br>

<br>
    public String getHeadship() {
<br>
        return this.headship;
<br>
    }
<br>

<br>
    public void setHeadship(String headship) {
<br>
        this.headship = headship;
<br>
    }
<br>

<br>
    public String getSex() {
<br>
        return this.sex;
<br>
    }
<br>

<br>
    public void setSex(String sex) {
<br>
        this.sex = sex;
<br>
    }
<br>

<br>
    public String getTel() {
<br>
        return this.tel;
<br>
    }
<br>

<br>
    public void setTel(String tel) {
<br>
        this.tel = tel;
<br>
    }
<br>

<br>
    public String getEmail() {
<br>
        return this.email;
<br>
    }
<br>

<br>
    public void setEmail(String email) {
<br>
        this.email = email;
<br>
    }
<br>

<br>
    public String getUrl() {
<br>
        return this.url;
<br>
    }
<br>

<br>
    public void setUrl(String url) {
<br>
        this.url = url;
<br>
    }
<br>

<br>
    public String getPcall() {
<br>
        return this.pcall;
<br>
    }
<br>

<br>
    public void setPcall(String pcall) {
<br>
        this.pcall = pcall;
<br>
    }
<br>

<br>

<br>
    public String getUserphoto() {
<br>
        return this.userphoto;
<br>
    }
<br>

<br>
    public void setUserphoto(String userphoto) {
<br>
        this.userphoto = userphoto;
<br>
    }
<br>

<br>
    public Integer getFacerefutime() {
<br>
        return this.facerefutime;
<br>
    }
<br>

<br>
    public void setFacerefutime(Integer facerefutime) {
<br>
        this.facerefutime = facerefutime;
<br>
    }
<br>

<br>
    public String getFacelanguage() {
<br>
        return this.facelanguage;
<br>
    }
<br>

<br>
    public void setFacelanguage(String facelanguage) {
<br>
        this.facelanguage = facelanguage;
<br>
    }
<br>

<br>
    public String getLastmodif() {
<br>
        return this.lastmodif;
<br>
    }
<br>

<br>
    public void setLastmodif(String lastmodif) {
<br>
        this.lastmodif = lastmodif;
<br>
    }
<br>

<br>
    public Date getLastmdate() {
<br>
        return this.lastmdate;
<br>
    }
<br>

<br>
    public void setLastmdate(Date lastmdate) {
<br>
        this.lastmdate = lastmdate;
<br>
    }
<br>

<br>
    public String getCreadtor() {
<br>
        return this.creadtor;
<br>
    }
<br>

<br>
    public void setCreadtor(String creadtor) {
<br>
        this.creadtor = creadtor;
<br>
    }
<br>

<br>
    public Date getCreatdate() {
<br>
        return this.creatdate;
<br>
    }
<br>

<br>
    public void setCreatdate(Date creatdate) {
<br>
        this.creatdate = creatdate;
<br>
    }
<br>

<br>
    public String toString() {
<br>
        return new ToStringBuilder(this)
<br>
            .append("username", getUsername())
<br>
            .append("userdesc", getUserdesc())
<br>
            .append("passwords", getPasswords())
<br>
            .append("deptno", getDeptno())
<br>
            .append("headship", getHeadship())
<br>
            .append("sex", getSex())
<br>
            .append("tel", getTel())
<br>
            .append("email", getEmail())
<br>
            .append("url", getUrl())
<br>
            .append("pcall", getPcall())
<br>
            .append("userphoto", getUserphoto())
<br>
            .append("facerefutime", getFacerefutime())
<br>
            .append("facelanguage", getFacelanguage())
<br>
            .append("lastmodif", getLastmodif())
<br>
            .append("lastmdate", getLastmdate())
<br>
            .append("creadtor", getCreadtor())
<br>
            .append("creatdate", getCreatdate())
<br>
            .toString();
<br>
    }
<br>

<br>
    public boolean equals(Object other) {
<br>
        if ( !(other instanceof TSysuser) ) return false;
<br>
        TSysuser castOther = (TSysuser) other;
<br>
        return new EqualsBuilder()
<br>
            .append(this.getUsername(), castOther.getUsername())
<br>
            .append(this.getUserdesc(), castOther.getUserdesc())
<br>
            .append(this.getPasswords(), castOther.getPasswords())
<br>
            .append(this.getDeptno(), castOther.getDeptno())
<br>
            .append(this.getHeadship(), castOther.getHeadship())
<br>
            .append(this.getSex(), castOther.getSex())
<br>
            .append(this.getTel(), castOther.getTel())
<br>
            .append(this.getEmail(), castOther.getEmail())
<br>
            .append(this.getUrl(), castOther.getUrl())
<br>
            .append(this.getPcall(), castOther.getPcall())
<br>
            .append(this.getUserphoto(), castOther.getUserphoto())
<br>
            .append(this.getFacerefutime(), castOther.getFacerefutime())
<br>
            .append(this.getFacelanguage(), castOther.getFacelanguage())
<br>
            .append(this.getLastmodif(), castOther.getLastmodif())
<br>
            .append(this.getLastmdate(), castOther.getLastmdate())
<br>
            .append(this.getCreadtor(), castOther.getCreadtor())
<br>
            .append(this.getCreatdate(), castOther.getCreatdate())
<br>
            .isEquals();
<br>
    }
<br>

<br>
    public int hashCode() {
<br>
        return new HashCodeBuilder()
<br>
            .append(getUsername())
<br>
            .append(getUserdesc())
<br>
            .append(getPasswords())
<br>
            .append(getDeptno())
<br>
            .append(getHeadship())
<br>
            .append(getSex())
<br>
            .append(getTel())
<br>
            .append(getEmail())
<br>
            .append(getUrl())
<br>
            .append(getPcall())
<br>
            .append(getUserphoto())
<br>
            .append(getFacerefutime())
<br>
            .append(getFacelanguage())
<br>
            .append(getLastmodif())
<br>
            .append(getLastmdate())
<br>
            .append(getCreadtor())
<br>
            .append(getCreatdate())
<br>
            .toHashCode();
<br>
    }
<br>

<br>
}
<br>
---------------------------------------------------------------------
<br>
IUserManager.java
<br>
---------------------------------------------------------------------
<br>
package com.yaya.service;
<br>

<br>
import java.util.List;
<br>

<br>
import com.yaya.hb.TSysuser;
<br>
import com.yaya.service.dao.IUserDao;
<br>

<br>

<br>
public interface IUserManager {
<br>
	public void setUserDAO(IUserDao userDao);
<br>
	public TSysuser getUser(String username);
<br>
	public List getUsers();
<br>
	public void saveUser(TSysuser user);
<br>
	public void removeUser(String username);
<br>
}
<br>
--------------------------------------------------------------------
<br>
IDAO.java
<br>
--------------------------------------------------------------------
<br>
/*
<br>
 * 创建日期 2005-4-7
<br>
 *
<br>
 * 更改所生成文件模板为
<br>
 * 窗口 &gt; 首选项 &gt; Java &gt; 代码生成 &gt; 代码和注释
<br>
 */
<br>
package com.yaya.service.dao;
<br>
/**
<br>
 * @author Administrator
<br>
 *
<br>
 * 更改所生成类型注释的模板为
<br>
 * 窗口 &gt; 首选项 &gt; Java &gt; 代码生成 &gt; 代码和注释
<br>
 */
<br>
public interface IDAO {
<br>

<br>
}
<br>
--------------------------------------------------------------
<br>
IUserDao.java
<br>
--------------------------------------------------------------
<br>
/*
<br>
 * 创建日期 2005-4-11
<br>
 *
<br>
 * 更改所生成文件模板为
<br>
 * 窗口 &gt; 首选项 &gt; Java &gt; 代码生成 &gt; 代码和注释
<br>
 */
<br>
package com.yaya.service.dao;
<br>

<br>
import java.util.List;
<br>

<br>
import com.yaya.hb.TSysuser;
<br>

<br>
/**
<br>
 * @author Administrator
<br>
 *
<br>
 * 更改所生成类型注释的模板为
<br>
 * 窗口 &gt; 首选项 &gt; Java &gt; 代码生成 &gt; 代码和注释
<br>
 */
<br>
public interface IUserDao extends IDAO {
<br>

<br>
	public List getUsers();
<br>
	public TSysuser getUser(String username);
<br>
	public void saveUser(TSysuser user);
<br>
	public void removeUser(String username);
<br>
}
<br>
----------------------------------------------------------
<br>
UserManagerImpl.java
<br>
----------------------------------------------------------
<br>
package com.yaya.service.spring;
<br>

<br>
import com.yaya.hb.TSysuser;
<br>
import com.yaya.service.IUserManager;
<br>
import com.yaya.service.dao.IUserDao;
<br>

<br>
import java.util.List;
<br>
import org.apache.commons.logging.Log;
<br>
import org.apache.commons.logging.LogFactory;
<br>

<br>
public class UserManagerImpl implements IUserManager {
<br>
	private static Log log = LogFactory.getLog(UserManagerImpl.class);
<br>

<br>
	public IUserDao dao;
<br>
	
<br>
	public void setUserDao(IUserDao userDao) {
<br>
		this.dao = userDao;
<br>
		this.setUserDAO(userDao);
<br>
	}
<br>

<br>
	public TSysuser getUser(String username) {
<br>
		return dao.getUser(username);
<br>
	}
<br>

<br>
	public List getUsers() {
<br>
		return dao.getUsers();
<br>
	}
<br>

<br>
	public void saveUser(TSysuser user) {
<br>
		dao.saveUser(user);
<br>
	}
<br>

<br>
	public void removeUser(String username) {
<br>
		//	   TODO 自动生成方法存根
<br>
		dao.removeUser(username);
<br>
	}
<br>

<br>

<br>
	public void setUserDAO(IUserDao dao) {
<br>
		// TODO 自动生成方法存根
<br>
		this.dao = dao;
<br>
	}
<br>
}
<br>
-----------------------------------------------------------------
<br>
TSysuser.hbm.xml
<br>
-----------------------------------------------------------------
<br>
&lt;?xml version="1.0"?&gt;
<br>
&lt;!DOCTYPE hibernate-mapping PUBLIC
<br>
    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
<br>
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" &gt;
<br>

<br>
&lt;hibernate-mapping&gt;
<br>
	&lt;!-- 
<br>
		Created by the Middlegen Hibernate plugin
<br>
		
<br>
		http://boss.bekk.no/boss/middlegen/
<br>
		http://hibernate.sourceforge.net/
<br>
	--&gt;
<br>

<br>
	&lt;class name="com.yaya.hb.TSysuser" table="t_sysuser"&gt;
<br>

<br>
		&lt;id name="username" type="java.lang.String" column="USERNAME"&gt;
<br>
			&lt;generator class="identity" /&gt;
<br>
		&lt;/id&gt;
<br>

<br>
		&lt;property name="userdesc" type="java.lang.String" column="USERDESC" length="30" /&gt;
<br>
		&lt;property name="passwords" type="java.lang.String" column="PASSWORDS" length="30" /&gt;
<br>
		&lt;property name="deptno" type="java.lang.String" column="DEPTNO" length="30" /&gt;
<br>
		&lt;property name="headship" type="java.lang.String" column="HEADSHIP" length="30" /&gt;
<br>
		&lt;property name="sex" type="java.lang.String" column="SEX" length="4" /&gt;
<br>
		&lt;property name="tel" type="java.lang.String" column="TEL" length="18" /&gt;
<br>
		&lt;property name="email" type="java.lang.String" column="EMAIL" length="30" /&gt;
<br>
		&lt;property name="url" type="java.lang.String" column="URL" length="30" /&gt;
<br>
		&lt;property name="pcall" type="java.lang.String" column="PCALL" length="20" /&gt;
<br>
		&lt;property name="userphoto" type="java.lang.String" column="USERPHOTO" length="255" /&gt;
<br>
		&lt;property name="facerefutime" type="java.lang.Integer" column="FACEREFUTIME" length="6" /&gt;
<br>
		&lt;property name="facelanguage" type="java.lang.String" column="FACELANGUAGE" length="1" /&gt;
<br>
		&lt;property name="lastmodif" type="java.lang.String" column="LASTMODIF" length="30" /&gt;
<br>
		&lt;property name="lastmdate" type="java.sql.Timestamp" column="LASTMDATE" length="19" /&gt;
<br>
		&lt;property name="creadtor" type="java.lang.String" column="CREADTOR" length="30" /&gt;
<br>
		&lt;property name="creatdate" type="java.sql.Timestamp" column="CREATDATE" length="19" /&gt;
<br>

<br>
		&lt;!-- associations --&gt;
<br>

<br>
	&lt;/class&gt;
<br>
&lt;/hibernate-mapping&gt;
<br>
-------------------------------------------------------------------
<br>
创建数据库脚本 用于MYSQL
<br>
-------------------------------------------------------------------
<br>
CREATE TABLE `t_sysuser` (
<br>
  `USERNAME` varchar(30) NOT NULL default '',
<br>
  `USERDESC` varchar(30) default NULL,
<br>
  `PASSWORDS` varchar(30) default NULL,
<br>
  `DEPTNO` varchar(30) default NULL,
<br>
  `HEADSHIP` varchar(30) default NULL,
<br>
  `SEX` varchar(4) default NULL,
<br>
  `TEL` varchar(1<img src="http://forum.javaeye.com/images/smiles/icon_cool.gif" alt="Cool" border="0"> default NULL,
<br>
  `EMAIL` varchar(30) default NULL,
<br>
  `URL` varchar(30) default NULL,
<br>
  `PCALL` varchar(20) default NULL,
<br>
  `USERPHOTO` varchar(255) default NULL,
<br>
  `FACEREFUTIME` decimal(6,0) default NULL,
<br>
  `FACELANGUAGE` char(1) default NULL,
<br>
  `LASTMODIF` varchar(30) default NULL,
<br>
  `LASTMDATE` datetime default NULL,
<br>
  `CREADTOR` varchar(30) default NULL,
<br>
  `CREATDATE` datetime default NULL,
<br>
  PRIMARY KEY  (`USERNAME`)
<br>
) TYPE=MyISAM;
<br>
-----------------------------------------------------------
<br>
提示：COPY几个资源文件
<br>
validation.xml　和　validator-rules.xml
<br>
前台使用的几个JSP文件如下：
<br>
-----------------------------------------------------------
<br>
index.jsp
<br>
-----------------------------------------------------------
<br>
&lt;?xml version="1.0"?&gt;
<br>
&lt;!DOCTYPE hibernate-mapping PUBLIC
<br>
    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
<br>
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" &gt;
<br>

<br>
&lt;hibernate-mapping&gt;
<br>
	&lt;!-- 
<br>
		Created by the Middlegen Hibernate plugin
<br>
		
<br>
		http://boss.bekk.no/boss/middlegen/
<br>
		http://hibernate.sourceforge.net/
<br>
	--&gt;
<br>

<br>
	&lt;class name="com.yaya.hb.TSysuser" table="t_sysuser"&gt;
<br>

<br>
		&lt;id name="username" type="java.lang.String" column="USERNAME"&gt;
<br>
			&lt;generator class="identity" /&gt;
<br>
		&lt;/id&gt;
<br>

<br>
		&lt;property name="userdesc" type="java.lang.String" column="USERDESC" length="30" /&gt;
<br>
		&lt;property name="passwords" type="java.lang.String" column="PASSWORDS" length="30" /&gt;
<br>
		&lt;property name="deptno" type="java.lang.String" column="DEPTNO" length="30" /&gt;
<br>
		&lt;property name="headship" type="java.lang.String" column="HEADSHIP" length="30" /&gt;
<br>
		&lt;property name="sex" type="java.lang.String" column="SEX" length="4" /&gt;
<br>
		&lt;property name="tel" type="java.lang.String" column="TEL" length="18" /&gt;
<br>
		&lt;property name="email" type="java.lang.String" column="EMAIL" length="30" /&gt;
<br>
		&lt;property name="url" type="java.lang.String" column="URL" length="30" /&gt;
<br>
		&lt;property name="pcall" type="java.lang.String" column="PCALL" length="20" /&gt;
<br>
		&lt;property name="userphoto" type="java.lang.String" column="USERPHOTO" length="255" /&gt;
<br>
		&lt;property name="facerefutime" type="java.lang.Integer" column="FACEREFUTIME" length="6" /&gt;
<br>
		&lt;property name="facelanguage" type="java.lang.String" column="FACELANGUAGE" length="1" /&gt;
<br>
		&lt;property name="lastmodif" type="java.lang.String" column="LASTMODIF" length="30" /&gt;
<br>
		&lt;property name="lastmdate" type="java.sql.Timestamp" column="LASTMDATE" length="19" /&gt;
<br>
		&lt;property name="creadtor" type="java.lang.String" column="CREADTOR" length="30" /&gt;
<br>
		&lt;property name="creatdate" type="java.sql.Timestamp" column="CREATDATE" length="19" /&gt;
<br>

<br>
		&lt;!-- associations --&gt;
<br>

<br>
	&lt;/class&gt;
<br>
&lt;/hibernate-mapping&gt;
<br>
------------------------------------------------------------------
<br>
userlist.jsp
<br>
------------------------------------------------------------------
<br>
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;
<br>
&lt;%@ page contentType="text/html; charset=UTF-8" %&gt;
<br>
&lt;%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %&gt;
<br>
&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt;
<br>
&lt;%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&gt;
<br>

<br>
&lt;html:html locale="true"&gt;
<br>
&lt;head&gt;
<br>
&lt;title&gt;&lt;bean:message key="pdmweb.title"/&gt;&lt;/title&gt;
<br>
&lt;/head&gt;
<br>
&lt;body&gt;
<br>
&lt;table class="list"&gt;
<br>
	&lt;thead&gt;
<br>
		&lt;tr bgcolor="#8080ff"&gt;
<br>
		&lt;td bgcolor="#8080ff"&gt;&lt;bean:message key="listuser.username" /&gt;&lt;/td&gt;
<br>
		&lt;td bgcolor="#8080ff"&gt;&lt;bean:message key="listuser.userdesc" /&gt;&lt;/td&gt;
<br>
		&lt;td bgcolor="#8080ff"&gt;&lt;bean:message key="listuser.sex" /&gt;&lt;/td&gt;
<br>
		&lt;/tr&gt;
<br>
	&lt;/thead&gt;
<br>
	&lt;tbody&gt;
<br>
		&lt;logic:iterate id="user" name="users"&gt;
<br>
			&lt;tr&gt;
<br> &lt;td bgcolor="#ff8040"&gt;&lt;A
href="User.do?method=edit&amp;username=&lt;bean:write name="user"
property="username"/&gt;" &gt;&lt;bean:write name="user"
property="username" /&gt;
<br>
				&lt;/a&gt;
<br>
				&lt;/td&gt;
<br>
				&lt;td bgcolor="#ff8040"&gt;&lt;bean:write name="user" property="userdesc" /&gt;&lt;/td&gt;
<br>
				&lt;td bgcolor="#ff8040"&gt;&lt;logic:equal name="user" property="sex" value="0"&gt;
<br>
				&lt;bean:message key="listuser.sex0" /&gt;
<br>
			&lt;/logic:equal&gt; &lt;logic:equal name="user" property="sex" value="1"&gt;
<br>
				&lt;bean:message key="listuser.sex1" /&gt;
<br>
			&lt;/logic:equal&gt;&lt;/td&gt;
<br>
			&lt;/tr&gt;
<br>
		&lt;/logic:iterate&gt;	
<br>
	&lt;/tbody&gt;
<br>
&lt;/table&gt;
<br>
&lt;/body&gt;
<br>
&lt;/html:html&gt;
<br>
-------------------------------------------------------------------
<br>
userform.jsp
<br>
------------------------------------------------------------------
<br>
&lt;%@ page contentType="text/html; charset=UTF-8" %&gt;
<br>
&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt;
<br>
&lt;%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %&gt;
<br>
&lt;%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&gt;
<br>
&lt;%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %&gt;
<br>
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;
<br>
&lt;html:html locale="true"&gt;
<br>
&lt;head&gt;
<br>
&lt;html:base /&gt;
<br>
&lt;title&gt;userform.jsp&lt;/title&gt;
<br>
&lt;/head&gt;
<br>
&lt;body&gt;
<br>

<br>
&lt;html:form action="User.do?method=save" method="post" focus="user.userdesc" &gt;
<br>
	&lt;html:text property="user.username" /&gt;
<br>
&lt;br&gt;
<br>
&lt;html:text property="user.userdesc" /&gt;&lt;br&gt;
<br>
&lt;html:text property="user.deptno" /&gt;&lt;br&gt;
<br>

<br>
	
<br>
	&lt;html:submit property="tijiao" /&gt;
<br>
&lt;/html:form&gt;
<br>
&lt;/body&gt;
<br>
&lt;/html:html&gt;
<br>
--------------------------------------------------------------
<br>
如果有什么疑问可以致电邮至 <a href="mailto:heweiya@yahoo.com.cn">heweiya@yahoo.com.cn</a>，互相交流，互相学习。</span><img src ="http://www.blogjava.net/heweiya/aggbug/24595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2005-12-19 11:27 <a href="http://www.blogjava.net/heweiya/archive/2005/12/19/24595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置Springframework与hibernate连接多数据库的事务</title><link>http://www.blogjava.net/heweiya/archive/2005/12/19/24594.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Mon, 19 Dec 2005 03:26:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2005/12/19/24594.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/24594.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2005/12/19/24594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/24594.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/24594.html</trackback:ping><description><![CDATA[<span class="postdetails">本文只注重配置，分别有如下几个文件
<br>
＜出处：<a href="http://forum.javaeye.com/bloglist.php?id=2401&amp;userid=15047" target="_blank" class="postlink">和巍雅的BLOG</a>＞
<br>
web.xml 部署配置文件
<br>
struts-config.xml  struts的配置文件
<br>
action-servlet.xml Spring依赖注入struts
<br>
Nhibernate_Context.xml  Spring依赖注入struts
<br>
hibernate.cfg.xml    mssql的Hibernate配置
<br>
hibernate_mysql.cfg.xml　mysql的Hibernate配置　
<br>
开始：
<br>
web.xml
<br>
------------------------------------------------------------------------
<br>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<br>
&lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"&gt;
<br>
&lt;web-app id="WebApp"&gt;
<br>
	&lt;display-name&gt;EAIJ2EEPRJWeb&lt;/display-name&gt;
<br>
	&lt;context-param&gt;
<br>
		&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
<br>
		&lt;param-value&gt;/WEB-INF/Nhibernate_Context.xml&lt;/param-value&gt;
<br>
	&lt;/context-param&gt;
<br>
	&lt;filter&gt;
<br>
		&lt;filter-name&gt;SetCharacterEncodingFilter&lt;/filter-name&gt;
<br>
		&lt;display-name&gt;SetCharacterEncodingFilter&lt;/display-name&gt;
<br>
		&lt;filter-class&gt;com.throuhout.j2eemodel.util.SetCharacterEncodingFilter&lt;/filter-class&gt;
<br>
		&lt;init-param&gt;
<br>
			&lt;param-name&gt;encoding&lt;/param-name&gt;
<br>
			&lt;param-value&gt;UTF-8&lt;/param-value&gt;
<br>
		&lt;/init-param&gt;
<br>
		&lt;init-param&gt;
<br>
			&lt;param-name&gt;ignore&lt;/param-name&gt;
<br>
			&lt;param-value&gt;true&lt;/param-value&gt;
<br>
		&lt;/init-param&gt;
<br>
	&lt;/filter&gt;
<br>
	&lt;filter-mapping&gt;
<br>
		&lt;filter-name&gt;SetCharacterEncodingFilter&lt;/filter-name&gt;
<br>
		&lt;url-pattern&gt;/*&lt;/url-pattern&gt;
<br>
	&lt;/filter-mapping&gt;
<br>
	&lt;servlet&gt;
<br>
		&lt;servlet-name&gt;action&lt;/servlet-name&gt;
<br>
		&lt;servlet-class&gt;org.apache.struts.action.ActionServlet&lt;/servlet-class&gt;
<br>
		&lt;init-param&gt;
<br>
			&lt;param-name&gt;config&lt;/param-name&gt;
<br>
			&lt;param-value&gt;WEB-INF/struts-config.xml&lt;/param-value&gt;
<br>
		&lt;/init-param&gt;
<br>
		&lt;init-param&gt;
<br>
			&lt;param-name&gt;debug&lt;/param-name&gt;
<br>
			&lt;param-value&gt;2&lt;/param-value&gt;
<br>
		&lt;/init-param&gt;
<br>
		&lt;init-param&gt;
<br>
			&lt;param-name&gt;detail&lt;/param-name&gt;
<br>
			&lt;param-value&gt;2&lt;/param-value&gt;
<br>
		&lt;/init-param&gt;
<br>
		&lt;init-param&gt;
<br>
			&lt;param-name&gt;validate&lt;/param-name&gt;
<br>
			&lt;param-value&gt;true&lt;/param-value&gt;
<br>
		&lt;/init-param&gt;
<br>
		&lt;load-on-startup&gt;2&lt;/load-on-startup&gt;
<br>
	&lt;/servlet&gt;
<br>
	&lt;servlet&gt;
<br>
		&lt;servlet-name&gt;SpringContextServlet&lt;/servlet-name&gt;
<br>
		&lt;display-name&gt;SpringContextServlet&lt;/display-name&gt;
<br>
		&lt;servlet-class&gt;org.springframework.web.context.ContextLoaderServlet&lt;/servlet-class&gt;
<br>
		&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
<br>
	&lt;/servlet&gt;
<br>
	&lt;servlet-mapping&gt;
<br>
		&lt;servlet-name&gt;action&lt;/servlet-name&gt;
<br>
		&lt;url-pattern&gt;*.do&lt;/url-pattern&gt;
<br>
	&lt;/servlet-mapping&gt;
<br>
	&lt;mime-mapping&gt;
<br>
		&lt;extension&gt;wsdl&lt;/extension&gt;
<br>
		&lt;mime-type&gt;text/xml&lt;/mime-type&gt;
<br>
	&lt;/mime-mapping&gt;
<br>
	&lt;mime-mapping&gt;
<br>
		&lt;extension&gt;xsd&lt;/extension&gt;
<br>
		&lt;mime-type&gt;text/xml&lt;/mime-type&gt;
<br>
	&lt;/mime-mapping&gt;
<br>
	&lt;welcome-file-list&gt;
<br>
		&lt;welcome-file&gt;index.html&lt;/welcome-file&gt;
<br>
		&lt;welcome-file&gt;index.htm&lt;/welcome-file&gt;
<br>
		&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
<br>
		&lt;welcome-file&gt;default.html&lt;/welcome-file&gt;
<br>
		&lt;welcome-file&gt;default.htm&lt;/welcome-file&gt;
<br>
		&lt;welcome-file&gt;default.jsp&lt;/welcome-file&gt;
<br>
	&lt;/welcome-file-list&gt;
<br>
	&lt;taglib&gt;
<br>
		&lt;taglib-uri&gt;/WEB-INF/struts-bean.tld&lt;/taglib-uri&gt;
<br>
		&lt;taglib-location&gt;/WEB-INF/struts-bean.tld&lt;/taglib-location&gt;
<br>
	&lt;/taglib&gt;
<br>
	&lt;taglib&gt;
<br>
		&lt;taglib-uri&gt;/WEB-INF/struts-html.tld&lt;/taglib-uri&gt;
<br>
		&lt;taglib-location&gt;/WEB-INF/struts-html.tld&lt;/taglib-location&gt;
<br>
	&lt;/taglib&gt;
<br>
	&lt;taglib&gt;
<br>
		&lt;taglib-uri&gt;/WEB-INF/struts-logic.tld&lt;/taglib-uri&gt;
<br>
		&lt;taglib-location&gt;/WEB-INF/struts-logic.tld&lt;/taglib-location&gt;
<br>
	&lt;/taglib&gt;
<br>
	&lt;taglib&gt;
<br>
		&lt;taglib-uri&gt;/WEB-INF/struts-nested.tld&lt;/taglib-uri&gt;
<br>
		&lt;taglib-location&gt;/WEB-INF/struts-nested.tld&lt;/taglib-location&gt;
<br>
	&lt;/taglib&gt;
<br>
	&lt;taglib&gt;
<br>
		&lt;taglib-uri&gt;/WEB-INF/struts-template.tld&lt;/taglib-uri&gt;
<br>
		&lt;taglib-location&gt;/WEB-INF/struts-template.tld&lt;/taglib-location&gt;
<br>
	&lt;/taglib&gt;
<br>
	&lt;taglib&gt;
<br>
		&lt;taglib-uri&gt;/WEB-INF/struts-tiles.tld&lt;/taglib-uri&gt;
<br>
		&lt;taglib-location&gt;/WEB-INF/struts-tiles.tld&lt;/taglib-location&gt;
<br>
	&lt;/taglib&gt;
<br>

<br>
&lt;/web-app&gt;
<br>
---------------------------------------------------------------------
<br>
struts_config.xml
<br>
---------------------------------------------------------------------
<br>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<br>
&lt;!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
<br>
                               "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"&gt;
<br>

<br>
&lt;struts-config&gt;
<br>

<br>
	&lt;!-- 数据源 --&gt;
<br>
	&lt;data-sources&gt;&lt;/data-sources&gt;
<br>

<br>
	&lt;!-- 表单 Bean --&gt;
<br>
	&lt;form-beans&gt;
<br>
		&lt;form-bean name="UserActionForm" type="org.apache.struts.validator.DynaValidatorForm"&gt;
<br>
			&lt;form-property name="user" type="com.throuhout.j2eemodel.hibernate.TSysuser" /&gt;
<br>
		&lt;/form-bean&gt;
<br>
		&lt;form-bean name="UserMenuActionForm" type="org.apache.struts.validator.DynaValidatorForm"&gt;
<br>
			&lt;form-property name="menu" type="com.throuhout.j2eemodel.hibernate.TSysmufudef"&gt;
<br>
			&lt;/form-property&gt;
<br>
		&lt;/form-bean&gt;
<br>
	&lt;/form-beans&gt;
<br>

<br>
	&lt;!-- 全局异常 --&gt;
<br>
	&lt;global-exceptions&gt;&lt;/global-exceptions&gt;
<br>

<br>

<br>
	&lt;!-- 全局转发 --&gt;
<br>
	&lt;global-forwards&gt;
<br>
		&lt;forward name="success" path="/main/success.jsp"&gt;&lt;/forward&gt;
<br>
		&lt;forward name="failure" path="/main/fail.jsp"&gt;&lt;/forward&gt;
<br>
	&lt;/global-forwards&gt;
<br>

<br>
	&lt;!-- 操作映射 --&gt;
<br>
	&lt;action-mappings&gt;
<br> &lt;action path="/User"
type="org.springframework.web.struts.DelegatingActionProxy"
name="UserActionForm" scope="request" parameter="method"
validate="false"&gt;
<br>
			&lt;forward name="sucess" path="/main/project_index.htm" /&gt;
<br>
			&lt;forward name="false" path="/failure.html"&gt;&lt;/forward&gt;
<br>
			&lt;forward name="list" path="/main/userlist.jsp"&gt;
<br>
			&lt;/forward&gt;
<br>
			&lt;forward name="edit" path="/main/userform.jsp"&gt;
<br>
			&lt;/forward&gt;
<br>
		&lt;/action&gt;
<br> &lt;action path="/UserMenu"
type="org.springframework.web.struts.DelegatingActionProxy"
name="UserMenuActionForm" scope="request" parameter="method"
validate="false"&gt;
<br>
			&lt;forward name="menu" path="/main/menu.jsp"&gt;&lt;/forward&gt;
<br>
			&lt;forward name="usermenu" path="/main/usermenu.jsp"&gt;
<br>
			&lt;/forward&gt;
<br>
		&lt;/action&gt;
<br>
	&lt;/action-mappings&gt;
<br>

<br>
	&lt;!-- 消息资源 --&gt;
<br>
	&lt;message-resources parameter="eaij2eeprjweb.resources.ApplicationResources" /&gt;
<br>
	&lt;plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"&gt;
<br>
		&lt;set-property property="contextConfigLocation" value="/WEB-INF/action-servlet.xml" /&gt;
<br>
	&lt;/plug-in&gt;
<br>
	&lt;plug-in className="org.apache.struts.validator.ValidatorPlugIn"&gt;
<br>
		&lt;set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml" /&gt;
<br>
	&lt;/plug-in&gt;
<br>

<br>
&lt;/struts-config&gt;
<br>
-------------------------------------------------------------------
<br>
action-servlet.xml
<br>
--------------------------------------------------------------------
<br>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<br>
&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
<br>
   "http://www.springframework.org/dtd/spring-beans.dtd"&gt;
<br>

<br>
&lt;!-- Spring依赖注入到Struts当中 --&gt;
<br>
&lt;beans&gt;
<br>
	&lt;bean name="/User" class="com.throuhout.j2eemodel.struts.action.UserAction" singleton="false"&gt;
<br>
		&lt;property name="userManager"&gt;
<br>
			&lt;ref bean="userManager" /&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>
	&lt;bean name="/UserMenu" class="com.throuhout.j2eemodel.struts.action.UserMenuAction" singleton="false"&gt;
<br>
		&lt;property name="userManager"&gt;
<br>
			&lt;ref bean="userManager" /&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>
&lt;/beans&gt;
<br>
-------------------------------------------------------------------
<br>
Nhibernate_Context.xml
<br>
--------------------------------------------------------------------
<br>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
<br>
&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
<br>
   "http://www.springframework.org/dtd/spring-beans.dtd"&gt;
<br>
&lt;!-- Spring依赖注入到Struts当中 --&gt;
<br>
&lt;!-- Hibernate SessionFactory --&gt;
<br>
&lt;beans&gt;
<br>
	&lt;bean id="mssqlSessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean"&gt;
<br>

<br>
		&lt;property name="configLocation"&gt;
<br>
			&lt;value&gt;classpath:hibernate.cfg.xml&lt;/value&gt;
<br>
		&lt;/property&gt;
<br>

<br>
		&lt;property name="hibernateProperties"&gt;
<br>
			&lt;props&gt;
<br>
				&lt;prop key="hibernate.dialect"&gt;net.sf.hibernate.dialect.SybaseDialect&lt;/prop&gt;
<br>

<br>
				&lt;!--&lt;prop key="hibernate.cglib.use_reflection_optimizer"&gt;true&lt;/prop&gt;
<br>
					&lt;prop key="hibernate.cache.provider_class"&gt;net.sf.hibernate.cache.OSCacheProvider&lt;/prop&gt;--&gt;
<br>
				&lt;prop key="hibernate.jdbc.fetch_size"&gt;50&lt;/prop&gt;
<br>
				&lt;prop key="hibernate.jdbc.batch_size"&gt;25&lt;/prop&gt;
<br>
			&lt;/props&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>
	&lt;bean id="mysqlSessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean"&gt;
<br>
		&lt;property name="configLocation"&gt;
<br>
			&lt;value&gt;classpath:hibernate_mysql.cfg.xml&lt;/value&gt;
<br>
		&lt;/property&gt;
<br>

<br>
		&lt;property name="hibernateProperties"&gt;
<br>
			&lt;props&gt;
<br>
				&lt;!--&lt;prop key="hibernate.cglib.use_reflection_optimizer"&gt;true&lt;/prop&gt;
<br>
					&lt;prop key="hibernate.cache.provider_class"&gt;net.sf.hibernate.cache.OSCacheProvider&lt;/prop&gt;--&gt;
<br>
				&lt;prop key="hibernate.jdbc.fetch_size"&gt;50&lt;/prop&gt;
<br>
				&lt;prop key="hibernate.jdbc.batch_size"&gt;25&lt;/prop&gt;
<br>
			&lt;/props&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>
	&lt;!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) --&gt;
<br>

<br>
	&lt;bean id="mysqltransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager"&gt;
<br>
		&lt;property name="sessionFactory"&gt;
<br>
			&lt;ref local="mysqlSessionFactory" /&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>
	&lt;bean id="mssqltransactionManager" class="org.springframework.orm.hibernate.HibernateTransactionManager"&gt;
<br>
		&lt;property name="sessionFactory"&gt;
<br>
			&lt;ref local="mssqlSessionFactory" /&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>
	&lt;!-- 
<br>
		&lt;bean id="aDao" class="com.plat.dao.user.impl.aDaoImpl"&gt;
<br>
		&lt;property name="sessionFactory"&gt;
<br>
		&lt;ref local="oracleSessionFactory" /&gt;
<br>
		&lt;/property&gt;
<br>
		&lt;/bean&gt;
<br>
	--&gt;
<br>
	&lt;bean id="userDao" class="com.throuhout.j2eemodel.spring.service.dao.hibernate.UserHibernateDao"&gt;
<br>
		&lt;property name="sessionFactory"&gt;
<br>
			&lt;ref local="mysqlSessionFactory" /&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>

<br>
	&lt;!-- Service --&gt;
<br>
	&lt;bean id="userManagerTarget" class="com.throuhout.j2eemodel.spring.service.UserManagerImpl"&gt;
<br>
		&lt;property name="userDao"&gt;
<br>
			&lt;ref local="userDao" /&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>

<br>
	&lt;bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"&gt;
<br>
		&lt;property name="transactionManager"&gt;
<br>
			&lt;ref bean="mysqltransactionManager" /&gt;
<br>
		&lt;/property&gt;
<br>

<br>
		&lt;property name="target"&gt;
<br>
			&lt;ref local="userManagerTarget" /&gt;
<br>
		&lt;/property&gt;
<br>

<br>
		&lt;property name="proxyTargetClass"&gt;
<br>
			&lt;value&gt;true&lt;/value&gt;
<br>
		&lt;/property&gt;
<br>
		&lt;property name="transactionAttributes"&gt;
<br>
			&lt;props&gt;
<br>
				&lt;prop key="save*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;
<br>
				&lt;prop key="find*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;
<br>
				&lt;prop key="remove*"&gt;PROPAGATION_REQUIRED,readOnly&lt;/prop&gt;
<br>
				&lt;prop key="*"&gt;PROPAGATION_REQUIRED,readOnly&lt;/prop&gt;
<br>
			&lt;/props&gt;
<br>
		&lt;/property&gt;
<br>
	&lt;/bean&gt;
<br>
&lt;/beans&gt;
<br>
---------------------------------------------------------------------
<br>
hibernate.cfg.xml
<br>
---------------------------------------------------------------------
<br>
&lt;?xml version='1.0' encoding='utf-8'?&gt;
<br>
&lt;!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
<br>
"hibernate-configuration-2.0.dtd"&gt;
<br>

<br>
&lt;hibernate-configuration&gt;
<br>

<br>
	&lt;session-factory&gt;
<br>
		&lt;property name="show_sql"&gt;true&lt;/property&gt;
<br>
		&lt;property name="use_outer_join"&gt;false&lt;/property&gt;
<br>

<br>
		&lt;property name="hibernate.dialect"&gt;net.sf.hibernate.dialect.SybaseDialect&lt;/property&gt;
<br>
		
<br>
		&lt;property name="hibernate.connection.driver_class"&gt;net.sourceforge.jtds.jdbc.Driver&lt;/property&gt;
<br>
		
<br>
		&lt;property name="hibernate.connection.url"&gt;jdbc:jtds:sqlserver://192.168.100.111:1433/testdb&lt;/property&gt;
<br>
		&lt;property name="hibernate.connection.username"&gt;sa&lt;/property&gt;
<br>
		&lt;property name="hibernate.connection.password"&gt;yaya&lt;/property&gt;
<br>
		&lt;!--
<br>
		&lt;property name="hibernate.connection.url"&gt;jdbc:jtds:sqlserver://192.168.100.148:1433/throughoutdb&lt;/property&gt;
<br>
		&lt;property name="hibernate.connection.username"&gt;siaote&lt;/property&gt;
<br>
		&lt;property name="hibernate.connection.password"&gt;siaote&lt;/property&gt;
<br>
		--&gt;
<br>
		&lt;property name="hibernate.connection.pool.size"&gt;20&lt;/property&gt;
<br>
		&lt;property name="session_factory_name"&gt;mssqlSessionFactory&lt;/property&gt;
<br>

<br>
		&lt;!-- Mapping files --&gt;
<br>
		&lt;mapping resource="hbm_tb/T_COST_TYPE.hbm.xml" /&gt;
<br>
		
<br>
				
<br>
	&lt;/session-factory&gt;
<br>
&lt;/hibernate-configuration&gt;
<br>
-------------------------------------------------------------------
<br>
hibernate_mysql.cfg.xml
<br>
-------------------------------------------------------------------
<br>
&lt;?xml version='1.0' encoding='utf-8'?&gt;
<br>
&lt;!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
<br>
"hibernate-configuration-2.0.dtd"&gt;
<br>

<br>
&lt;hibernate-configuration&gt;
<br>

<br>
	&lt;session-factory&gt;
<br>
		&lt;property name="show_sql"&gt;true&lt;/property&gt;
<br>
		&lt;property name="use_outer_join"&gt;false&lt;/property&gt;
<br>

<br>
		&lt;property name="hibernate.dialect"&gt;net.sf.hibernate.dialect.MySQLDialect&lt;/property&gt;
<br>
		
<br>
		&lt;property name="hibernate.connection.driver_class"&gt;org.gjt.mm.mysql.Driver&lt;/property&gt;
<br>
		
<br>
		&lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost/pdm&lt;/property&gt;
<br>
		&lt;property name="hibernate.connection.username"&gt;root&lt;/property&gt;
<br>
		&lt;property name="hibernate.connection.password"&gt;&lt;/property&gt;
<br>

<br>
		&lt;property name="hibernate.connection.pool.size"&gt;20&lt;/property&gt;
<br>
		&lt;property name="session_factory_name"&gt;mysqlSessionFactory&lt;/property&gt;
<br>

<br>
		&lt;!-- Mapping files --&gt;
<br>
		&lt;mapping resource="hbm_tb/TSysuser.hbm.xml" /&gt;
<br>
		&lt;mapping resource="hbm_tb/TSysmufudef.hbm.xml" /&gt;
<br>
		
<br>
				
<br>
	&lt;/session-factory&gt;
<br>
&lt;/hibernate-configuration&gt;
<br>

<br>
----------------------------------------------------------------
<br>
本人的开发环境：
<br>
开发工具：WSAD 5.1
<br>
中间件服务器：tomcat 4.24
<br>
数据库：mysql\mssql 完全通过。
<br>
你可以和 <a href="mailto:heweiya@yahoo.com.cn">heweiya@yahoo.com.cn</a> 联系</span><img src ="http://www.blogjava.net/heweiya/aggbug/24594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2005-12-19 11:26 <a href="http://www.blogjava.net/heweiya/archive/2005/12/19/24594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DTREE如何认一个目录节点打开一个URL</title><link>http://www.blogjava.net/heweiya/archive/2005/12/19/24586.html</link><dc:creator>@家军</dc:creator><author>@家军</author><pubDate>Mon, 19 Dec 2005 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/heweiya/archive/2005/12/19/24586.html</guid><wfw:comment>http://www.blogjava.net/heweiya/comments/24586.html</wfw:comment><comments>http://www.blogjava.net/heweiya/archive/2005/12/19/24586.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heweiya/comments/commentRss/24586.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heweiya/services/trackbacks/24586.html</trackback:ping><description><![CDATA[<span class="postdetails">
方法及其简单，见dtree.js的标准函数function(pNode)，第107行：
<br>

<br>
</span>
<table align="center" border="0" cellpadding="3" cellspacing="1" width="90%">

<tbody><tr> 	  <td><span class="genmed"><b>java代码:&nbsp;</b></span></td>
	</tr>
	<tr>
	  <td class="code"><div style="font-family: 'Courier New',Courier,monospace;">
<br>
<span style="color: rgb(102, 102, 255);"></span><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;Creates&nbsp;the&nbsp;tree&nbsp;structure</span><span style="color: rgb(0, 128, 0);"><br></span><span style="color: rgb(0, 0, 0);">dTree.prototype.addNode&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;function(pNode)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;str&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">''</span><span style="color: rgb(0, 0, 0);">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;n</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.config.inOrder)&nbsp;n&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;pNode._ai;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);">&nbsp;(n;&nbsp;n</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.aNodes.length;&nbsp;n</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.aNodes[n].pid&nbsp;</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">&nbsp;pNode.id)&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;var&nbsp;cn&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.aNodes[n];<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;cn._p&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;pNode;<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;cn._ai&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;n;<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;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.setCS(cn);<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;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">cn.target&nbsp;</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.config.target)&nbsp;cn.target&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.config.target;<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;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(cn._hc&nbsp;</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">cn._io&nbsp;</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.config.useCookies)&nbsp;cn._io&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.isOpen(cn.id);<br>[color</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">red]</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">注意下面的语句：[/color]</span><span style="color: rgb(0, 128, 0);"><br></span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.config.folderLinks&nbsp;</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">&nbsp;cn._hc)&nbsp;cn.url&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br>[color</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">darkred]</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">如果想让一个目录节点也能够打开一个URL则把上面的这句话关掉。<br></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">if&nbsp;(!this.config.folderLinks&nbsp;&amp;&amp;&nbsp;cn._hc)&nbsp;cn.url&nbsp;=&nbsp;null;[/color]</span><span style="color: rgb(0, 128, 0);"><br></span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.config.useSelection&nbsp;</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">&nbsp;cn.id&nbsp;</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.selectedNode&nbsp;</span><span style="color: rgb(0, 0, 0);">&amp;&amp;</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.selectedFound)&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cn._is&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.selectedNode&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;n;<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.selectedFound&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<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;}<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;str&nbsp;</span><span style="color: rgb(0, 0, 0);">+=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.node(cn,&nbsp;n);<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;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(cn._ls)&nbsp;</span><span style="color: rgb(0, 0, 255);">break</span><span style="color: rgb(0, 0, 0);">;<br>&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;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;str;<br>};</span></div><br>
</div>
</td></tr></tbody>
</table>
<img src ="http://www.blogjava.net/heweiya/aggbug/24586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heweiya/" target="_blank">@家军</a> 2005-12-19 11:17 <a href="http://www.blogjava.net/heweiya/archive/2005/12/19/24586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>