﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-JAVA AJAX C++-随笔分类-JAVA技术</title><link>http://www.blogjava.net/itspy/category/17171.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 06 Jun 2014 15:55:39 GMT</lastBuildDate><pubDate>Fri, 06 Jun 2014 15:55:39 GMT</pubDate><ttl>60</ttl><item><title>CGLIB学习札记---生成CLASS的命名规则</title><link>http://www.blogjava.net/itspy/archive/2014/06/06/414464.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Fri, 06 Jun 2014 04:03:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2014/06/06/414464.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/414464.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2014/06/06/414464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/414464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/414464.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: CGLIB生存的Class的命名规则有多种,它们都是由接口NamingPolicy对应的实现来定义的.接下来针对DefaultNamingPolicy进行分析.泛泛的说,生成的CLASS的规则如下<br> <br>被代理class name(包名和类名) + "$$" +<br>使用cglib处理的class name(只有类名,不包含包名) +"ByCGLIB" + "$$" +<br>key的hashcode(接下来会对key有一个详细的分析) +<br>序列号<br> <br>下面是上面规则的示例：<br>aop.target.HelloImpl$$EnhancerByCGLIB$$494b5b61<br>aop.target.HelloImpl$$EnhancerByCGLIB$$494b5b61_2<br>aop.target.HelloImpl$$EnhancerByCGLIB$$494b5b61_3&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2014/06/06/414464.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/414464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2014-06-06 12:03 <a href="http://www.blogjava.net/itspy/archive/2014/06/06/414464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA函数可以修改传入的变量吗?</title><link>http://www.blogjava.net/itspy/archive/2014/06/04/414381.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Wed, 04 Jun 2014 04:26:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2014/06/04/414381.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/414381.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2014/06/04/414381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/414381.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/414381.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 泛泛的谈,可以说,有时可以有时不可以. 那我们就具体些,直入主题,看疗效吧.下面是一个例子:&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2014/06/04/414381.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/414381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2014-06-04 12:26 <a href="http://www.blogjava.net/itspy/archive/2014/06/04/414381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何让一个Class被一个虚拟机实例载入2次</title><link>http://www.blogjava.net/itspy/archive/2014/06/03/414343.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Tue, 03 Jun 2014 05:16:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2014/06/03/414343.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/414343.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2014/06/03/414343.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/414343.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/414343.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 如何让一个Java Class被一个虚拟机实例载入2次&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2014/06/03/414343.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/414343.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2014-06-03 13:16 <a href="http://www.blogjava.net/itspy/archive/2014/06/03/414343.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAXP throw Exception when validate XML with SAX</title><link>http://www.blogjava.net/itspy/archive/2011/08/10/356262.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Wed, 10 Aug 2011 10:12:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2011/08/10/356262.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/356262.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2011/08/10/356262.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/356262.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/356262.html</trackback:ping><description><![CDATA[<p>Exception:Your JAXP provider [org.apache.crimson.jaxp.DocumentBuilderFactoryImpl @1ff7a1e] does not support XML Schema. </p>
<p>只需要在特定目录添加一个文件:jaxp.properties<br />内容如下<br />javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl<br />javax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</p>
<p><br />如果是Bea/jrockit可以添加到如下类似目录<br />D:\bea\jrockit_160_05\jre\lib</p>
<p><br />-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl<br />-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl</p>
<p><br />&nbsp;</p><img src ="http://www.blogjava.net/itspy/aggbug/356262.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2011-08-10 18:12 <a href="http://www.blogjava.net/itspy/archive/2011/08/10/356262.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Tomcat中部署Java Web应用程序(转)</title><link>http://www.blogjava.net/itspy/archive/2008/12/02/243875.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Tue, 02 Dec 2008 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2008/12/02/243875.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/243875.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2008/12/02/243875.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/243875.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/243875.html</trackback:ping><description><![CDATA[<h3 class="" title=""><a href="http://ericxu131.javaeye.com/blog/175831">http://ericxu131.javaeye.com/blog/175831</a></h3>
<div class="blog_content"><span style="font-size: medium">在Tomcat中部署Java Web应用程序有两种方式：静态部署和动态部署。在下文中</span><span style="font-size: medium"><span style="font-family: Courier New">$CATALINA_HOME指的是Tomcat<span style="color: #ff0000">根</span>目录。<br />
</span>一、静态部署<br />
&nbsp;&nbsp;&nbsp;&nbsp; 静态部署指的是我们在服务器启动之前部署我们的程序，只有当服务器启动之后，我们的Web应用程序才能访问。以下3中方式都可以部署：<br />
&nbsp;&nbsp;&nbsp; 1、将PetWeb目录拷贝到</span><span style="font-size: medium; font-family: 新宋体">$CATALINA_HOME\webapps下，然后启动服务器就可以了。这种方式比较简单，但是web应用程序必须在webapps目录下。访问地址如下：<br />
</span><a href="http://localhost:8080/PetWeb/"><span style="font-family: 新宋体"><span style="font-size: medium"><span style="color: #2c4d5e">http://localhost:8080/</span><span style="color: #ff0000">PetWeb/</span></span></span></a><br />
<span style="font-size: medium; font-family: 新宋体">&nbsp;&nbsp; 2、这种方式可以不必将PetWeb目录拷贝到webapps下，直接在F:\部署。方法如下，更改</span><span style="font-size: medium; font-family: 新宋体">$CATALINA_HOME\conf\server.xml文件，在&lt;host&gt;标签内添加&lt;Context&gt;标签，内容如下：<br />
&lt;Context docBase="F:/PetWeb" reloadable="false" path="/Pet"/&gt;<br />
其中reloadable="false"表示当应用程序中的内容发生更改之后服务器不会自动加载，这个属性在开发阶段通常都设为true，方便开发，在发布阶段应该设置为false，提高应用程序的访问速度。docBase为路径，可以使用绝对路径，也可以使用相对路径，相对路径相对于webapps。path属性的值是访问时的根地址。访问地址如下：</span><a href="http://localhost:8080/Pet/"><span style="font-size: medium"><span style="font-family: 新宋体"><span style="color: #2c4d5e">http://localhost:8080/</span><span style="color: #ff0000">Pet/</span></span></span></a><br />
<span style="font-size: medium; font-family: 新宋体">&nbsp;&nbsp;&nbsp; 3、这种方式和第二种方式差不多，但是不是在Server.xml文件中添加Context标签，而是在<span style="font-family: Courier New">$CATALINA_HOME</span>\conf\Catalina\localhost中添加一个xml文件，如Pet.xml，内容如下：<br />
</span><span style="font-size: medium">&lt;Context docBase="F:/PetWeb" reloadable="false" /&gt;大家可能发现和第二种方式差不多，但是缺少了path属性，这种方式服务器会使用.xml的名字作为path属性的值。访问地址如下：</span><a href="http://localhost:8080/Pet/"><span style="font-size: medium"><span style="color: #2c4d5e">http://localhost:8080/</span><span style="color: #ff0000">Pet/</span></span></a><br />
<span style="font-size: medium">&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 我们刚才是将PetWeb文件夹部署在了服务器中，我们知道可以将Web应用程序的<span style="color: #ff0000">内容</span>打成<span style="color: #ff0000">.war</span></span><span style="font-size: medium"><span style="color: #000000">包，然后在部署在服务器上。打包请参考如下步骤：<br />
&nbsp;&nbsp;&nbsp; 1、打开命令提示符（Start--&gt;Run--&gt;cmd）<br />
&nbsp;&nbsp;&nbsp; 2、设置jdk环境变量（如果我教过的学生不会配置，以后别说孙老师教过你）<br />
&nbsp;&nbsp;&nbsp; 3、在命令提示符中进入F:\PetWeb文件后，键入如下命令：<br />
</span><span style="color: #ff0000">jar ..\Pet.war *.*&nbsp;&nbsp;</span></span><span style="font-size: medium"><span style="color: #000000">这样在F:\下应该有Pet.war文件。其中..表示当前目录的父目录。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 部署Pet.war文件非常简单，将刚才有docBase="F:\PetWeb"更改为docBase="F:\Pet.war"或者直接将其拷贝到webapps下也可以。重新启动服务器就可以将Pet.war部署为一个Web应用程序了。如果你够细心的话你会发现，服务器将Pet.war文件解开，并且在webapps下面又生成了一个Pet文件夹，然后把Pet.war的内容拷贝到里面去了。我们可以通过以下方式取消自动解压缩，配置方式如下：<br />
</span>&lt;Context docBase="F:/PetWeb" reloadable="false" <span style="color: #ff0000"><span style="font-family: 新宋体">unpackWAR</span>="false"</span>/&gt;<br />
二、动态部署<br />
&nbsp;&nbsp;&nbsp; 动态部署是指可以在服务器启动之后部署web应用程序，而不用重新启动服务器。动态部署要用到服务器提供的manager.war文件，如果在</span><span style="font-size: medium; font-family: 新宋体">$CATALINA_HOME\webapps\下没有该文件，你必须去重新下载tomcat，否则不能完成以下的功能。要想使用该管理程序必须首先编辑</span><span style="font-size: medium; font-family: 新宋体">$CATALINA_HOME\conf\tomcat-users.xml文件，内容如下：关于这个文件的更多内容，请参考</span><a href="http://coresun.blog.sohu.com/70550348.html" target="_blank"><span style="font-size: medium; color: #2c4d5e; font-family: 新宋体">Java Web应用程序的安全模型二</span></a><br />
<span style="font-size: medium">&lt;tomcat-users&gt;<br />
&lt;role rolename="tomcat"/&gt;<br />
&lt;role rolename="role1"/&gt;<br />
</span><span style="font-size: medium"><span style="color: #ff0000">&lt;role rolename="manager"/&gt;<br />
&lt;user username="coresun" password="coresun" roles="manager"/&gt;</span><br />
&lt;user username="tomcat" password="tomcat" roles="tomcat"/&gt;<br />
&lt;user username="both" password="tomcat" roles="tomcat,role1"/&gt;<br />
&lt;user username="role1" password="tomcat" roles="role1"/&gt;<br />
&lt;/tomcat-users&gt;<br />
然后在浏览器中键入如下地址：<br />
</span><a href="http://localhost:8080/"><span style="font-size: medium; color: #2c4d5e">http://localhost:8080/</span></a><span style="font-size: medium">应该看到一个漂亮的加菲猫了吧。点击左边的Tomcat Manager链接，提示输入用户名和密码，本文都是coresun，然后可以看到以下页面：<br />
<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/jaketseng/116fdde175d.jpg" _counted="undefined" /></span>
<p><span style="font-size: medium">在Context Path(option):中输入/Pet<br />
XML Configration file URL中要指定一个.xml文件，比如我们在F:\下建立一个Pet.xml文件，内容如下：<br />
&lt;Context reloadable="false" /&gt;docBase不用写了，因为在下一个文本框中填入。或者更简单点，这个文本框什么都不填。<br />
在WAR or Directory URL:中键入F:\PetWet或者F:\Pet.war都可以，然后点击Deploy按钮，看看上面是不是已经看到了你web应用程序，名字就是你Context Path(option):中的名字。<br />
<br />
如果你部署.war文件还有更加简单的方式，下面还有个Select WAR file uploae点击浏览选择.war文件，然后点击Deploy也可以。</span></p>
</div>
<img src ="http://www.blogjava.net/itspy/aggbug/243875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2008-12-02 11:14 <a href="http://www.blogjava.net/itspy/archive/2008/12/02/243875.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何向Eclipse中输入系统变量和运行参数</title><link>http://www.blogjava.net/itspy/archive/2008/10/29/237332.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Wed, 29 Oct 2008 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2008/10/29/237332.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/237332.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2008/10/29/237332.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/237332.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/237332.html</trackback:ping><description><![CDATA[往Eclipse中输入运行参数，run&nbsp; -&gt; run..-&gt;arguments--&gt; program arguments<br />
Eg: 2008-12-20<br />
<br />
<br />
往Eclipse中输入系统变量，run&nbsp; -&gt; run..-&gt;arguments--&gt; vm arguments.<br />
Eg: -Dlog.level=DEBUG -Dconfig.file="C:\Documents and Settings\feli\workspace\IECAgent\src\ratingAgent.config"<br />
<br />
<br />
有一点要注意的就是如果参数中有空格，要用引号括起来。<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/itspy/eclipse.gif" border="0" /><br />
<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/itspy/aggbug/237332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2008-10-29 11:08 <a href="http://www.blogjava.net/itspy/archive/2008/10/29/237332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>原来mvn war:war 不依赖 mvn:compile</title><link>http://www.blogjava.net/itspy/archive/2008/09/24/230884.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Wed, 24 Sep 2008 06:57:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2008/09/24/230884.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/230884.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2008/09/24/230884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/230884.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/230884.html</trackback:ping><description><![CDATA[今天我直接运行mvn war:war打war得到的包里面发现WEB-INF/classes里面什么也没有,感觉好奇怪,但以前是可以的.<br />
<br />
经过查找发现以前之所以可以,是因为刚好对应的工程是Maven得到的Eclispe工程,而Eclipse已经对Java文件编绎过了,并且默认的class输出目录是target/classes.而Maven运行mvn:compile也是把class输出到此目录.<br />
<br />
所以打包前不必运行mvn:compile,但是如果不是Eclipse工程,或者是Eclipse没有把Class输出到target/classes,直接打WAR包,得到的包是不完整的,没有class的.<br />
<img src ="http://www.blogjava.net/itspy/aggbug/230884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2008-09-24 14:57 <a href="http://www.blogjava.net/itspy/archive/2008/09/24/230884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>控制Word/Excel在IE中打开，还是下载</title><link>http://www.blogjava.net/itspy/archive/2008/09/04/227079.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Thu, 04 Sep 2008 14:48:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2008/09/04/227079.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/227079.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2008/09/04/227079.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/227079.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/227079.html</trackback:ping><description><![CDATA[经常在下载Word文件时，总是在IE中打开，很不习惯，让用户也觉得很困惑，花了好长时间，终于找到了相关代码，其实很简单。会者不难，难者不会。<br />
<br />
&lt;%@ page contentType="application/msword;charset=utf8" %&gt;<br />
&lt;!-- 以上这行设定本网页为Word格式的网页 --&gt;<br />
&lt;%<br />
&nbsp;&nbsp; //response.setHeader("Content-disposition","inline; filename=test1.doc"); //线上浏览方式，用IE打开<br />
&nbsp; response.setHeader("Content-disposition","attachment; filename=test1.doc");//下载方式，下载，不用浏览器打开<br />
&nbsp;&nbsp; //以上这行设定传送到前端浏览器时的档名为test1.doc<br />
&nbsp;&nbsp; //就是靠这一行，让前端浏览器以为接收到一个word档<br />
&nbsp; //来源：<a href="http://www.xfuse.cn">http://www.xfuse.cn</a><br />
%&gt;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;测试 <a href="http://www.xfuse.cn/">http://www.xfuse.cn</a><br />
&nbsp;
<img src ="http://www.blogjava.net/itspy/aggbug/227079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2008-09-04 22:48 <a href="http://www.blogjava.net/itspy/archive/2008/09/04/227079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>log4j 行号与文件名打印问号</title><link>http://www.blogjava.net/itspy/archive/2008/04/22/194686.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Tue, 22 Apr 2008 01:52:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2008/04/22/194686.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/194686.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2008/04/22/194686.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/194686.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/194686.html</trackback:ping><description><![CDATA[<font style="background-color: #cce8cf">关键字:行号 文件名 乱码 问号 ?<br />
<br />
log4j本来设置了要打印行号与文件名的,结果有的能打印出来,有的却是乱码,查了些文档之后才发现,原来打印问题是因为编绎时没有编绎进去调试信息,所以没办法打印.<br />
<br />
但是我用的是Ant,如果在Ant编绎时,编绎进去调试信息呢,参考下面配置.<br />
<br />
<font style="background-color: #cce8cf">&nbsp;&nbsp;&lt;javac srcdir="src" destdir="bin" <span style="color: red">debug="true"&nbsp;</span> classpathref="accrual.path" &gt;<br />
</font><br />
首发于 http://blog.xfuse.cn<br />
<br />
参考文档<br />
http://ant.apache.org/manual/CoreTasks/javac.html<br />
<br />
<br />
<br />
Log4j配置<br />
<font style="background-color: #cce8cf"><font style="background-color: #cce8cf">log4j.appender.C1.layout.ConversionPattern=%F(%L)-- %-4r %-5p [%t] %37c %3x - %m%n<br />
<br />
<br />
如果是用JAVAC编绎,那么直接加参数-g就可以了.<br />
<br />
<font style="background-color: #cce8cf">用法：javac &lt;选项&gt; &lt;源文件&gt;<br />
其中，可能的选项包括：<br />
&nbsp; -g&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; -g:none&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不生成任何调试信息<br />
&nbsp; -g:{lines,vars,source}&nbsp;&nbsp;&nbsp;&nbsp; 只生成某些调试信息<br />
&nbsp; -nowarn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不生成任何警告</font><br />
</font></font></font>
<img src ="http://www.blogjava.net/itspy/aggbug/194686.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2008-04-22 09:52 <a href="http://www.blogjava.net/itspy/archive/2008/04/22/194686.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用代理实现AJAX跨域访问时遇到HTTPS</title><link>http://www.blogjava.net/itspy/archive/2007/04/27/114125.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Fri, 27 Apr 2007 08:26:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2007/04/27/114125.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/114125.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2007/04/27/114125.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/114125.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/114125.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 为了方便说明，先做出一些定义。<br>代理服务器：在AJAX可以访问的域中，并且代理AJAX来访问其它网站的服务器，<br>目标服务器：AJAX真实想想访问的网址所在的服务器。<br> <br>我遇到的问题就是：代理服务器通过HTTPS访问目标服务器，但是目标服务器的证书出于一些原因并不被信任。<br><br>关键字:Ajax ,JavaScript, Coldfusion, HTTPS, cfhttp&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2007/04/27/114125.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/114125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2007-04-27 16:26 <a href="http://www.blogjava.net/itspy/archive/2007/04/27/114125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2.0与1.2.8的Spring在事务管理上的区别</title><link>http://www.blogjava.net/itspy/archive/2007/03/29/107277.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Thu, 29 Mar 2007 09:20:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2007/03/29/107277.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/107277.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2007/03/29/107277.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/107277.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/107277.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文章比较了Spring自己带的例子：JPetStore ，通过配置文件详细讲解了，Spring1.2.8与2.0如何实现声明式事务管理。&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2007/03/29/107277.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/107277.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2007-03-29 17:20 <a href="http://www.blogjava.net/itspy/archive/2007/03/29/107277.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring Aop的事务配置的一点疑问</title><link>http://www.blogjava.net/itspy/archive/2007/03/27/106751.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Tue, 27 Mar 2007 12:18:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2007/03/27/106751.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/106751.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2007/03/27/106751.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/106751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/106751.html</trackback:ping><description><![CDATA[Spring Aop配置中有一个事务级别是 ISOLATION_READ_COMMITTED:它的意思是 保证一个事务不会读取到另一个并行事务已修改但未提交的数据。<br /><br /><br />这样是不是有可能两个并行事务，同时读取一个数据，然后再同时修改，先后提交事务。这样就会有一个事务丢失其修改，不知道我理解的对不对。<br /><br /><br /><br /><br /> <img src ="http://www.blogjava.net/itspy/aggbug/106751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2007-03-27 20:18 <a href="http://www.blogjava.net/itspy/archive/2007/03/27/106751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS实现include功能(提供完整的示例下载)</title><link>http://www.blogjava.net/itspy/archive/2007/03/21/105137.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Wed, 21 Mar 2007 01:07:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2007/03/21/105137.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/105137.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2007/03/21/105137.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/105137.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/105137.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一般的语言都提供了include功能，比如JAVA，C都实现了。但是JS却没有实现。我在网上查找了一些资料，实现了一个JS的include功能，并提供完整的示例下载。&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2007/03/21/105137.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/105137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2007-03-21 09:07 <a href="http://www.blogjava.net/itspy/archive/2007/03/21/105137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初步体验“AJAX不能跨域访问”(原创)［有源码，有示例］</title><link>http://www.blogjava.net/itspy/archive/2007/02/11/99262.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Sun, 11 Feb 2007 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2007/02/11/99262.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/99262.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2007/02/11/99262.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/99262.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/99262.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: AJAX不能跨域访问是什么意思,我想没有亲自遇到这个问题的人,可能根本就不理解.现在我给出一个例子,让大家体会一下什么是跨域访问.这个页面就是一个HTML文件,源码我附文章后面了.<br><br>大家可以亲自体会一下。不过要有Web容器才行，实在没有Web容器，用网络邻居也行。&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2007/02/11/99262.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/99262.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2007-02-11 17:30 <a href="http://www.blogjava.net/itspy/archive/2007/02/11/99262.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>打印出Ibatis最终的SQL语句</title><link>http://www.blogjava.net/itspy/archive/2007/02/11/99232.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Sun, 11 Feb 2007 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2007/02/11/99232.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/99232.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2007/02/11/99232.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/99232.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/99232.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 做项目时遇到这样的需求，希望能打印出最终数据库执行的SQL语句，一般遇到这些有一定通用性的问题，我都会到Appfuse中去找找例子，结果这次没有成功。<br>Appfuse是有相关的配置，但是好像没有用，不过关于Hibernate的倒是有用，我想这种问题网上肯定有人遇到过，只要找到这个人就行了。<br><br>经过切换不同的关键字，我最后找到了正确的配置。&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2007/02/11/99232.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/99232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2007-02-11 11:22 <a href="http://www.blogjava.net/itspy/archive/2007/02/11/99232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>三种Tomcat的插件比较</title><link>http://www.blogjava.net/itspy/archive/2007/01/17/94442.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Wed, 17 Jan 2007 09:09:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2007/01/17/94442.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/94442.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2007/01/17/94442.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/94442.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/94442.html</trackback:ping><description><![CDATA[
		<p dir="ltr" style="MARGIN-RIGHT: 0px">
				<br />      在Tomcat下开发一些项目时，不可避免的会用到针对Tomcat的插件来进行调试，目前我接触到的插件有如下三种，虽然它们都能对工程进行调试，它在一些其它功能上面却有其区别</p>
		<p>      Myeclipse：这个是最强大的Eclipse插件，差不多什么都有，是一个一站式的解决插件。<br />      WTP（Web Tools Platform）：是由Eclipse自己开发的插件。<br />      TomcatPlugin（sysdeo）：最老牌的Tomcat插件,也是最好用的。</p>
		<p> </p>
		<ol>
				<li>Myeclipse插件对Tomcat的支持看起来应该是最好的，特点是热部署。不管是对Servlet的修改，还是对web.xml的修改都可以。却可以做到，哪个变了，就加载哪个。它可以很方便的把你的工程直接发布到Tomcat中去，或者是以war的形式发布过去。 
