﻿<?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-gcw633</title><link>http://www.blogjava.net/gcw633/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:04:36 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:04:36 GMT</pubDate><ttl>60</ttl><item><title>js禁止右键，复制，粘贴，选择</title><link>http://www.blogjava.net/gcw633/archive/2010/05/21/321533.html</link><dc:creator>淡淡的回忆</dc:creator><author>淡淡的回忆</author><pubDate>Fri, 21 May 2010 04:14:00 GMT</pubDate><guid>http://www.blogjava.net/gcw633/archive/2010/05/21/321533.html</guid><wfw:comment>http://www.blogjava.net/gcw633/comments/321533.html</wfw:comment><comments>http://www.blogjava.net/gcw633/archive/2010/05/21/321533.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/gcw633/comments/commentRss/321533.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gcw633/services/trackbacks/321533.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">1</span><span style="color: #000000">.&nbsp;oncontextmenu</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">window.event.returnValue=false</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;将彻底屏蔽鼠标右键，其实是禁止快捷菜单，因为不光右键可以弹出这个菜单，键盘上空格键右边的windows键也可以激活这个快捷菜单&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">table&nbsp;border&nbsp;oncontextmenu</span><span style="color: #000000">=</span><span style="color: #0000ff">return</span><span style="color: #000000">(</span><span style="color: #0000ff">false</span><span style="color: #000000">)</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">td</span><span style="color: #000000">&gt;</span><span style="color: #000000">no</span><span style="color: #000000">&lt;/</span><span style="color: #000000">table</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;可用于Table&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">2</span><span style="color: #000000">.&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">body&nbsp;onselectstart</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">return&nbsp;false</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;禁止选取、防止复制&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">3</span><span style="color: #000000">.&nbsp;onpaste</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">return&nbsp;false</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;禁止粘贴&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">4</span><span style="color: #000000">.&nbsp;oncopy</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">return&nbsp;false;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;oncut</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">return&nbsp;false;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;禁止复制和剪切<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">5</span><span style="color: #000000">.&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">input&nbsp;style</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">ime-mode:disabled</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;关闭输入法&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />一般用这三个就足够了<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">body&nbsp;onselectstart</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">return&nbsp;false</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;ondrag</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">return&nbsp;false</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;oncontextmenu</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">return&nbsp;false</span><span style="color: #000000">'</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.blogjava.net/gcw633/aggbug/321533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gcw633/" target="_blank">淡淡的回忆</a> 2010-05-21 12:14 <a href="http://www.blogjava.net/gcw633/archive/2010/05/21/321533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修改tomcat内存大小</title><link>http://www.blogjava.net/gcw633/archive/2010/05/19/321355.html</link><dc:creator>淡淡的回忆</dc:creator><author>淡淡的回忆</author><pubDate>Wed, 19 May 2010 04:10:00 GMT</pubDate><guid>http://www.blogjava.net/gcw633/archive/2010/05/19/321355.html</guid><wfw:comment>http://www.blogjava.net/gcw633/comments/321355.html</wfw:comment><comments>http://www.blogjava.net/gcw633/archive/2010/05/19/321355.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gcw633/comments/commentRss/321355.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gcw633/services/trackbacks/321355.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">Tomcate启动内存设置&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其初始空间(即</span><span style="color: #000000">-</span><span style="color: #000000">Xms)是物理内存的1</span><span style="color: #000000">/</span><span style="color: #000000">64</span><span style="color: #000000">，最大空间(</span><span style="color: #000000">-</span><span style="color: #000000">Xmx)是物理内存的1</span><span style="color: #000000">/</span><span style="color: #000000">4</span><span style="color: #000000">。可以利用JVM提供的</span><span style="color: #000000">-</span><span style="color: #000000">Xmn&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">Xms&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">Xmx等选项可&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />进行设置&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;实例，以下给出1G内存环境下java&nbsp;jvm&nbsp;的参数设置参考：&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />JAVA_OPTS</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">-server&nbsp;-Xms800m&nbsp;-Xmx800m&nbsp;&nbsp;-XX:PermSize=64M&nbsp;-XX:MaxNewSize=256m&nbsp;-XX:MaxPermSize=128m&nbsp;-Djava.awt.headless=true&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />JAVA_OPTS</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">-server&nbsp;-Xms768m&nbsp;-Xmx768m&nbsp;-XX:PermSize=128m&nbsp;-XX:MaxPermSize=256m&nbsp;-XX:&nbsp;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">NewSize</span><span style="color: #000000">=</span><span style="color: #000000">192m&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">XX:MaxNewSize</span><span style="color: #000000">=</span><span style="color: #000000">384m</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">CATALINA_OPTS</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">-server&nbsp;-Xms768m&nbsp;-Xmx768m&nbsp;-XX:PermSize=128m&nbsp;-XX:MaxPermSize=256m&nbsp;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">-</span><span style="color: #000000">XX:NewSize</span><span style="color: #000000">=</span><span style="color: #000000">192m&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">XX:MaxNewSize</span><span style="color: #000000">=</span><span style="color: #000000">384m</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Linux：&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />在</span><span style="color: #000000">/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">local</span><span style="color: #000000">/</span><span style="color: #000000">apache</span><span style="color: #000000">-</span><span style="color: #000000">tomcat</span><span style="color: #000000">-</span><span style="color: #000000">5.5</span><span style="color: #000000">.</span><span style="color: #000000">23</span><span style="color: #000000">/</span><span style="color: #000000">bin目录下的catalina.sh&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />添加：JAVA_OPTS</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">-Xms512m&nbsp;-Xmx1024m</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />要加&#8220;m&#8221;说明是MB，否则就是KB了，在启动tomcat时会报内存不足。&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">-</span><span style="color: #000000">Xms：初始值&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">-</span><span style="color: #000000">Xmx：最大值&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">-</span><span style="color: #000000">Xmn：最小值&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Windows&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />在catalina.bat最前面加入&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />set&nbsp;JAVA_OPTS</span><span style="color: #000000">=-</span><span style="color: #000000">Xms128m&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">Xmx350m&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />如果用startup.bat启动tomcat,OK设置生效.够成功的分配200M内存.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />但是如果不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,上面的设置就不生效了,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />就是说set&nbsp;JAVA_OPTS</span><span style="color: #000000">=-</span><span style="color: #000000">Xms128m&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">Xmx350m&nbsp;没起作用.上面分配200M内存就OOM了..&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />windows服务&nbsp;执行的是bin\tomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />解决办法:&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache&nbsp;Software&nbsp;Foundation\Procrun&nbsp;</span><span style="color: #000000">2.0</span><span style="color: #000000">\Tomcat6\Parameters\JavaOptions&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />原值为&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">-</span><span style="color: #000000">Dcatalina.home</span><span style="color: #000000">=</span><span style="color: #000000">E:\Tomcat&nbsp;</span><span style="color: #000000">6.0</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">-</span><span style="color: #000000">Dcatalina.base</span><span style="color: #000000">=</span><span style="color: #000000">E:\Tomcat&nbsp;</span><span style="color: #000000">6.0</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">-</span><span style="color: #000000">Djava.endorsed.dirs</span><span style="color: #000000">=</span><span style="color: #000000">E:\Tomcat&nbsp;</span><span style="color: #000000">6.0</span><span style="color: #000000">\common\endorsed&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">-</span><span style="color: #000000">Djava.io.tmpdir</span><span style="color: #000000">=</span><span style="color: #000000">E:\Tomcat&nbsp;</span><span style="color: #000000">6.0</span><span style="color: #000000">\temp&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">-</span><span style="color: #000000">Djava.util.logging.manager</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.juli.ClassLoaderLogManager&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">-</span><span style="color: #000000">Djava.util.logging.config.file</span><span style="color: #000000">=</span><span style="color: #000000">E:\Tomcat&nbsp;</span><span style="color: #000000">6.0</span><span style="color: #000000">\conf\logging.properties&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />加入&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">Xms300m&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">Xmx350m&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />重起tomcat服务,设置生效<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />本文来自CSDN博客，转载请标明出处：http:</span><span style="color: #008000">//</span><span style="color: #008000">blog.csdn.net/peijunlin/archive/2009/06/05/4244401.aspx</span></div>
<img src ="http://www.blogjava.net/gcw633/aggbug/321355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gcw633/" target="_blank">淡淡的回忆</a> 2010-05-19 12:10 <a href="http://www.blogjava.net/gcw633/archive/2010/05/19/321355.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修改j2ee工程名，如何修改tomcat目录下的webapps的工程目录</title><link>http://www.blogjava.net/gcw633/archive/2010/05/19/321331.html</link><dc:creator>淡淡的回忆</dc:creator><author>淡淡的回忆</author><pubDate>Wed, 19 May 2010 02:14:00 GMT</pubDate><guid>http://www.blogjava.net/gcw633/archive/2010/05/19/321331.html</guid><wfw:comment>http://www.blogjava.net/gcw633/comments/321331.html</wfw:comment><comments>http://www.blogjava.net/gcw633/archive/2010/05/19/321331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gcw633/comments/commentRss/321331.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gcw633/services/trackbacks/321331.html</trackback:ping><description><![CDATA[在项目里面找到.mymetadata文件<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&lt;?</span><span style="color: #000000">xml&nbsp;&nbsp;&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">1.0&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;encoding</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">?&gt;</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">project</span><span style="color: #000000">-</span><span style="color: #000000">module&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">WEB&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Test1&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;id</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">myeclipse.1190363759187&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;context</span><span style="color: #000000">-</span><span style="color: #000000">root</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">/Test1&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">修改这里就好了&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;j2ee</span><span style="color: #000000">-</span><span style="color: #000000">spec</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">5.0&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;archive</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Test1.war&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">attributes</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">attribute&nbsp;&nbsp;&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">webrootdir&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">WebRoot&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">attributes</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">project</span><span style="color: #000000">-</span><span style="color: #000000">module</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
然后destroy项目，重新编译部署就可以了
<img src ="http://www.blogjava.net/gcw633/aggbug/321331.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gcw633/" target="_blank">淡淡的回忆</a> 2010-05-19 10:14 <a href="http://www.blogjava.net/gcw633/archive/2010/05/19/321331.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>触发器简析</title><link>http://www.blogjava.net/gcw633/archive/2010/05/18/321303.html</link><dc:creator>淡淡的回忆</dc:creator><author>淡淡的回忆</author><pubDate>Tue, 18 May 2010 09:49:00 GMT</pubDate><guid>http://www.blogjava.net/gcw633/archive/2010/05/18/321303.html</guid><wfw:comment>http://www.blogjava.net/gcw633/comments/321303.html</wfw:comment><comments>http://www.blogjava.net/gcw633/archive/2010/05/18/321303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gcw633/comments/commentRss/321303.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gcw633/services/trackbacks/321303.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">INSTEAD&nbsp;OF&nbsp;触发器<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　AFTER&nbsp;触发器（也叫&#8220;FOR&#8221;触发器）会在触发&nbsp;insert、update&nbsp;或是delect&nbsp;动作之后执行。例如，一个&nbsp;Employees&nbsp;表上的&nbsp;AFTER&nbsp;触发器会在在&nbsp;Employee&nbsp;表上执行一条&nbsp;update&nbsp;语句后激活。因此，AFTER&nbsp;触发器只有在已插入一行或是多行和所有约束已被处理且通过后才触发。INSTEAD&nbsp;OF&nbsp;触发器和&nbsp;AFTER&nbsp;触发器有本质上的不同，因为&nbsp;INSTEAD&nbsp;OF&nbsp;触发器代替触发动作进行激发。就拿同样的例子来说，如果在&nbsp;Emplyees&nbsp;表上有一个&nbsp;INSTEAD&nbsp;OF&nbsp;UPDATE&nbsp;触发器和在这个表上执行一条&nbsp;UPDATE&nbsp;语句，结果是这条&nbsp;UPDATE&nbsp;语句并不会改变&nbsp;Employee&nbsp;表中的任何一行。相反,这条&nbsp;UPDATE&nbsp;语句只有是为了踢离&nbsp;INSTEAD&nbsp;OF&nbsp;UPDATE&nbsp;触发器，这个触发器可能会，也可能不会改变&nbsp;Employees&nbsp;表中的数据。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　因此，怎么决定在合适的时间和位置放置&nbsp;INSTEAD&nbsp;OF&nbsp;触发器呢？有几个关键的因素在做决定是值得考虑的。AFTER&nbsp;触发器多用在动作必须在表中数据发生改变之后才执行后情情况。比如，AFTER&nbsp;触发器可以用于将对数据作任何变动的日志记录在一个相对独立的审计表中。INTEAD&nbsp;OF&nbsp;触发器也能做同样的工作。但是&nbsp;INSTEAD&nbsp;OF&nbsp;触发器在这个情况下的效率比较低，因为更新动作只能在将它发生的动作准确地记录在审计表之后才允许执行。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　一般来说，只要不影响数据的修改，AFTER&nbsp;触发器比&nbsp;INSTEAD&nbsp;OF&nbsp;触发器更有效率。在对数据进行计算或是对数据的修改作为一个整体提交或是作为一个整体回退的情况下，AFTER&nbsp;触发器也是一个很好的选择。例如，存在这样一条规则：对在&nbsp;Products&nbsp;表的产品价格的变动超过30％的必须回退。AFTER&nbsp;触发器能很漂亮地完成这个工作，它利用已插入同已删除的表中的产品价格作比较，然后在有必要的时回滚事务。这些都是&nbsp;AFTER&nbsp;触发器的理想条件，但有时&nbsp;INSTEAD&nbsp;OF会更好些。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　INSTEAD&nbsp;OF&nbsp;触发器有一个很大的特点——就是它允许你在某个表或视图上用多个复杂的查询操作来代替单一的查询。跟&nbsp;AFTER&nbsp;触发器只能对表起作用不同，INSTEAD&nbsp;OF&nbsp;触发器可以同时对表和视图起作用。我常常被问到怎么样去解决这种情况：有一个多表组成的视图，如何对该视图进行一次更新。如果视图包含有关键字段和包含有基本表的某些字段，这只是简单的更新基本表。但是，当有视图中包含有多个基本表示，逻辑上的更新比单单一个&nbsp;UPDATE&nbsp;语句会更复杂。因此，你是怎么利用什么可以替代的工具来解决这个问题的呢？其中一个方法就是将一个INSTEAD&nbsp;OF&nbsp;触发器放在视图上。INSTEAD&nbsp;OF&nbsp;触发器可以定义在一个或多个表上.INSTEAD&nbsp;OF&nbsp;触发器就能转开在多个基本表中修改的范围.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　例如，如果一个视图将&nbsp;Customers、Products、orders&nbsp;和&nbsp;OrderDteils&nbsp;等表合并成一个视图，并利用视图通过程序在屏幕上来显示所有的数据。更新操作便允许用来代替这个视图，假如存在一个这个样的视图：它包含&nbsp;Northwind&nbsp;数据库中的四个表，并且被命名为vwCustomersOrdersOrderDetailsProducts，它看起来像这样(Figure&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)：&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Figure&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;连接&nbsp;Customers&nbsp;及其&nbsp;Order&nbsp;Details&nbsp;的视图&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />CREATE&nbsp;VIEW&nbsp;vwCustomersOrdersOrderDetailsProducts<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />AS<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;&nbsp;&nbsp;&nbsp;c.CustomerID,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.CompanyName,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o.OrderID,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o.OrderDate,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;od.UnitPrice,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;od.Quantity,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;od.Discount,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.ProductID,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.ProductName<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;Customers&nbsp;c<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER&nbsp;JOIN&nbsp;Orders&nbsp;o&nbsp;ON&nbsp;c.CustomerID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;o.CustomerID&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER&nbsp;JOIN&nbsp;[Order&nbsp;Details]&nbsp;od&nbsp;ON&nbsp;o.OrderID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;od.OrderID&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER&nbsp;JOIN&nbsp;Products&nbsp;p&nbsp;ON&nbsp;od.ProductID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;p.ProductID<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />GO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　vwCustomersOrdersOrderDetailsProducts&nbsp;视图连接着四个表，并且每个表都暴露一个取样字段。必须记住的一点是，当你设计一个含有&nbsp;INSTEAD&nbsp;OF&nbsp;UPDATE&nbsp;的触发器时，将每个表的主关键字段包含在SELECT语句中是很有益的做法。即使这些字段在应用程序不会用到，它们也以在&nbsp;INSTEAD&nbsp;OF&nbsp;触发器中用来定位将要被修改的行，然后对基表作相应的修改。假设你打算允许更新该视图以便按非关键字过滤基表。更新代码应该写在&nbsp;INSTEAD&nbsp;OF&nbsp;UPDATE&nbsp;触发器中，让触发器去更新&nbsp;Customers&nbsp;表中的&nbsp;CompnayName&nbsp;列，Orders&nbsp;表中的&nbsp;OrderDate&nbsp;列，Order&nbsp;Details&nbsp;表的&nbsp;UnitPrice&nbsp;和&nbsp;Quantity&nbsp;列以及在&nbsp;Products&nbsp;表中的&nbsp;ProductName&nbsp;列。在这种情况下，使用&nbsp;AFTER&nbsp;触发器就不适合了，而&nbsp;INSTEAD&nbsp;OF&nbsp;触发器则是一个很好的选择，参见&nbsp;Figure&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">：&nbsp;Figure&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;用&nbsp;INSTEAD&nbsp;OF&nbsp;触发器更新视图<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />CREATE&nbsp;TRIGGER&nbsp;tr_vwCustomersOrdersOrderDetailsProducts_IO_U&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ON&nbsp;vwCustomersOrdersOrderDetailsProducts<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;INSTEAD&nbsp;OF&nbsp;UPDATE<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />AS<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;—&nbsp;更新&nbsp;Customers<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;UPDATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Customers<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;SET&nbsp;&nbsp;&nbsp;&nbsp;CompanyName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i.CompanyName&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;&nbsp;&nbsp;&nbsp;inserted&nbsp;i&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER&nbsp;JOIN&nbsp;Customers&nbsp;c&nbsp;ON&nbsp;i.CustomerID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;c.CustomerID&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;—&nbsp;更新&nbsp;Orders<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;UPDATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Orders<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;SET&nbsp;&nbsp;&nbsp;&nbsp;OrderDate&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i.OrderDate<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;&nbsp;&nbsp;&nbsp;inserted&nbsp;i&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER&nbsp;JOIN&nbsp;Orders&nbsp;o&nbsp;ON&nbsp;i.OrderID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;o.OrderID&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;—&nbsp;更新&nbsp;Order&nbsp;Details<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;UPDATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Order&nbsp;Details]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;SET&nbsp;&nbsp;&nbsp;&nbsp;UnitPrice&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i.UnitPrice,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Quantity&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i.Quantity<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;&nbsp;&nbsp;&nbsp;inserted&nbsp;i&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER&nbsp;JOIN&nbsp;[Order&nbsp;Details]&nbsp;od&nbsp;ON&nbsp;i.OrderID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;od.OrderID&nbsp;AND&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.ProductID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;od.ProductID<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;—&nbsp;更新&nbsp;Products<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;UPDATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Products<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;SET&nbsp;&nbsp;&nbsp;&nbsp;ProductName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i.ProductName<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;&nbsp;&nbsp;&nbsp;inserted&nbsp;i&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER&nbsp;JOIN&nbsp;Products&nbsp;p&nbsp;ON&nbsp;i.ProductID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;p.ProductID<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />GO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　注意在&nbsp;Figure&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;中的&nbsp;INSTEAD&nbsp;OF&nbsp;UPDATE&nbsp;触发器包含了四个&nbsp;UPDATE&nbsp;语句。每个&nbsp;UPDATE语句目的都是为了对其中一个基表中的非关键字段进行修改。在&nbsp;UPDATE&nbsp;语句中包含了每个表中的关键字段对应于视图中的字段。这样就允许&nbsp;UPDATE&nbsp;语句在相应的表中定位对应的列并只对这些列作修改。下面的&nbsp;UPDATE&nbsp;语句将对&nbsp;INSTEAD&nbsp;OF&nbsp;触发器进行测试：&nbsp;UPDATE&nbsp;&nbsp;&nbsp;vwCustomersOrdersOrderDetailsProducts&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SET&nbsp;&nbsp;&nbsp;&nbsp;Quantity&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">100</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UnitPrice&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">20</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompanyName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">''''</span><span style="color: #000000">Fake&nbsp;Name</span><span style="color: #000000">''''</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OrderDate&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">''''</span><span style="color: #000000">11</span><span style="color: #000000">/</span><span style="color: #000000">23</span><span style="color: #000000">/</span><span style="color: #000000">2001</span><span style="color: #000000">''''</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProductName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">''''</span><span style="color: #000000">Widget</span><span style="color: #000000">''''</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />WHERE&nbsp;&nbsp;&nbsp;&nbsp;OrderID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10265</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />AND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProductID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">17</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;　　<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　如果你（通过视图或是表自身）检查相应表中的值，很明显，这些值已被更新了。当然，对INSTEAD　OF&nbsp;触发器作一些改变会使其有不同的结果。例如，不存在写一个触发器去改变四个基表的需求，因此，可以将触发器中的一个或是多个&nbsp;UPDATE&nbsp;语句删去。假设&nbsp;INSTEAD　OF&nbsp;触发器仅仅是为了更新&nbsp;Order&nbsp;Details&nbsp;表的值，这就会仅仅更新在&nbsp;Order&nbsp;Details&nbsp;表中的字段，而忽视任何在其他基表上的修改。在这种情况下，在&nbsp;Customers,Products&nbsp;或是&nbsp;Orders&nbsp;表中不会产生任何错误同时也不会发生任何改变。当然，如果这三个表中的某些字段发生改变的话，会发生报错。如我呆会在这篇文章会讨论的一样，UPDATE&nbsp;和&nbsp;COLUMNS＿UPDATED&nbsp;函数是个检测哪些字段发生改变的理想的方法。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　Figure&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;也演示了怎么写一个触发器修改多行记录。注意到&nbsp;UPDATE&nbsp;语句如何按关键字连接被插入的表和各个基表。这就保证更新是对所有的行，这些行在视图中被原有的&nbsp;UPDATE&nbsp;语句修改。通过循环被插入表的记录行也能完成该操作。不管怎么样，通常避免使用游标是个好主意，尤其是在使用触发器时更应如此。SQL&nbsp;SERVER&nbsp;被设计成以数据集的方式来处理数据，而游标是为一次处理一个数据行而设计的。在触发器中使用游标会降低程序的性能，因此，最好能使用象&nbsp;Figure&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;中那样更有效代替方法或使用一个子查询。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　另一个改变&nbsp;INSERT&nbsp;OF&nbsp;UPDATE&nbsp;触发器的方法就是使其在视图的&nbsp;INSERT&nbsp;和&nbsp;DELETE&nbsp;语句中激发。这也就意味着在适当的地方，触发器会实现&nbsp;INSERT&nbsp;或是&nbsp;DELETE&nbsp;的功能。但是必须记隹的是&nbsp;DELETE&nbsp;可能会删除多个记录，这关键在于触发器是怎样写的。因此，检查触发器的需求，在实现之前进行测试，这些做法十分重要。INSERT　OF&nbsp;UPDATE&nbsp;触发器可写在视图中，因此它可插入一个新的顾客、订单、详细的订单和产品。这个触发器也可以用来在插入一个新顾客之前检查这个顾客是否是新的(对其它记录的操作也是一样)。当采用的是&nbsp;INSTEAD&nbsp;OF&nbsp;触发器时存在有许多机会，但是，当然，触发器是为解决相应的需求这才是它的本质。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　通常，当引用一张表的&nbsp;UPDATE&nbsp;语句试图去赋值一个计算型的，恒等型的或是时间戳型的列时，会产生一个错误，因为这些列的值必须是由SQL&nbsp;SERVER来决定的。这些列必须被包含在UPDATE&nbsp;语句中以便能满足列不能为空的要求。但是，如果&nbsp;UPDATE&nbsp;语句用&nbsp;INSTEAD&nbsp;OF&nbsp;触发器引用一个视图，定义在触发器中的逻辑可以旁路掉这些列来避免错误的发生。为了达到这个目的，触发器决不能尝试去更新基表中相应列的值(让它们远离&nbsp;UPDATE&nbsp;语句的&nbsp;SET&nbsp;从句)。当某一条被处理的记录来自被插入的表时，计算型的，恒等型的或是时间戳型的列可以用一个虚假值以满足不为空值的要求，这时，INSTEAD&nbsp;OF&nbsp;触发器将忽略这些值，正确的值由&nbsp;SQL&nbsp;SERVER&nbsp;设置。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;更新分开的列&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　INSTEAD&nbsp;OF&nbsp;触发器也很普遍地用于更新基表中计算型的列。例如，假设存在有如下这样一个叫&nbsp;vwOrdersOrderDetailsProducts&nbsp;的视图：&nbsp;CREATE&nbsp;VIEW&nbsp;vwOrdersOrderDetailsProducts<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />AS<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;&nbsp;&nbsp;&nbsp;o.OrderID,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o.OrderDate,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;od.UnitPrice&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;od.Quantity&nbsp;AS&nbsp;ExtendedPrice,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.ProductID,&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.ProductName<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;Orders&nbsp;o<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER&nbsp;JOIN&nbsp;[Order&nbsp;Details]&nbsp;od&nbsp;ON&nbsp;o.OrderID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;od.OrderID&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER&nbsp;JOIN&nbsp;Products&nbsp;p&nbsp;ON&nbsp;od.ProductID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;p.ProductID<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />GO<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　这个视图揭示了一个计算型的列叫ExtendedPrice，这个列不能被直接被更新，因为它不能将其自己变为表中独立的一列。虽然你可实现这样一个生意规则，在这个规则中ExtendedPrice通过这个视图来修改，Quantity列不应修改，但是UnitPrice可被修改(我知道这条规则有点奇怪，但我可以忍受这点)。可以写一个INSTEAD&nbsp;OF&nbsp;UPDATE触发器来增强这条生意规则，其代码如下所示：&nbsp;CREATE&nbsp;TRIGGER&nbsp;tr_vwOrdersOrderDetailsProducts_IO_U&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ON&nbsp;vwOrdersOrderDetailsProducts<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;INSTEAD&nbsp;OF&nbsp;UPDATE<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />AS<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;UPDATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Order&nbsp;Details]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;SET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UnitPrice&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i.ExtendedPrice&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000">&nbsp;Quantity<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inserted&nbsp;i&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INNER&nbsp;JOIN&nbsp;[Order&nbsp;Details]&nbsp;od&nbsp;ON&nbsp;i.OrderID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;od.OrderID&nbsp;AND&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.ProductID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;od.ProductID<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />GO<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　这些代码揭示了怎样用一个在INSTEAD　OF　触发器中的逻辑来代替对一个计算型列的更新。假设一个产品在一张特定的定单表中Quantity为100而ExtendedPrice要更新为200，这时新的UnitPrice值就变为2。在这种情况下，在执行一个对ExtendedPrice列进行修改的UPDATE语句时，最终的结果是UnitPrice被赋为ExtendedPrice除以Quantity的商。下面的代码可以用来测试这种情况：&nbsp;UPDATE&nbsp;&nbsp;&nbsp;vwOrdersOrderDetailsProducts<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SET&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtendedPrice&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">200</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />WHERE&nbsp;&nbsp;&nbsp;&nbsp;OrderID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10265</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />AND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProductID&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">17</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;检查改变<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　在INSTEAD　OF和AFTER触发器中都有UPDATE和COLUMNS＿UPDATE功能，这二种功能允许由触发器决定哪些字段由触发器的语句来改变。例如，下面的触发器阻止任何对Employees表中的lastname字段进行修改。在这里，UPDATE功能用来决定对哪些对字段的修改可以执行。如果超出发生了改变（而又是不允许修改的）就会产生一个错误。PAISERR&nbsp;OR功能和事务就会回退，回退会撤消所做的任何修改。UPDATE功能都可以在AGTER触发器和INSTEAD&nbsp;OF触发器中工作，而不是在外部工作。&nbsp;CREATE&nbsp;TRIGGER&nbsp;tr_Employees_U&nbsp;on&nbsp;Employees&nbsp;AFTER&nbsp;UPDATE&nbsp;AS<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;UPDATE(lastname)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;BEGIN<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RAISERROR&nbsp;(</span><span style="color: #000000">''''</span><span style="color: #000000">cannot&nbsp;change&nbsp;lastname</span><span style="color: #000000">''''</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ROLLBACK&nbsp;TRAN<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURN<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;END<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />GO<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　&nbsp;UPDATE功能是为了判断单一列是否被INSERT或是UPDATE语句修改过。UPDATE(列)是一个用来检测更新的标准的方法。但是当需要用来他检测多列是否受到INSERT或UPDATE语句的影响时就变得更低效率。而这恰恰是COLUM_UPDATE功能的一个亮点。COLUMN_UPDATE功能返回一个位掩码来判断特定的列是否被修改过。位掩码是包含在被表中被修改的列中的一个比特，目的是为了在表模式中定义这些列。如果一行修改，这比特位的值就为1，否则为0。不像从右到左地读字节的常规方法，位掩码是从左往右读。例如，下面的代码提示了一个在Order&nbsp;Details表中的触发器，这个触发器是为了检测Quantity和UnitPrice二个字段是否被修改过。&nbsp;CREATE&nbsp;TRIGGER&nbsp;tr_OrderDetails&nbsp;ON&nbsp;[Order&nbsp;Details]&nbsp;AFTER&nbsp;UPDATE<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />AS<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;(COLUMNS_UPDATED()&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">12</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;BEGIN<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RAISERROR&nbsp;(</span><span style="color: #000000">''''</span><span style="color: #000000">Cannot&nbsp;change&nbsp;both&nbsp;UnitPrice&nbsp;and&nbsp;Quantity&nbsp;at&nbsp;the&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;same&nbsp;time</span><span style="color: #000000">''''</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ROLLBACK&nbsp;TRAN<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;END<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />GO<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　如果这个字段都被修改了，就会产生一个错误，同时事务也将回滚。就拿Order&nbsp;Details表来说，COLUMN_UPDATED功能返回代表Order&nbsp;Details表中字段的五个字节。只要第三和第四个字段被修改，上面这种情况就会发生，它检测这些位是不是已赋值为1.当第三和第四位都打开的庆，它就如：</span><span style="color: #000000">00110</span><span style="color: #000000">。L因这个位掩码代表2次幂，第一位表示1，第二位表示2，第三位表示4，第四位表示8，第五位表示16（是的，这是和正常二进制数相反的顺序）；因此只表示UnitPrice和Quantity字段被修改位掩码的值为00110，这个值为12（</span><span style="color: #000000">4</span><span style="color: #000000">+</span><span style="color: #000000">8</span><span style="color: #000000">）。请注意，这个触发器只有在UnitPrice和Quantity字段被修改才会将事务回滚。如果其他字段修改的话，位掩码就会不一样，因此就不等于整数12了。如果触发器被修改为禁止对这二个字段修改即使对其他字段也禁止，它就可重新编写为如下:&nbsp;ALTER&nbsp;TRIGGER&nbsp;tr_OrderDetails&nbsp;ON&nbsp;[Order&nbsp;Details]&nbsp;AFTER&nbsp;UPDATE<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />AS<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;(COLUMNS_UPDATED()&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">12</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;BEGIN<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RAISERROR&nbsp;(</span><span style="color: #000000">''''</span><span style="color: #000000">Cannot&nbsp;change&nbsp;both&nbsp;UnitPrice&nbsp;and&nbsp;Quantity&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;the&nbsp;same&nbsp;time</span><span style="color: #000000">''''</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ROLLBACK&nbsp;TRAN<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;END<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />GO<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　请注意　COLUMN_UPDATED　功能现在是怎么去检测位掩码的但是否小于等于12.如果你修改联系UnitPrice,Quantity和Discount列的话，位掩码就变为00111，代表整数28（</span><span style="color: #000000">4</span><span style="color: #000000">+</span><span style="color: #000000">8</span><span style="color: #000000">+</span><span style="color: #000000">16</span><span style="color: #000000">）。当在一个表中不止有8个列时，这个函数就会先返回包含了前八列的五个字节，而第从第九到第十六就会在第二个字节中，以此类推。这个功能在决定允许哪些列可以被更新比只对第列进行更新的UPDATE功能更有用。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　如前期所描述的一样，在潢足特定条件规则条件下，触发器可以回滚事务，当一个含有回滚的触发器在SQL脚本中执行时，整个处理将被取消。因此，被触发动作修改的的所有数据将由ROLLBACK&nbsp;TRANSACION语句回滚。虽然一个回滚并不阻止触发执行SQL语句所有在ROLLBACK&nbsp;TRANSACION语句后面的语句都会被执行&nbsp;。特别是当一个触发器继续执行回滚语句后面的语句时，在回滚以后所作的任何修改都不会回滚。发生这种情况是因为当在触发器中执行了一个ROLLBACK&nbsp;TRANSACTION时，所以有的事务都被取消。因此当一个新的查询语句被执行时，一个新的不同与以前事务的事务就重新开始。因此，一般情况下，建议不要在ROLLBACK&nbsp;TRANSACTION语句后放置任何语句。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　像回滚不会自动退出触发器一样，它也不会自动产生错误。如果必须回滚且必会产生错误，PAISERR&nbsp;OR语句应该放在退出触发器代码前，紧跟在回滚后.&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;结束语&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　在对同一个表的数据所作的修改会激发同样的INSTEAD&nbsp;OF触发器，这种触发器不会递归调用。因此,如果在Emplyee表中有一个INSTEAD&nbsp;OF触发器,P这个触发器是用来更新Employee表的，这并不会发生调用同一个INSTEAD&nbsp;OF触发器。如果允许这种递旭的话，更新应该被禁止。INSTEAD&nbsp;OF触发器和AFTER触发器的另一个不同在于Text,Ntext和Image列可以出现在被更新和删除的表的触发器中。这些二进制列会以如VARCAHAR数值出现在更新和删除表的触发器中，这种是可行的，但这并不是他们原始的数据类型。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　这有一个有用的存储过程</span><span style="color: #000000">-</span><span style="color: #000000">sp_helptrigger&nbsp;系统存储过程</span><span style="color: #000000">-</span><span style="color: #000000">来检测触发器。他返回定义在表上的触发器类型，这个表是传递给存储过程的。用这种方法，你可以看到哪些触发器和某个表有关联，什么操作动触发这些触发器和判断触发器是AFTER触发器还是INSTEAD&nbsp;OF触发器。&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />　　在最后二栏中，我已经讨论了AFTER触发器和INSTEAD&nbsp;OF触发器的多个方面。当然，还有许多情形下他们很有用，还有许多使用时机也没有提出来。当一个触发器必须查询其他表的情况下，触发器就会没有什么效率了。在这些情况下，触发器的性能和触发动作会受到很大损害。当使用得好时，触发器是一个很棒的工具，但是必须保证在使用他们之前必须对你的程序作一个全面的测试。&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.blogjava.net/gcw633/aggbug/321303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gcw633/" target="_blank">淡淡的回忆</a> 2010-05-18 17:49 <a href="http://www.blogjava.net/gcw633/archive/2010/05/18/321303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ssh调用存储过程</title><link>http://www.blogjava.net/gcw633/archive/2010/05/18/321284.html</link><dc:creator>淡淡的回忆</dc:creator><author>淡淡的回忆</author><pubDate>Tue, 18 May 2010 07:48:00 GMT</pubDate><guid>http://www.blogjava.net/gcw633/archive/2010/05/18/321284.html</guid><wfw:comment>http://www.blogjava.net/gcw633/comments/321284.html</wfw:comment><comments>http://www.blogjava.net/gcw633/archive/2010/05/18/321284.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gcw633/comments/commentRss/321284.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gcw633/services/trackbacks/321284.html</trackback:ping><description><![CDATA[存储过程：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">create&nbsp;PROCEDURE&nbsp;[dbo].[GetUserS]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />(<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />@empno&nbsp;nvarchar(</span><span style="color: #000000">32</span><span style="color: #000000">),</span><span style="color: #000000">--</span><span style="color: #000000">输入参数<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />@pwd&nbsp;nvarchar(</span><span style="color: #000000">32</span><span style="color: #000000">)</span><span style="color: #000000">--</span><span style="color: #000000">输入参数<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />)&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />AS<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />BEGIN&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />select&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;from&nbsp;[user]&nbsp;where&nbsp;empno</span><span style="color: #000000">=</span><span style="color: #000000">@empno&nbsp;and&nbsp;pwd</span><span style="color: #000000">=</span><span style="color: #000000">@pwd&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />END<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />GO<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">--</span><span style="color: #000000">这个存储过程输出的结果是名字和密码相符合的整一条记录</span></div>
数据访问层中的代码<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_45_342_Open_Image" onclick="this.style.display='none'; Codehighlighter1_45_342_Open_Text.style.display='none'; Codehighlighter1_45_342_Closed_Image.style.display='inline'; Codehighlighter1_45_342_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_45_342_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_45_342_Closed_Text.style.display='none'; Codehighlighter1_45_342_Open_Image.style.display='inline'; Codehighlighter1_45_342_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;getUser(String&nbsp;name,&nbsp;String&nbsp;pass)&nbsp;</span><span id="Codehighlighter1_45_342_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_45_342_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #0000ff">this</span><span style="color: #000000">.getSession();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sql1</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">{call&nbsp;GetUserS(?,?)}</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query&nbsp;query</span><span style="color: #000000">=</span><span style="color: #000000">session.createSQLQuery(sql1);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query.setString(</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;name);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query.setString(</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;pass);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">query.list();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_310_327_Open_Image" onclick="this.style.display='none'; Codehighlighter1_310_327_Open_Text.style.display='none'; Codehighlighter1_310_327_Closed_Image.style.display='inline'; Codehighlighter1_310_327_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_310_327_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_310_327_Closed_Text.style.display='none'; Codehighlighter1_310_327_Open_Image.style.display='inline'; Codehighlighter1_310_327_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(list.size()</span><span style="color: #000000">&gt;</span><span style="color: #000000">0</span><span style="color: #000000">)</span><span id="Codehighlighter1_310_327_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_310_327_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<img src ="http://www.blogjava.net/gcw633/aggbug/321284.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gcw633/" target="_blank">淡淡的回忆</a> 2010-05-18 15:48 <a href="http://www.blogjava.net/gcw633/archive/2010/05/18/321284.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自己写的日期处理类--月份的第一天和最后一天</title><link>http://www.blogjava.net/gcw633/archive/2010/05/05/320134.html</link><dc:creator>淡淡的回忆</dc:creator><author>淡淡的回忆</author><pubDate>Wed, 05 May 2010 09:13:00 GMT</pubDate><guid>http://www.blogjava.net/gcw633/archive/2010/05/05/320134.html</guid><wfw:comment>http://www.blogjava.net/gcw633/comments/320134.html</wfw:comment><comments>http://www.blogjava.net/gcw633/archive/2010/05/05/320134.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gcw633/comments/commentRss/320134.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gcw633/services/trackbacks/320134.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Calendar;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Date;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.GregorianCalendar;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_108_1782_Open_Image" onclick="this.style.display='none'; Codehighlighter1_108_1782_Open_Text.style.display='none'; Codehighlighter1_108_1782_Closed_Image.style.display='inline'; Codehighlighter1_108_1782_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_108_1782_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_108_1782_Closed_Text.style.display='none'; Codehighlighter1_108_1782_Open_Image.style.display='inline'; Codehighlighter1_108_1782_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;DoDate&nbsp;</span><span id="Codehighlighter1_108_1782_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_108_1782_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">当前月份的第一天</span><span style="color: #008000"><br />
<img id="Codehighlighter1_155_506_Open_Image" onclick="this.style.display='none'; Codehighlighter1_155_506_Open_Text.style.display='none'; Codehighlighter1_155_506_Closed_Image.style.display='inline'; Codehighlighter1_155_506_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_155_506_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_155_506_Closed_Text.style.display='none'; Codehighlighter1_155_506_Open_Image.style.display='inline'; Codehighlighter1_155_506_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;String&nbsp;firstDay()</span><span id="Codehighlighter1_155_506_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_155_506_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.text.SimpleDateFormat&nbsp;&nbsp;&nbsp;df&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;java.text.SimpleDateFormat(</span><span style="color: #000000">"</span><span style="color: #000000">yyyy-MM-dd</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GregorianCalendar&nbsp;gc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(GregorianCalendar)&nbsp;Calendar.getInstance();&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gc.setTime(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Date());&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gc.set(Calendar.DAY_OF_MONTH,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;day_first&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;df.format(gc.getTime())</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;00:00:00</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;day_first;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">当前月份的最后一天</span><span style="color: #008000"><br />
<img id="Codehighlighter1_552_887_Open_Image" onclick="this.style.display='none'; Codehighlighter1_552_887_Open_Text.style.display='none'; Codehighlighter1_552_887_Closed_Image.style.display='inline'; Codehighlighter1_552_887_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_552_887_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_552_887_Closed_Text.style.display='none'; Codehighlighter1_552_887_Open_Image.style.display='inline'; Codehighlighter1_552_887_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;String&nbsp;lastDay()</span><span id="Codehighlighter1_552_887_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_552_887_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;cal</span><span style="color: #000000">=</span><span style="color: #000000">Calendar.getInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cal.add(&nbsp;&nbsp;&nbsp;cal.MONTH,</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cal.set(cal.DATE,</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cal.add(cal.DATE,</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.text.SimpleDateFormat&nbsp;&nbsp;&nbsp;df&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;java.text.SimpleDateFormat(</span><span style="color: #000000">"</span><span style="color: #000000">yyyy-MM-dd</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;day_end</span><span style="color: #000000">=</span><span style="color: #000000">df.format(cal.getTime())</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;23:59:59</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;day_end;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">距离当前月份N个月的第一天</span><span style="color: #008000"><br />
<img id="Codehighlighter1_943_1352_Open_Image" onclick="this.style.display='none'; Codehighlighter1_943_1352_Open_Text.style.display='none'; Codehighlighter1_943_1352_Closed_Image.style.display='inline'; Codehighlighter1_943_1352_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_943_1352_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_943_1352_Closed_Text.style.display='none'; Codehighlighter1_943_1352_Open_Image.style.display='inline'; Codehighlighter1_943_1352_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;String&nbsp;firstDay(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n)</span><span id="Codehighlighter1_943_1352_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_943_1352_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.text.SimpleDateFormat&nbsp;&nbsp;&nbsp;df&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;java.text.SimpleDateFormat(</span><span style="color: #000000">"</span><span style="color: #000000">yyyy-MM-dd</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GregorianCalendar&nbsp;gc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(GregorianCalendar)&nbsp;Calendar.getInstance();&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gc.setTime(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Date());&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gc.set(Calendar.MONTH,&nbsp;gc.get(Calendar.MONTH)</span><span style="color: #000000">+</span><span style="color: #000000">n);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gc.set(Calendar.DAY_OF_MONTH,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;day_first&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;df.format(gc.getTime())</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;00:00:00</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;day_first;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">距离当前月份N个月的最后一天</span><span style="color: #008000"><br />
<img id="Codehighlighter1_1408_1780_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1408_1780_Open_Text.style.display='none'; Codehighlighter1_1408_1780_Closed_Image.style.display='inline'; Codehighlighter1_1408_1780_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1408_1780_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1408_1780_Closed_Text.style.display='none'; Codehighlighter1_1408_1780_Open_Image.style.display='inline'; Codehighlighter1_1408_1780_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;String&nbsp;lastDay(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n)</span><span id="Codehighlighter1_1408_1780_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1408_1780_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;cal</span><span style="color: #000000">=</span><span style="color: #000000">Calendar.getInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cal.add(cal.MONTH,</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cal.set(cal.MONTH,&nbsp;cal.get(Calendar.MONTH)</span><span style="color: #000000">+</span><span style="color: #000000">n);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cal.set(cal.DATE,</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cal.add(cal.DATE,</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.text.SimpleDateFormat&nbsp;&nbsp;&nbsp;df&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;java.text.SimpleDateFormat(</span><span style="color: #000000">"</span><span style="color: #000000">yyyy-MM-dd</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;day_end</span><span style="color: #000000">=</span><span style="color: #000000">df.format(cal.getTime())</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;23:59:59</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;day_end;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.blogjava.net/gcw633/aggbug/320134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gcw633/" target="_blank">淡淡的回忆</a> 2010-05-05 17:13 <a href="http://www.blogjava.net/gcw633/archive/2010/05/05/320134.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>详解Java内存机制(堆与栈)的分配--转载</title><link>http://www.blogjava.net/gcw633/archive/2010/04/29/319655.html</link><dc:creator>淡淡的回忆</dc:creator><author>淡淡的回忆</author><pubDate>Thu, 29 Apr 2010 01:39:00 GMT</pubDate><guid>http://www.blogjava.net/gcw633/archive/2010/04/29/319655.html</guid><wfw:comment>http://www.blogjava.net/gcw633/comments/319655.html</wfw:comment><comments>http://www.blogjava.net/gcw633/archive/2010/04/29/319655.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gcw633/comments/commentRss/319655.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gcw633/services/trackbacks/319655.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 堆栈&nbsp;&nbsp;<a href='http://www.blogjava.net/gcw633/archive/2010/04/29/319655.html'>阅读全文</a><img src ="http://www.blogjava.net/gcw633/aggbug/319655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gcw633/" target="_blank">淡淡的回忆</a> 2010-04-29 09:39 <a href="http://www.blogjava.net/gcw633/archive/2010/04/29/319655.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2从一个action跳转到另外一个action中</title><link>http://www.blogjava.net/gcw633/archive/2010/04/23/319206.html</link><dc:creator>淡淡的回忆</dc:creator><author>淡淡的回忆</author><pubDate>Fri, 23 Apr 2010 09:06:00 GMT</pubDate><guid>http://www.blogjava.net/gcw633/archive/2010/04/23/319206.html</guid><wfw:comment>http://www.blogjava.net/gcw633/comments/319206.html</wfw:comment><comments>http://www.blogjava.net/gcw633/archive/2010/04/23/319206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gcw633/comments/commentRss/319206.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gcw633/services/trackbacks/319206.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;登录&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">action&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">login</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">loginAction</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;method</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">executeLogin</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">result&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">success</span><span style="color: #000000">"</span><span style="color: #000000">&gt;/</span><span style="color: #000000">main.jsp</span><span style="color: #000000">&lt;/</span><span style="color: #000000">result</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">result&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">input</span><span style="color: #000000">"</span><span style="color: #000000">&gt;/</span><span style="color: #000000">login.jsp</span><span style="color: #000000">&lt;/</span><span style="color: #000000">result</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">result&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">error</span><span style="color: #000000">"</span><span style="color: #000000">&gt;/</span><span style="color: #000000">login.jsp</span><span style="color: #000000">&lt;/</span><span style="color: #000000">result</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">action</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;流程跳转&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">action&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">liucheng</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">com.gt.actions.LiuchengAction</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;method</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">LiuchengConvert</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">result&nbsp;type</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">chain</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">login</span><span style="color: #000000">&lt;/</span><span style="color: #000000">result</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">result&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">success</span><span style="color: #000000">"</span><span style="color: #000000">&gt;/</span><span style="color: #000000">main.jsp</span><span style="color: #000000">&lt;/</span><span style="color: #000000">result</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">action</span><span style="color: #000000">&gt;</span></div>
&nbsp;<img src="file:///E:/DOCUME~1/guocw/LOCALS~1/Temp/@CDP$WF)9P376C$WG{82CWM.jpg"  alt="" /> 
<img src ="http://www.blogjava.net/gcw633/aggbug/319206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gcw633/" target="_blank">淡淡的回忆</a> 2010-04-23 17:06 <a href="http://www.blogjava.net/gcw633/archive/2010/04/23/319206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2中form提交到action中的中文乱码问题解决办法</title><link>http://www.blogjava.net/gcw633/archive/2010/04/22/319123.html</link><dc:creator>淡淡的回忆</dc:creator><author>淡淡的回忆</author><pubDate>Thu, 22 Apr 2010 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/gcw633/archive/2010/04/22/319123.html</guid><wfw:comment>http://www.blogjava.net/gcw633/comments/319123.html</wfw:comment><comments>http://www.blogjava.net/gcw633/archive/2010/04/22/319123.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/gcw633/comments/commentRss/319123.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gcw633/services/trackbacks/319123.html</trackback:ping><description><![CDATA[方法一：<br />
在struts2-core-2.1.8.1.jar包中路径为struts2-core-2.1.8.1\org\apache \struts2<br />
有一个default.properties 文件,<br />
&nbsp;<img src="file:///E:/DOCUME~1/guocw/LOCALS~1/Temp/@HBD3UYT9}1@V79@RL91(QM.jpg"  alt="" /> <br />
把struts.i18n.encoding=UTF-8改为：<br />
<span style="color: red">struts.i18n.encoding=GBK<br />
<br />
<span style="color: #000000">方法二：<br />
在struts.xml文件内添加常：<span style="color: #0000ff">&lt;</span><span style="color: #800000">constant&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="struts.i18n.encoding"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="GBK"</span><span style="color: #0000ff">/&gt;</span><br />
<br />
&nbsp;<img src="file:///E:/DOCUME~1/guocw/LOCALS~1/Temp/2ZST4U5M]C@ZM@FLKZ95[Q1.jpg"  alt="" /> <br />
<br />
</span></span>
<img src ="http://www.blogjava.net/gcw633/aggbug/319123.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gcw633/" target="_blank">淡淡的回忆</a> 2010-04-22 17:05 <a href="http://www.blogjava.net/gcw633/archive/2010/04/22/319123.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>s2sh整合（二）</title><link>http://www.blogjava.net/gcw633/archive/2010/04/19/318734.html</link><dc:creator>淡淡的回忆</dc:creator><author>淡淡的回忆</author><pubDate>Mon, 19 Apr 2010 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/gcw633/archive/2010/04/19/318734.html</guid><wfw:comment>http://www.blogjava.net/gcw633/comments/318734.html</wfw:comment><comments>http://www.blogjava.net/gcw633/archive/2010/04/19/318734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gcw633/comments/commentRss/318734.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gcw633/services/trackbacks/318734.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: s2sh整合过程（二）&nbsp;&nbsp;<a href='http://www.blogjava.net/gcw633/archive/2010/04/19/318734.html'>阅读全文</a><img src ="http://www.blogjava.net/gcw633/aggbug/318734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gcw633/" target="_blank">淡淡的回忆</a> 2010-04-19 14:41 <a href="http://www.blogjava.net/gcw633/archive/2010/04/19/318734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>