</li>
				<li>WTP（Web Tools Platform）<br />：相对MyEclipse于，WTP则实现了部署的透明化，Myeclipse在启动Tomcat后，要你通过myEclipse把工程部署到Tomcat下，它会对你的Tomcat目录下添加一些文件。但是WTP则对你的Tomcat不会有任何修改。<br />但我也发现了使用WTP 部署Web工程时的一个问题，对web.xml文件的修改不会自动的被重新加载，但更改Servlet会重新加载Servlet，并且同时重新加载web.xml。<br />也就是你想重新加载web.xml，你只有佯装修改一个Servlet，才能触发重新加载web.xml。不知道以后的版本会不会修改这点。 
</li>
				<li>TomcatPlugin（sysdeo）：最老牌的tomcat插件了,相对来说在Tomcat调试领域也是最好用的了，不过它有点与WTP一样，无法自动加载web.xml变化。但它也有它的绝招，是另外两个插件不能比的。它有两种支持调试的方式： 
<ol><li>建立Tomcat工程，这时可以使用热部署，tomcatPlugin（sysdeo）由于它并不真正的部署工程，使用TomcatPlugin（sysdeo）添加一个工程时，实际上在Tomcat\conf\Catalina\localhost目录下添加了一个文件，当Tomcat启动时就会加载这个工程，这时当然也可以调试。 
</li><li>另外一种支持调试的功能是其它两个插件没有的，比如你的工程是通过ANT布置到Tomcat下去的，你的目录结构无法满足WTP与Myeclipse的要求，这时你没有办法来使用这两个插件来进行调度，但是使用TomcatPlugin却可以。你只要在设置window－&gt;preferences－&gt;tomcat－&gt;soure path即可。 </li></ol></li>
		</ol>
		<p>
				<br />个人Blog:  <a href="/itspy">http://www.blogjava.net/itspy</a></p>
		<p>
				<br />插件的适应环境：<br /><br />   如果没有特别的原因，应该尽量选择TomcatPlugin（sysdeo）。</p>
		<ol>
				<li>如果是一个全新的项目，上级完全放权了，你可以使用myEclipse与WTP，因为它能实现热部署，调度修改代码十分方便。但它们相对Tomcat来说，一个是侵入式的，一个却是无侵入的。你可以针对这个特点来在两者之间进行选择。 
</li>
				<li>如果是一个已经有一定历史积累的工程，或者是无法对目录结构进行控制的工作，这时推荐使用使用TomcatPlugin（sysdeo）。<br />因为myEclipse与WTP对工程对目录结构都有一定的要求，因为它们要把工程部署到Tomcat上去，所以对工程目录结构上都有自己的要求。比如在哪放置WEB-INFO，在哪个目录放置源文件，并且两个插件之间的工程无法形成兼容与共享。<br />但是TomcatPlugin（sysdeo）只是充当一个外挂来启动Tomcat，并把指定的源代码与Tomcat里面运行的项目关联起来，进行调试。所以它对目录结构没有要求，比较适应于无法对目录结构进行控制的项目，一个普通的Java工程即可以。 </li>
		</ol>
		<p> 个人Blog:  <a href="/itspy">http://www.blogjava.net/itspy</a><br /></p>
<img src ="http://www.blogjava.net/itspy/aggbug/94442.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2007-01-17 17:09 <a href="http://www.blogjava.net/itspy/archive/2007/01/17/94442.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在单元测试时,测试用例中的属性实现自动装载[appfuse学习笔试]</title><link>http://www.blogjava.net/itspy/archive/2007/01/03/91532.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Wed, 03 Jan 2007 06:19:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2007/01/03/91532.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/91532.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2007/01/03/91532.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/91532.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/91532.html</trackback:ping><description><![CDATA[如何在单元测试时，对Appfuse中POJO的属性进行自动装载(经过事后分析发现,不仅仅是针对POJO)<br />在Appfuse中,对DAO类进行单元测试时有如下代码<br />    private UserDao dao = null;<br />    private RoleDao rdao = null;<br />    <br />    public void setUserDao(UserDao dao) {<br />        this.dao = dao;<br />    }<br />    <br />    public void setRoleDao(RoleDao rdao) {<br />        this.rdao = rdao;<br />    }<br />通过架构,这两个Dao类都进行了自动装载,后来的使用中,我才发现,所有类似的属性都可以实现自动装载.<br /> <br /> <br />这我就奇怪了,如果这些类是在Spring的ApplicationContext中设置的,我还知道,Spring提供了很多途径来解决自动装载问题.但是这些单元测试的类,都是由它们来管理生成ApplicationContext的,怎么也实现了自动装载?<br />经常查看源码,才知道原来是Appfuse架构中对DAO进行单元测试的类有一个共同的父类AbstractDependencyInjectionSpringContextTests,这个父类得到生成的ApplicationContext,会检查自己有没有一些属性要实现自动装载的,如果有就到ApplicationContext中去找,找到了就把自己子类的属性实现自动装载.<br /> <br />最核心的代码是:AbstractDependencyInjectionSpringContextTests中有如下方法<br /> private void injectDependencies() throws Exception {<br />  if (isPopulateProtectedVariables()) {<br />   if (this.managedVariableNames == null) {<br />    initManagedVariableNames();<br />   }<br />   populateProtectedVariables();<br />  }<br />  else if (getAutowireMode() != AUTOWIRE_NO) {<br />   this.applicationContext.getBeanFactory().autowireBeanProperties(<br />    this, getAutowireMode(), isDependencyCheck());<br />  }<br /> }<br /> <br /> AbstractSingleSpringContextTests类中定义了下面的方法，这个方法实现了Junit的类TestCase定义的方法，这个方法会在每个方法之前运行。<br />   protected final void setUp() throws Exception {<br />  this.applicationContext = getContext(contextKey());//这个contextKey方法会调用BaseDaoTestCase中定义的getConfigLocations方法<br />  prepareTestInstance();<br />  onSetUp();<br /> }<img src ="http://www.blogjava.net/itspy/aggbug/91532.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2007-01-03 14:19 <a href="http://www.blogjava.net/itspy/archive/2007/01/03/91532.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Appfuse中如何取得当前登录用户名</title><link>http://www.blogjava.net/itspy/archive/2007/01/01/91283.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Mon, 01 Jan 2007 05:44:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2007/01/01/91283.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/91283.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2007/01/01/91283.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/91283.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/91283.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Appfuse是个比较好的J2EE开发框架，我在实际开发中遇到这样的问题，就是要对登录用户的一些关键操作进行日志记录，以备将来审记时使用，但是发现它好像没有直接提供类似的方法，只好自己去看原码来研究了。<br><br>Appfuse的登录，权限控制都是通过Acegi来实现的，通过网上查找，看资料先后找到了两个方法，和大家分享一下。&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2007/01/01/91283.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/91283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2007-01-01 13:44 <a href="http://www.blogjava.net/itspy/archive/2007/01/01/91283.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jpetstore(srping 版本)示例学习笔记[1]</title><link>http://www.blogjava.net/itspy/archive/2006/12/28/90461.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Thu, 28 Dec 2006 04:40:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2006/12/28/90461.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/90461.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2006/12/28/90461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/90461.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/90461.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 我学习的版本是spring-framework-1.2.8带的版本，我主要学习的是如下几点：Spring的MVC，Struts 的MVC（可选），ibatis。&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2006/12/28/90461.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/90461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2006-12-28 12:40 <a href="http://www.blogjava.net/itspy/archive/2006/12/28/90461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Spring在Web中是如何载入相关的上下文环境</title><link>http://www.blogjava.net/itspy/archive/2006/12/21/89358.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Thu, 21 Dec 2006 13:00:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2006/12/21/89358.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/89358.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2006/12/21/89358.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/89358.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/89358.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  Spring在Web中是如何载入相关的上下文环境<br><br> 只要在web.xml设置监听器:org.springframework.web.context.ContextLoaderListener<br> <listener><br>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class><br> </listener><br>并且配置一下如下参考<br>	<context-param><br>		<param-name>contextConfigLocation</param-name><br>		<param-value><br>			/WEB-INF/dataAccessContext-local.xml  /WEB-INF/applicationContext.xml<br>		</param-value><br>	</context-param><br><br>但是内部细节是如何运作的呢?&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2006/12/21/89358.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/89358.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2006-12-21 21:00 <a href="http://www.blogjava.net/itspy/archive/2006/12/21/89358.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA与C++的一点比较</title><link>http://www.blogjava.net/itspy/archive/2006/11/24/83275.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Fri, 24 Nov 2006 07:31:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2006/11/24/83275.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/83275.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2006/11/24/83275.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/83275.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/83275.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: int a =10; a+=a-=a*=a;<br>它们的结果一是-80,还是0呢。我问过很多人，他们都猜错了。<br><br>更奇怪的是在JAVA与C中它的表现还不一样，刚好相反。&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2006/11/24/83275.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/83275.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2006-11-24 15:31 <a href="http://www.blogjava.net/itspy/archive/2006/11/24/83275.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>finalize函数的一点疑问</title><link>http://www.blogjava.net/itspy/archive/2006/11/23/83052.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Thu, 23 Nov 2006 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2006/11/23/83052.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/83052.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2006/11/23/83052.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/83052.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/83052.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 根据Java语言规范，JVM保证调用finalize函数之前，这个对象是不可达的，但是JVM不保证这个函数一定会被调用。另外，规范还保证finalize函数最多运行一次。<br>这句话是不是可以理解：“finalize函数可能根本就不会被运行”&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2006/11/23/83052.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/83052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2006-11-23 15:21 <a href="http://www.blogjava.net/itspy/archive/2006/11/23/83052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从JAVA里面的不一致性，浅谈设计问题</title><link>http://www.blogjava.net/itspy/archive/2006/11/20/82386.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Mon, 20 Nov 2006 13:50:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2006/11/20/82386.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/82386.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2006/11/20/82386.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/82386.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/82386.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:    在JAVA里面，有如下几个不一致的地方<br>   得到数组的大小，要通过length属性 <br>   得到String的大小，要用length方法<br>   得到集合（比如List,Set)的大小，要使用size方法。<br><br>难道这没有给你带来不便吗？&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2006/11/20/82386.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/82386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2006-11-20 21:50 <a href="http://www.blogjava.net/itspy/archive/2006/11/20/82386.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++与JAVA在多态与覆盖上的区别（一点猜测）</title><link>http://www.blogjava.net/itspy/archive/2006/11/16/81598.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Thu, 16 Nov 2006 12:28:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2006/11/16/81598.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/81598.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2006/11/16/81598.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/81598.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/81598.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本人对JAVA有一定的了解，最近开始看一些C++的东西，遇到了JAVA与C++的如下不同点：就是JAVA与C++在覆盖或者是多态性上不太一样。<br><br>现分别写了两块代码证明如下，至于为什么会有如此原因，我也不明白，希望有能懂C++与JAVA的人能出来讲解一下。&nbsp;&nbsp;<a href='http://www.blogjava.net/itspy/archive/2006/11/16/81598.html'>阅读全文</a><img src ="http://www.blogjava.net/itspy/aggbug/81598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2006-11-16 20:28 <a href="http://www.blogjava.net/itspy/archive/2006/11/16/81598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态代理的一些思考和疑问:(疑问还没解决)</title><link>http://www.blogjava.net/itspy/archive/2006/11/13/80842.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Mon, 13 Nov 2006 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2006/11/13/80842.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/80842.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2006/11/13/80842.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/80842.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/80842.html</trackback:ping><description><![CDATA[
		<p>动态代理的一些思考和疑问:(疑问还没解决)<br />在Java中有一个动态代理技术,主要通过Proxy,InvocationHandler和Method,这三个类(接口)来实现.但是有如下一个问题不太明白,希望高手解惑.</p>
		<p>我查看了几个例子,它们实现InvocationHandler这个接口时,都通过构造函数传递进去了,实际被代理的对象,然后在实现的方法中通过method.invoke(obj,args);obj为构造函数传递进来的对象.</p>
		<p>比如下面的例子:<br />public class Handler implements InvocationHandler {</p>
		<p> MethodInterface delegate;</p>
		<p> public Handler(MethodInterface delegate) {<br />  this.delegate = delegate;<br /> }</p>
		<p> public Object invoke(Object proxy, Method method, Object[] args)<br />   throws Throwable {<br />  if (method.getName().equals("say")) {<br />   System.out.print("I have get it");<br />  }<br />  return method.invoke(this.delegate, args); <br /> }</p>
		<p>}</p>
		<p>函数invoke()传递进去的第一个参数proxy就没有被使用到,但同样实现了动态代理的效果,后面参考文献中的例子也是的,难道是这第一个参数就是多余的,如果是这样的话,就是Sun设置失误了 ^__^.</p>
		<p>sun的文档是这样解释这个参数的:proxy - the proxy instance that the method was invoked on.但这个参数有什么用的,如果不传递他进来,会有什么不便呢.</p>
		<p>
				<br />有没有人能明白这是怎么回事,或者是写个示例代码,讲讲这个第一个参数是干嘛用的?</p>
		<p> </p>
		<p> </p>
		<p>注:附两个完整的动态代理的例子<br /><a href="http://blog.csdn.net/hsyj_0001/archive/2006/04/02/647488.aspx">http://blog.csdn.net/hsyj_0001/archive/2006/04/02/647488.aspx</a><br /><a href="http://www.java2s.com/Code/Java/Development-Class/Demonstratesadynamicproxy.htm">http://www.java2s.com/Code/Java/Development-Class/Demonstratesadynamicproxy.htm</a></p>
<img src ="http://www.blogjava.net/itspy/aggbug/80842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2006-11-13 11:36 <a href="http://www.blogjava.net/itspy/archive/2006/11/13/80842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>百度面试题目的答案[原创]</title><link>http://www.blogjava.net/itspy/archive/2006/11/10/80435.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Fri, 10 Nov 2006 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2006/11/10/80435.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/80435.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2006/11/10/80435.html#Feedback</comments><slash:comments>52</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/80435.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/80435.html</trackback:ping><description><![CDATA[
		<p>最近有同学找工作,经常在班级群里发一些大公司的面试,笔试题目.昨天收到这样一个题目,据说是百度的面试题目.</p>
		<p> 有一根27厘米的细木杆，在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。 木杆很细，不能同时通过一只蚂蚁。开始 时，蚂蚁的头朝左还是朝右是任意的，它们只会朝前走或调头， 但不会后退。当任意两只蚂蚁碰头时，两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。 编写程序，求所有蚂蚁都离开木杆 的最小时间和最大时间。</p>
		<p>看了这个题目之后,突然很感兴趣,今天搞了半天把它做出来了,大概花了1个半小时.大公司的题目真是考人.反正都已经用算法实现了,我就不多说了,大家看代码吧.代码里面注释我也尽量全写了.一共有两个类,一个是Ant的模型,一个是控制类.原代码,大家可以在这取得:<br /><br /><font style="BACKGROUND-COLOR: #ffc0cb">http://www.blogjava.net/Files/itspy/baidu.rar</font><br /></p>
		<p>
				<br />
				<br />//////////////////////////////////////<br />/*百度面试题<br /> * 有一根27厘米的细木杆，在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。<br /> * 木杆很细，不能同时通过一只蚂蚁。开始 时，蚂蚁的头朝左还是朝右是任意的，它们只会朝前走或调头，<br /> * 但不会后退。当任意两只蚂蚁碰头时，两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。<br /> * 编写程序，求所有蚂蚁都离开木杆 的最小时间和最大时间。<br /> * <br /> * <br /> * 分析:题目中的蚂蚁只可能相遇在整数点,不可以相遇在其它点,比如3.5cm处之类的,也就是可以让每只蚂蚁走 1秒,然后<br /> * 查看是否有相遇的即可.<br /> * <br /> * 这样我的程序实现思路就是,初始化5只蚂蚁,让每只蚂蚁走1秒,然后看是否有相遇的,如果有则做相应处理.当每只蚂蚁都<br /> * 走出木杆时,我就记录当前时间.这样就可以得到当前状态情况下,需要多久可以走出木杆,然后遍历所有状态则可以得到所胡<br /> * 可能.<br /> */</p>
		<p>package baidu;</p>
		<p>public class Ant {<br /> /*<br />  * step 表示蚂蚁每一个单位时间所走的长度<br />  */<br /> private final static int step = 1;</p>
		<p> /*<br />  * position表示蚂蚁所处的初始位置<br />  */<br /> private int position;</p>
		<p> /*<br />  * direction表示蚂蚁的前进方向，如果为1表示向27厘米的方向走， 如果为－1，则表示往0的方向走。<br />  */<br /> private int direction = 1;</p>
		<p> /*<br />  * 此函数运行一次，表示蚂蚁前进一个单位时间，如果已经走下木杆则会抛出异常<br />  */<br /> public void walk() {<br />  if (isOut()) {<br />   throw new RuntimeException("the ant is out");<br />  }<br />  position = position + this.direction * step;<br /> };</p>
		<p>
				<br /> /**<br />  * 检查蚂蚁是否已经走出木杆，如果走出返回true<br />  *<br />  */</p>
		<p> public boolean isOut() {<br />  return position &lt;= 0 || position &gt;= 27;<br /> }</p>
		<p> /**<br />  * 检查此蚂蚁是否已经遇到另外一只蚂蚁<br />  * @param ant<br />  * @return 如果遇到返回true<br />  */<br /> public boolean isEncounter(Ant ant) {<br />  return ant.position == this.position;<br /> }</p>
		<p> /**<br />  * 改变蚂蚁的前进方向<br />  */<br /> public void changeDistation() {<br />  direction = -1 * direction;<br /> }</p>
		<p>
				<br /> /**<br />  * 构造函数,设置蚂蚁的初始前进方向,和初始位置<br />  * @param position<br />  * @param direction<br />  */<br /> public Ant(int position, int direction) {<br />  this.position = position;<br />  if (direction != 1) {<br />   this.direction = -1;//方向设置初始位置,比如为0时,也将其设置为1.这样可以方便后面的处理<br />  } else {<br />   this.direction = 1;<br />  }<br /> }</p>
		<p>}</p>
		<p> </p>
		<p>/////////////////////////////////////////////////////////</p>
		<p>
				<br />package baidu;</p>
		<p>public class Controller {</p>
		<p> public static void main(String[] args) {</p>
		<p>  int time = 0;<br />  for (int i = 0; i &lt; 32; i++) {<br />   Ant[] antArray = getAntList(getPoistions(), getDirections(i));<br />   while (!isAllOut(antArray)) {<br />    for (Ant ant : antArray) {<br />     if (!ant.isOut()) {<br />      ant.walk();<br />     }<br />    }<br />    time++;<br />    // 查看是否有已经相遇的Ant,如果有则更改其前进方向<br />    dealEncounter(antArray);<br />   }<br />   System.out.println(time);</p>
		<p>   // 将时间归0,这样可以重新设置条件,再次得到全部走完所需要的时间.<br />   time = 0;<br />  }</p>
		<p> }</p>
		<p> /**<br />  * 这个函数的算法很乱，但暂时能解决问题<br />  * <br />  * @param list<br />  */<br /> public static void dealEncounter(Ant[] antArray) {</p>
		<p>  int num_ant = antArray.length;<br />  for (int j = 0; j &lt; num_ant; j++) {<br />   for (int k = j + 1; k &lt; num_ant; k++) {<br />    if (antArray[j].isEncounter(antArray[k])) {<br />     antArray[j].changeDistation();<br />     antArray[k].changeDistation();<br />    }<br />   }<br />  }</p>
		<p> }</p>
		<p> /**<br />  * 因为有5只Ant，所以组合之后有32种组合.刚好用5位二进制来表示,如果为0则表示Ant往0的方向走 如果为1,则表示往27的方向走<br />  * <br />  * 注:在通过Ant的构造函数设置初始值时,通过过滤把0修改成了-1.<br />  */<br /> public static int[] getDirections(int seed) {<br />  int result[] = new int[5];<br />  result[0] = seed % 2;<br />  result[1] = seed / 2 % 2;<br />  result[2] = seed / 4 % 2;<br />  result[3] = seed / 8 % 2;<br />  result[4] = seed / 16 % 2;</p>
		<p>  System.out.println("directions is " + result[0] + "|" + result[1] + "|"<br />    + result[2] + "|" + result[3] + "|" + result[4]);</p>
		<p>  return result;</p>
		<p> }</p>
		<p> /**<br />  * 批量设置Ant的初始位置,这样设置不是十分必要,可以直接在代码中设置<br />  * <br />  * @return<br />  */<br /> public static int[] getPoistions() {<br />  return new int[] { 3, 7, 11, 17, 23 };<br /> }</p>
		<p> /**<br />  * 取得设置好初始值的5只Ant<br />  * <br />  * @param positions<br />  * @param directions<br />  * @return<br />  */<br /> public static Ant[] getAntList(int[] positions, int[] directions) {<br />  Ant ant3 = new Ant(positions[0], directions[0]);<br />  Ant ant7 = new Ant(positions[1], directions[1]);<br />  Ant ant11 = new Ant(positions[2], directions[2]);<br />  Ant ant17 = new Ant(positions[3], directions[3]);<br />  Ant ant23 = new Ant(positions[4], directions[4]);</p>
		<p>  return new Ant[] { ant3, ant7, ant11, ant17, ant23 };<br /> }</p>
		<p> /**<br />  * 判断是否所有的Ant都已经走出了木杆,也就是设置退出条件<br />  * <br />  * @param antArray<br />  * @return<br />  */<br /> public static boolean isAllOut(Ant[] antArray) {<br />  for (Ant ant : antArray) {<br />   if (ant.isOut() == false) {<br />    return false;<br />   }<br />  }<br />  return true;<br /> }<br />}</p>
		<p> </p>
<img src ="http://www.blogjava.net/itspy/aggbug/80435.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2006-11-10 16:46 <a href="http://www.blogjava.net/itspy/archive/2006/11/10/80435.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对Appfuse(struts)的一点反悟</title><link>http://www.blogjava.net/itspy/archive/2006/11/09/80242.html</link><dc:creator>itspy</dc:creator><author>itspy</author><pubDate>Thu, 09 Nov 2006 12:31:00 GMT</pubDate><guid>http://www.blogjava.net/itspy/archive/2006/11/09/80242.html</guid><wfw:comment>http://www.blogjava.net/itspy/comments/80242.html</wfw:comment><comments>http://www.blogjava.net/itspy/archive/2006/11/09/80242.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/itspy/comments/commentRss/80242.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/itspy/services/trackbacks/80242.html</trackback:ping><description><![CDATA[
		<div id="mb_0">
				<div>最近因为可能的工作需要，又开始学习JAVA相关技术了<wbr>。因为没有明确的技术方向，只好还是从高层学习起<wbr>，学习各种框架设计思想，学习模式。</wbr></wbr></div>
				<div> </div>
				<div>顺手从手边拿起一本Struts书《Struts程序员查询辞典<wbr>》，看起里面的ＭＶＣ讲解，说真的这本书讲的还真不错<wbr>，以前看了好多书都不太明白的东西，这一次看什么就明白什么<wbr>。想想也可能是因为现在有了一定的实践经验，要是我以前拿到这本书<wbr>，可能也是看不懂。反正这个是无从考证了。</wbr></wbr></wbr></wbr></div>
				<div> </div>
				<div>说到这使我想起以前的一个笑话，一个傻子买了3个大饼<wbr>，吃了前两个都没吃饱，到第三个才吃饱。于是叹道：早知道<wbr>，我就只买第三个了，前两个饼没用。</wbr></wbr></div>
				<div> </div>
				<div>我看多半，是因为看的多了，加上之前在公司的实践学习的原因<wbr>，才能使我这次看这个ＭＶＣ一看就能明白书上在说什么。</wbr></div>
				<div> </div>
				<div>记得以前刚开始看Struts时，还以为struts的FormB<wbr>ean是Model层的，还是一位高手告诉我不对<wbr>，当时我还不太信（不相信权威^--^)，当然不久我就知道是我搞<wbr>错了。</wbr></wbr></wbr></div>
				<div> </div>
				<div>ＭＶＣ，其实Struts根本就没有实现Ｍ层。它都是直接使用现有<wbr>的其它技术。比如Ｍ层，就可以使用ＥＪＢ，或者是ＤＡＯ模式来实现<wbr>。从书中，我明白了，原来Model层也分了好几层，接口层<wbr>，事务逻辑层，数据访问层。以前Ａｐｐｆｕｓｅ中为什么把一个ＤＡ<wbr>Ｏ分成好几块，以前一直不太明白，这几块分别是干嘛的。</wbr></wbr></wbr></wbr></div>
				<div> </div>
				<div>现在有了一些重新的感悟写下来，不知道对不对，要有不对的请各位看<wbr>客指出。</wbr></div>
				<div>用过Appfuse的应该知道，在src/dao目录下面有四层，org.appfuse，org.appfuse.dao，org.appfuse.hibernate，org<wbr>.appfuse.model。其中第一层org.appfuse中放的东西，用处不大，里面放置了些常量定义。另外三层分别定义了<wbr>，dao的接口，dao的hibernate的实现类<wbr>，和数据传递对象（DTO)。上面这些应该都没有业务逻辑的处理才<wbr>对，以前早期开发时由于不太明白Appfuse的分层原则<wbr>，也不理解Struts分层的Model层是如何划分的<wbr>，在这些层中放入了一些业务逻辑。没有找到对应的单独的事务逻辑层<wbr>，这一层应该放在了dao的hibernate的实现类里面了。 </wbr></wbr></wbr></wbr></wbr></wbr></wbr></div>
				<div> </div>
				<div>在Appfuse中，好像添加了一个新的层，应该算做是业务逻辑层<wbr>，也就是在src/service里面。他里面定义了接口<wbr>，及接口的实现，还有这一层通用的功能块。通过我的理解<wbr>，这一层应该主要是体现业务逻辑。也就是提供给Struts层的A<wbr>ction来进行调用。</wbr></wbr></wbr></wbr></div>
				<div> </div>
				<div>也就是ＭＶＣ在Appfuse的Struts版本里面<wbr>，Ｍ实现的是对数据库的操作及一些领域模型的实现；Ｖ就视图<wbr>，这个在Appfuse里面没有什么含糊的；另外Ｃ只是相当于一个<wbr>路由的功能，把不同的请求交给不同的业务逻辑处理<wbr>，把结果交给不同的ＶＩＥＷ去显示。然后Appfuse在ＭＣ之间<wbr>添加了一个业务逻辑层(src/service)。</wbr></wbr></wbr></wbr></wbr></div>
				<div> </div>
				<div>最近的学习体会，不知对不对，希望有高手指出不对的地方。</div>
		</div>
<img src ="http://www.blogjava.net/itspy/aggbug/80242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/itspy/" target="_blank">itspy</a> 2006-11-09 20:31 <a href="http://www.blogjava.net/itspy/archive/2006/11/09/80242.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>