﻿<?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-火焰出林工作室</title><link>http://www.blogjava.net/blameswood/</link><description>程序人生:JAVA Web之路</description><language>zh-cn</language><lastBuildDate>Sat, 02 May 2026 10:46:06 GMT</lastBuildDate><pubDate>Sat, 02 May 2026 10:46:06 GMT</pubDate><ttl>60</ttl><item><title>Spring+Hibernate+Struts </title><link>http://www.blogjava.net/blameswood/articles/189085.html</link><dc:creator>火焰出林</dc:creator><author>火焰出林</author><pubDate>Thu, 27 Mar 2008 09:39:00 GMT</pubDate><guid>http://www.blogjava.net/blameswood/articles/189085.html</guid><wfw:comment>http://www.blogjava.net/blameswood/comments/189085.html</wfw:comment><comments>http://www.blogjava.net/blameswood/articles/189085.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/blameswood/comments/commentRss/189085.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/blameswood/services/trackbacks/189085.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;===============Spring+Hibernate+Struts配置===============spring加载log4j&nbsp;&nbsp; web.xml&nbsp;&nbsp; &lt; context - param &gt; &nbsp;&nbsp;&nbsp;&nbsp; &lt; param - n...&nbsp;&nbsp;<a href='http://www.blogjava.net/blameswood/articles/189085.html'>阅读全文</a><img src ="http://www.blogjava.net/blameswood/aggbug/189085.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/blameswood/" target="_blank">火焰出林</a> 2008-03-27 17:39 <a href="http://www.blogjava.net/blameswood/articles/189085.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Log4j配置 </title><link>http://www.blogjava.net/blameswood/articles/189084.html</link><dc:creator>火焰出林</dc:creator><author>火焰出林</author><pubDate>Thu, 27 Mar 2008 09:38:00 GMT</pubDate><guid>http://www.blogjava.net/blameswood/articles/189084.html</guid><wfw:comment>http://www.blogjava.net/blameswood/comments/189084.html</wfw:comment><comments>http://www.blogjava.net/blameswood/articles/189084.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/blameswood/comments/commentRss/189084.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/blameswood/services/trackbacks/189084.html</trackback:ping><description><![CDATA[<p align="left"><strong><u>Log4j配置<br />
</u></strong>所需文件：1、jar包 ： commons-logging.jar 、log4j-1.2.8.jar 、taglibs-log.jar<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、配置文件：commons-logging.properties 、log4j.properties<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3、标签文件：taglibs-log.tag<br />
<br />
<strong>commons-logging.properties</strong>文件内容：</p>
<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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;##set&nbsp;Log&nbsp;as&nbsp;Log4J<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.apache.commons.logging.Log</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.commons.logging.impl.Log4JCategoryLog<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;##&nbsp;set&nbsp;Log&nbsp;as&nbsp;SimpleLog<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#org.apache.commons.logging.Log</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.commons.logging.impl.SimpleLog</span></div>
<p align="left"><br />
<strong>log4j.properties</strong>文件内容：</p>
<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">#ConversionPattern参数的格式含义<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">c&nbsp;输出日志信息所属的类的全名<br />
<img id="Codehighlighter1_99_119_Open_Image" onclick="this.style.display='none'; Codehighlighter1_99_119_Open_Text.style.display='none'; Codehighlighter1_99_119_Closed_Image.style.display='inline'; Codehighlighter1_99_119_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_99_119_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_99_119_Closed_Text.style.display='none'; Codehighlighter1_99_119_Open_Image.style.display='inline'; Codehighlighter1_99_119_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />#</span><span style="color: #000000">%</span><span style="color: #000000">d&nbsp;输出日志时间点的日期或时间，默认格式为ISO8601，也可以在其后指定格式，比如：</span><span style="color: #000000">%</span><span style="color: #000000">d</span><span id="Codehighlighter1_99_119_Open_Text"><span style="color: #000000">{yyy</span><span style="color: #000000">-</span><span style="color: #000000">MM</span><span style="color: #000000">-</span><span style="color: #000000">dd&nbsp;HH:mm:ss&nbsp;}</span></span><span style="color: #000000">，输出类似：</span><span style="color: #000000">2002</span><span style="color: #000000">-</span><span style="color: #000000">10</span><span style="color: #000000">-</span><span style="color: #000000">18</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">22</span><span style="color: #000000">：</span><span style="color: #000000">10</span><span style="color: #000000">：</span><span style="color: #000000">28</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">f&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">l&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">m&nbsp;输出代码中指定的信息，如log(message)中的message<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#</span><span style="color: #000000">%</span><span style="color: #000000">n&nbsp;输出一个回车换行符，Windows平台为&#8220;\r\n&#8221;，Unix平台为&#8220;\n&#8221;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#</span><span style="color: #000000">%</span><span style="color: #000000">p&nbsp;输出优先级，即DEBUG，INFO，WARN，ERROR，FATAL。如果是调用debug()输出的，则为DEBUG，依此类推<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#</span><span style="color: #000000">%</span><span style="color: #000000">r&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">t&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;LOGGERS&nbsp;##<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#define&nbsp;a&nbsp;logger&nbsp;named&nbsp;helloAppLogger<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.rootLogger</span><span style="color: #000000">=</span><span style="color: #000000">info,console,file<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;APPENDERS&nbsp;##<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#&nbsp;define&nbsp;an&nbsp;appender&nbsp;named&nbsp;console,&nbsp;which&nbsp;is&nbsp;set&nbsp;to&nbsp;be&nbsp;a&nbsp;ConsoleAppender<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.console</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.ConsoleAppender<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;define&nbsp;an&nbsp;appender&nbsp;named&nbsp;file,&nbsp;which&nbsp;is&nbsp;set&nbsp;to&nbsp;be&nbsp;a&nbsp;RollingFileAppender<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.file</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.RollingFileAppender<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.file.File</span><span style="color: #000000">=</span><span style="color: #000000">dada.txt<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;LAYOUTS&nbsp;##<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#&nbsp;assign&nbsp;a&nbsp;SimpleLayout&nbsp;to&nbsp;console&nbsp;appender<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />log4j.appender.console.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.SimpleLayout<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />#&nbsp;assign&nbsp;a&nbsp;PatternLayout&nbsp;to&nbsp;file&nbsp;appender<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="" />log4j.appender.file.layout</span><span style="color: #000000">=</span><span style="color: #000000">org.apache.log4j.PatternLayout<br />
<img id="Codehighlighter1_1067_1087_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1067_1087_Open_Text.style.display='none'; Codehighlighter1_1067_1087_Closed_Image.style.display='inline'; Codehighlighter1_1067_1087_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1067_1087_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1067_1087_Closed_Text.style.display='none'; Codehighlighter1_1067_1087_Open_Image.style.display='inline'; Codehighlighter1_1067_1087_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />log4j.appender.file.layout.ConversionPattern</span><span style="color: #000000">=%</span><span style="color: #000000">d</span><span id="Codehighlighter1_1067_1087_Open_Text"><span style="color: #000000">{yyyy</span><span style="color: #000000">-</span><span style="color: #000000">MM</span><span style="color: #000000">-</span><span style="color: #000000">dd&nbsp;hh:mm:ss}</span></span><span style="color: #000000">&nbsp;[</span><span style="color: #000000">%</span><span style="color: #000000">c]:</span><span style="color: #000000">%</span><span style="color: #000000">p&nbsp;</span><span style="color: #000000">-%</span><span style="color: #000000">c</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">m</span><span style="color: #000000">%</span><span style="color: #000000">n</span></div>
<br />
<strong>新建log4j配置文件载入servlet类:<br />
</strong>
<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"><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.log4j.PropertyConfigurator;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Log4j&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;HttpServlet&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;String&nbsp;CONTENT_TYPE&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">text/html;&nbsp;charset=GBK</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Initialize&nbsp;global&nbsp;variables</span><span style="color: #008000"><br />
</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">void</span><span style="color: #000000">&nbsp;init()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;String&nbsp;prefix&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.getServletContext().getRealPath(</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;String&nbsp;file&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">log4j</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">载入log4j配置文件</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">prefix</span><span style="color: #000000">+</span><span style="color: #000000">file);<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(file</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PropertyConfigurator.configure(prefix</span><span style="color: #000000">+</span><span style="color: #000000">file);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Clean&nbsp;up&nbsp;resources</span><span style="color: #008000"><br />
</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">void</span><span style="color: #000000">&nbsp;destroy()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</span></div>
<strong>web.xml</strong>文件:<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"><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">servlet</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">servlet</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000">log4j</span><span style="color: #000000">&lt;/</span><span style="color: #000000">servlet</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">servlet</span><span style="color: #000000">-</span><span style="color: #0000ff">class</span><span style="color: #000000">&gt;</span><span style="color: #000000">derek.log4j.Log4j</span><span style="color: #000000">&lt;/</span><span style="color: #000000">servlet</span><span style="color: #000000">-</span><span style="color: #0000ff">class</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">init</span><span style="color: #000000">-</span><span style="color: #000000">param</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">param</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000">log4j</span><span style="color: #000000">&lt;/</span><span style="color: #000000">param</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">param</span><span style="color: #000000">-</span><span style="color: #000000">value</span><span style="color: #000000">&gt;</span><span style="color: #000000">WEB</span><span style="color: #000000">-</span><span style="color: #000000">INF\classes\log4j.properties</span><span style="color: #000000">&lt;/</span><span style="color: #000000">param</span><span style="color: #000000">-</span><span style="color: #000000">value</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">init</span><span style="color: #000000">-</span><span style="color: #000000">param</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">load</span><span style="color: #000000">-</span><span style="color: #000000">on</span><span style="color: #000000">-</span><span style="color: #000000">startup</span><span style="color: #000000">&gt;</span><span style="color: #000000">1</span><span style="color: #000000">&lt;/</span><span style="color: #000000">load</span><span style="color: #000000">-</span><span style="color: #000000">on</span><span style="color: #000000">-</span><span style="color: #000000">startup</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">servlet</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">servlet</span><span style="color: #000000">-</span><span style="color: #000000">mapping</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">servlet</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000">log4j</span><span style="color: #000000">&lt;/</span><span style="color: #000000">servlet</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">url</span><span style="color: #000000">-</span><span style="color: #000000">pattern</span><span style="color: #000000">&gt;/</span><span style="color: #000000">log4j</span><span style="color: #000000">&lt;/</span><span style="color: #000000">url</span><span style="color: #000000">-</span><span style="color: #000000">pattern</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">servlet</span><span style="color: #000000">-</span><span style="color: #000000">mapping</span><span style="color: #000000">&gt;</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"><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.log4j.Logger;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Log4jTest&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Log4jTest()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Logger&nbsp;log&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Logger.getLogger(</span><span style="color: #0000ff">this</span><span style="color: #000000">.getClass().getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(</span><span style="color: #000000">"</span><span style="color: #000000">log4jDemo</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&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;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log4jTest&nbsp;log4jtest&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Log4jTest();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</span></div>
<img src ="http://www.blogjava.net/blameswood/aggbug/189084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/blameswood/" target="_blank">火焰出林</a> 2008-03-27 17:38 <a href="http://www.blogjava.net/blameswood/articles/189084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate配置文件 </title><link>http://www.blogjava.net/blameswood/articles/189083.html</link><dc:creator>火焰出林</dc:creator><author>火焰出林</author><pubDate>Thu, 27 Mar 2008 09:36:00 GMT</pubDate><guid>http://www.blogjava.net/blameswood/articles/189083.html</guid><wfw:comment>http://www.blogjava.net/blameswood/comments/189083.html</wfw:comment><comments>http://www.blogjava.net/blameswood/articles/189083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/blameswood/comments/commentRss/189083.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/blameswood/services/trackbacks/189083.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"><span style="color: #000000">&lt;?</span> <span style="color: #000000">xml&nbsp;version</span> <span style="color: #000000">=</span> <span style="color: #000000">'</span> <span style="color: #000000">1.0</span> <span style="color: #000000">'</span> <span style="color: #000000">&nbsp;encoding</span> <span style="color: #000000">=</span> <span style="color: #000000">'</span> <span style="color: #000000">UTF-8</span> <span style="color: #000000">'</span> <span style="color: #000000">?&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #000000">&lt;!</span> <span style="color: #000000">DOCTYPE&nbsp;hibernate</span> <span style="color: #000000">-</span> <span style="color: #000000">configuration&nbsp;PUBLIC<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">"</span> <span style="color: #000000">-//Hibernate/Hibernate&nbsp;Configuration&nbsp;DTD&nbsp;3.0//EN</span> <span style="color: #000000">"</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">"</span> <span style="color: #000000">http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
<br />
</span><span style="color: #000000">&lt;!--</span> <span style="color: #000000">&nbsp;Generated&nbsp;by&nbsp;MyEclipse&nbsp;Hibernate&nbsp;Tools.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">--&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #000000">&lt;</span> <span style="color: #000000">hibernate</span> <span style="color: #000000">-</span> <span style="color: #000000">configuration</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
<br />
</span><span style="color: #000000">&lt;</span> <span style="color: #000000">session</span> <span style="color: #000000">-</span> <span style="color: #000000">factory</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">myeclipse.connection.profile</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000">MSSQL</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">connection.url</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000">jdbc:jtds:sqlserver:</span> <span style="color: #008000">//</span> <span style="color: #008000">192.168.56.32:1433/itdb&lt;/property&gt;</span> <span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">connection.username</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;dada</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">connection.password</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000">dada</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">connection.driver_class</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000">net.sourceforge.jtds.jdbc.Driver</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">dialect</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000">org.hibernate.dialect.SQLServerDialect</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">session_factory_name</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000">DerekSessionFactory</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">show_sql</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #0000ff">false</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">hibernate.jdbc.fetch_size</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000">50</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">hibernate.jdbc.batch_size</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000">20</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">mapping&nbsp;resource</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">hbm/OvertimeAdmin.hbm.xml</span> <span style="color: #000000">"</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">/&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">mapping&nbsp;resource</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">hbm/OvertimeAgent.hbm.xml</span> <span style="color: #000000">"</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">/&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">mapping&nbsp;resource</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">hbm/OvertimePermit.hbm.xml</span> <span style="color: #000000">"</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">/&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">mapping&nbsp;resource</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">hbm/OvertimeRecord.hbm.xml</span> <span style="color: #000000">"</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">/&gt;</span> <span style="color: #000000"><br />
<br />
</span><span style="color: #000000">&lt;/</span> <span style="color: #000000">session</span> <span style="color: #000000">-</span> <span style="color: #000000">factory</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
<br />
</span><span style="color: #000000">&lt;/</span> <span style="color: #000000">hibernate</span> <span style="color: #000000">-</span> <span style="color: #000000">configuration</span> <span style="color: #000000">&gt;</span> </div>
<br />
使用连接池的配置<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"><span style="color: #000000">&lt;?</span><span style="color: #000000">xml&nbsp;version</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">1.0</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;encoding</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">UTF-8</span><span style="color: #000000">'</span><span style="color: #000000">?&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;!</span><span style="color: #000000">DOCTYPE&nbsp;hibernate</span><span style="color: #000000">-</span><span style="color: #000000">configuration&nbsp;PUBLIC<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">-//Hibernate/Hibernate&nbsp;Configuration&nbsp;DTD&nbsp;3.0//EN</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<br />
</span><span style="color: #000000">&lt;!--</span><span style="color: #000000">&nbsp;Generated&nbsp;by&nbsp;MyEclipse&nbsp;Hibernate&nbsp;Tools.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">hibernate</span><span style="color: #000000">-</span><span style="color: #000000">configuration</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<br />
</span><span style="color: #000000">&lt;</span><span style="color: #000000">session</span><span style="color: #000000">-</span><span style="color: #000000">factory</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">myeclipse.connection.profile</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">MSSQL</span><span style="color: #000000">&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;<strong>&nbsp;&nbsp;</strong></span><strong><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">connection.datasource</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">java:comp</span><span style="color: #000000">/</span><span style="color: #000000">env</span><span style="color: #000000">/</span><span style="color: #000000">jdbc</span><span style="color: #000000">/</span><span style="color: #000000">itdb</span><span style="color: #000000">&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span></strong><span style="color: #000000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">connection.driver_class</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">net.sourceforge.jtds.jdbc.Driver</span><span style="color: #000000">&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">dialect</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">org.hibernate.dialect.SQLServerDialect</span><span style="color: #000000">&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">session_factory_name</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">DerekSessionFactory</span><span style="color: #000000">&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">show_sql</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #0000ff">false</span><span style="color: #000000">&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hibernate.jdbc.fetch_size</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">50</span><span style="color: #000000">&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">property&nbsp;name</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hibernate.jdbc.batch_size</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">20</span><span style="color: #000000">&lt;/</span><span style="color: #000000">property</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">mapping&nbsp;resource</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hbm/OvertimeAdmin.hbm.xml</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">mapping&nbsp;resource</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hbm/OvertimeAgent.hbm.xml</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">mapping&nbsp;resource</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hbm/OvertimePermit.hbm.xml</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">mapping&nbsp;resource</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">hbm/OvertimeRecord.hbm.xml</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000"><br />
<br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">session</span><span style="color: #000000">-</span><span style="color: #000000">factory</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
<br />
</span><span style="color: #000000">&lt;/</span><span style="color: #000000">hibernate</span><span style="color: #000000">-</span><span style="color: #000000">configuration</span><span style="color: #000000">&gt;</span></div>
<img src ="http://www.blogjava.net/blameswood/aggbug/189083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/blameswood/" target="_blank">火焰出林</a> 2008-03-27 17:36 <a href="http://www.blogjava.net/blameswood/articles/189083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Reflection (JAVA反射) </title><link>http://www.blogjava.net/blameswood/articles/189080.html</link><dc:creator>火焰出林</dc:creator><author>火焰出林</author><pubDate>Thu, 27 Mar 2008 09:35:00 GMT</pubDate><guid>http://www.blogjava.net/blameswood/articles/189080.html</guid><wfw:comment>http://www.blogjava.net/blameswood/comments/189080.html</wfw:comment><comments>http://www.blogjava.net/blameswood/articles/189080.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/blameswood/comments/commentRss/189080.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/blameswood/services/trackbacks/189080.html</trackback:ping><description><![CDATA[Java Reflection (JAVA反射)&nbsp;&nbsp;&nbsp;&nbsp;----转载<br />
<br />
&nbsp;&nbsp;&nbsp; Reflection 是 Java 程序开发语言的特征之一，它允许运行中的 Java 程序对自身进行检查，或者说&#8220;自审&#8221;，并能直接操作程序的内部属性。例如，使用它能获得 Java 类中各成员的名称并显示出来。Java 的这一能力在实际应用中也许用得不是很多，但是在其它的程序设计语言中根本就不存在这一特性。例如，Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。<br />
JavaBean 是 reflection 的实际应用之一，它能让一些工具可视化的操作软件组件。这些工具通过 reflection 动态的载入并取得 Java 组件(类) 的属性。<br />
<br />
1. 一个简单的例子<br />
考虑下面这个简单的例子，让我们看看 reflection 是如何工作的。<br />
import java.lang.reflect.*;<br />
public class DumpMethods {<br />
&nbsp;&nbsp;&nbsp; public static void main(String args[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class c = Class.forName(args[0]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Method m[] = c.getDeclaredMethods();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; m.length; i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(m[i].toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
<p><br />
按如下语句执行：<br />
java DumpMethods java.util.Stack<br />
<br />
它的结果输出为：<br />
public java.lang.Object java.util.Stack.push(java.lang.Object)<br />
public synchronized java.lang.Object java.util.Stack.pop()<br />
public synchronized java.lang.Object java.util.Stack.peek()<br />
public boolean java.util.Stack.empty()<br />
public synchronized int java.util.Stack.search(java.lang.Object)</p>
<p>这样就列出了java.util.Stack 类的各方法名以及它们的限制符和返回类型。</p>
<p>这个程序使用 Class.forName 载入指定的类，然后调用 getDeclaredMethods 来获取这个类中定义了的方法列表。java.lang.reflect.Methods 是用来描述某个类中单个方法的一个类。</p>
<br />
<p>2.开始使用 Reflection<br />
用于 reflection 的类，如 Method，可以在 java.lang.relfect 包中找到。使用这些类的时候必须要遵循三个步骤：第一步是获得你想操作的类的 java.lang.Class 对象。在运行中的 Java 程序中，用 java.lang.Class 类来描述类和接口等。</p>
<p>下面就是获得一个 Class 对象的方法之一：<br />
Class c = Class.forName("java.lang.String");<br />
这条语句得到一个 String 类的类对象。还有另一种方法，如下面的语句：<br />
Class c = int.class;&nbsp;&nbsp; 或者&nbsp;&nbsp; Class c = Integer.TYPE;</p>
<p>它们可获得基本类型的类信息。其中后一种方法中访问的是基本类型的封装类 (如 Integer) 中预先定义好的 TYPE 字段。<br />
<br />
第二步是调用诸如 getDeclaredMethods 的方法，以取得该类中定义的所有方法的列表。<br />
<br />
一旦取得这个信息，就可以进行第三步了——使用 reflection API 来操作这些信息，如下面这段代码：<br />
Class c = Class.forName("java.lang.String");<br />
Method m[] = c.getDeclaredMethods();<br />
System.out.println(m[0].toString());<br />
它将以文本方式打印出 String 中定义的第一个方法的原型。<br />
在下面的例子中，这三个步骤将为使用 reflection 处理特殊应用程序提供例证。</p>
<br />
<p><br />
模拟 instanceof 操作符<br />
得到类信息之后，通常下一个步骤就是解决关于 Class 对象的一些基本的问题。例如，Class.isInstance 方法可以用于模拟 instanceof 操作符：<br />
class A {<br />
}<br />
<br />
public class instance1 {<br />
&nbsp;&nbsp;&nbsp; public static void main(String args[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class cls = Class.forName("A");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean b1 = cls.isInstance(new Integer(37));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(b1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean b2 = cls.isInstance(new A());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(b2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
<br />
在这个例子中创建了一个 A 类的 Class 对象，然后检查一些对象是否是 A 的实例。Integer(37) 不是，但 new A() 是。</p>
<p><br />
3.找出类的方法<br />
找出一个类中定义了些什么方法，这是一个非常有价值也非常基础的 reflection 用法。下面的代码就实现了这一用法：<br />
import java.lang.reflect.*;<br />
public class method1 {<br />
&nbsp;&nbsp;&nbsp; private int f1(Object p, int x) throws NullPointerException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (p == null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new NullPointerException();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return x;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public static void main(String args[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class cls = Class.forName("method1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Method methlist[] = cls.getDeclaredMethods();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; methlist.length; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Method m = methlist[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("name = " + m.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("decl class = " + m.getDeclaringClass());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class pvec[] = m.getParameterTypes();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; pvec.length; j++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("param #" + j + " " + pvec[j]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class evec[] = m.getExceptionTypes();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; evec.length; j++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("exc #" + j + " " + evec[j]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("return type = " + m.getReturnType());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("-----");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p><br />
这个程序首先取得 method1 类的描述，然后调用 getDeclaredMethods 来获取一系列的 Method 对象，它们分别描述了定义在类中的每一个方法，包括 public 方法、protected 方法、package 方法和 private 方法等。如果你在程序中使用 getMethods 来代替 getDeclaredMethods，你还能获得继承来的各个方法的信息。<br />
<br />
取得了 Method 对象列表之后，要显示这些方法的参数类型、异常类型和返回值类型等就不难了。这些类型是基本类型还是类类型，都可以由描述类的对象按顺序给出。<br />
<br />
输出的结果如下：<br />
name = f1<br />
decl class = class method1<br />
param #0 class java.lang.Object<br />
param #1 int<br />
exc #0 class java.lang.NullPointerException<br />
return type = int<br />
-----<br />
name = main<br />
decl class = class method1<br />
param #0 class [Ljava.lang.String;<br />
return type = void<br />
-----</p>
<br />
<p>4.获取构造器信息<br />
获取类构造器的用法与上述获取方法的用法类似，如：<br />
import java.lang.reflect.*;<br />
public class constructor1 {<br />
&nbsp;&nbsp;&nbsp; public constructor1() {<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; protected constructor1(int i, double d) {<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public static void main(String args[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class cls = Class.forName("constructor1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Constructor ctorlist[] = cls.getDeclaredConstructors();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; ctorlist.length; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Constructor ct = ctorlist[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("name = " + ct.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("decl class = " + ct.getDeclaringClass());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class pvec[] = ct.getParameterTypes();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; pvec.length; j++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("param #" + j + " " + pvec[j]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class evec[] = ct.getExceptionTypes();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int j = 0; j &lt; evec.length; j++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("exc #" + j + " " + evec[j]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("-----");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p><br />
这个例子中没能获得返回类型的相关信息，那是因为构造器没有返回类型。<br />
这个程序运行的结果是：<br />
name = constructor1<br />
decl class = class constructor1<br />
-----<br />
name = constructor1<br />
decl class = class constructor1<br />
param #0 int<br />
param #1 double<br />
-----<br />
<br />
5.获取类的字段(域)<br />
找出一个类中定义了哪些数据字段也是可能的，下面的代码就在干这个事情：<br />
import java.lang.reflect.*;<br />
<br />
public class field1 {<br />
&nbsp;&nbsp;&nbsp; private double d;<br />
&nbsp;&nbsp;&nbsp; public static final int i = 37;<br />
&nbsp;&nbsp;&nbsp; String s = "testing";<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String args[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class cls = Class.forName("field1");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Field fieldlist[] = cls.getDeclaredFields();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; fieldlist.length; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Field fld = fieldlist[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("name = " + fld.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("decl class = " + fld.getDeclaringClass());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("type = " + fld.getType());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int mod = fld.getModifiers();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("modifiers = " + Modifier.toString(mod));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("-----");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p><br />
这个例子和前面那个例子非常相似。例中使用了一个新东西 Modifier，它也是一个 reflection 类，用来描述字段成员的修饰语，如&#8220;private int&#8221;。这些修饰语自身由整数描述，而且使用 Modifier.toString 来返回以&#8220;官方&#8221;顺序排列的字符串描述 (如&#8220;static&#8221;在&#8220;final&#8221;之前)。这个程序的输出是：<br />
name = d<br />
decl class = class field1<br />
type = double<br />
modifiers = private<br />
-----<br />
name = i<br />
decl class = class field1<br />
type = int<br />
modifiers = public static final<br />
-----<br />
name = s<br />
decl class = class field1<br />
type = class java.lang.String<br />
modifiers =<br />
-----<br />
<br />
和获取方法的情况一下，获取字段的时候也可以只取得在当前类中申明了的字段信息 (getDeclaredFields)，或者也可以取得父类中定义的字段 (getFields) 。</p>
<br />
<p>6.根据方法的名称来执行方法<br />
文本到这里，所举的例子无一例外都与如何获取类的信息有关。我们也可以用 reflection 来做一些其它的事情，比如执行一个指定了名称的方法。下面的示例演示了这一操作：<br />
import java.lang.reflect.*;<br />
public class method2 {<br />
&nbsp;&nbsp;&nbsp; public int add(int a, int b) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return a + b;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public static void main(String args[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class cls = Class.forName("method2");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class partypes[] = new Class[2];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; partypes[0] = Integer.TYPE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; partypes[1] = Integer.TYPE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Method meth = cls.getMethod("add", partypes);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; method2 methobj = new method2();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object arglist[] = new Object[2];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arglist[0] = new Integer(37);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arglist[1] = new Integer(47);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object retobj = meth.invoke(methobj, arglist);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integer retval = (Integer) retobj;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(retval.intValue());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p><br />
假如一个程序在执行的某处的时候才知道需要执行某个方法，这个方法的名称是在程序的运行过程中指定的 (例如，JavaBean 开发环境中就会做这样的事)，那么上面的程序演示了如何做到。</p>
<p><br />
上例中，getMethod 用于查找一个具有两个整型参数且名为 add 的方法。找到该方法并创建了相应的 Method 对象之后，在正确的对象实例中执行它。执行该方法的时候，需要提供一个参数列表，这在上例中是分别包装了整数 37 和 47 的两个 Integer 对象。执行方法的返回的同样是一个 Integer 对象，它封装了返回值 84。</p>
<p><br />
7.创建新的对象<br />
对于构造器，则不能像执行方法那样进行，因为执行一个构造器就意味着创建了一个新的对象 (准确的说，创建一个对象的过程包括分配内存和构造对象)。所以，与上例最相似的例子如下：<br />
import java.lang.reflect.*;<br />
public class constructor2 {<br />
&nbsp;&nbsp;&nbsp; public constructor2() {<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public constructor2(int a, int b) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("a = " + a + " b = " + b);<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; public static void main(String args[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class cls = Class.forName("constructor2");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class partypes[] = new Class[2];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; partypes[0] = Integer.TYPE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; partypes[1] = Integer.TYPE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Constructor ct = cls.getConstructor(partypes);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object arglist[] = new Object[2];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arglist[0] = new Integer(37);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arglist[1] = new Integer(47);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object retobj = ct.newInstance(arglist);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
<br />
根据指定的参数类型找到相应的构造函数并执行它，以创建一个新的对象实例。使用这种方法可以在程序运行时动态地创建对象，而不是在编译的时候创建对象，这一点非常有价值。</p>
<p><br />
8.改变字段(域)的值<br />
reflection 的还有一个用处就是改变对象数据字段的值。reflection 可以从正在运行的程序中根据名称找到对象的字段并改变它，下面的例子可以说明这一点：<br />
import java.lang.reflect.*;<br />
public class field2 {<br />
&nbsp;&nbsp;&nbsp; public double d;<br />
&nbsp;&nbsp;&nbsp; public static void main(String args[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class cls = Class.forName("field2");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Field fld = cls.getField("d");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; field2 f2obj = new field2();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("d = " + f2obj.d);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fld.setDouble(f2obj, 12.34);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("d = " + f2obj.d);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p><br />
这个例子中，字段 d 的值被变为了 12.34。<br />
9.使用数组<br />
本文介绍的 reflection 的最后一种用法是创建的操作数组。数组在 Java 语言中是一种特殊的类类型，一个数组的引用可以赋给 Object 引用。观察下面的例子看看数组是怎么工作的：<br />
import java.lang.reflect.*;<br />
public class array1 {<br />
&nbsp;&nbsp;&nbsp; public static void main(String args[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class cls = Class.forName("java.lang.String");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object arr = Array.newInstance(cls, 10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Array.set(arr, 5, "this is a test");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String s = (String) Array.get(arr, 5);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(s);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Throwable e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.err.println(e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p><br />
例中创建了 10 个单位长度的 String 数组，为第 5 个位置的字符串赋了值，最后将这个字符串从数组中取得并打印了出来。<br />
<br />
下面这段代码提供了一个更复杂的例子：<br />
import java.lang.reflect.*;<br />
public class array2 {<br />
&nbsp;&nbsp;&nbsp; public static void main(String args[]) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int dims[] = new int[]{5, 10, 15};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object arr = Array.newInstance(Integer.TYPE, dims);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object arrobj = Array.get(arr, 3);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class cls = arrobj.getClass().getComponentType();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(cls);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arrobj = Array.get(arrobj, 5);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Array.setInt(arrobj, 10, 37);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int arrcast[][][] = (int[][][]) arr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(arrcast[3][5][10]);<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
例中创建了一个 5 x 10 x 15 的整型数组，并为处于 [3][5][10] 的元素赋了值为 37。注意，多维数组实际上就是数组的数组，例如，第一个 Array.get 之后，arrobj 是一个 10 x 15 的数组。进而取得其中的一个元素，即长度为 15 的数组，并使用 Array.setInt 为它的第 10 个元素赋值。<br />
<br />
注意创建数组时的类型是动态的，在编译时并不知道其类型。</p>
<img src ="http://www.blogjava.net/blameswood/aggbug/189080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/blameswood/" target="_blank">火焰出林</a> 2008-03-27 17:35 <a href="http://www.blogjava.net/blameswood/articles/189080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EL表达式 </title><link>http://www.blogjava.net/blameswood/articles/189079.html</link><dc:creator>火焰出林</dc:creator><author>火焰出林</author><pubDate>Thu, 27 Mar 2008 09:34:00 GMT</pubDate><guid>http://www.blogjava.net/blameswood/articles/189079.html</guid><wfw:comment>http://www.blogjava.net/blameswood/comments/189079.html</wfw:comment><comments>http://www.blogjava.net/blameswood/articles/189079.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/blameswood/comments/commentRss/189079.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/blameswood/services/trackbacks/189079.html</trackback:ping><description><![CDATA[<div class="postbody">
<li>
<ol>
    <li><a name="A1"></a><font color="#ff6600"><strong>EL脚本语言的配置和支持： </strong></font><br />
    对于一个单个JSP页面，你可以使用定义page指令来设置jsp页面是否支持EL。默认是支持EL(如果要页面不支持EL，请设置为<span class="myp11"><font id="zoom0">isELIgnored=true;</font></span> </li>
</ol>
<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1">
    <tbody>
        <tr>
            <td class="code" style="font-size: 9pt" valign="middle" align="center" bgcolor="#e6e6e6" height="18">
            <ol>
                <li><span class="myp11"><font id="zoom">&lt;%@ page isELIgnored＝"true|false"%&gt;</font> </span></li>
            </ol>
            </td>
        </tr>
    </tbody>
</table>
<ol>
    <li>对于整个JSP应用程序，要修改WEB.XML配置(tomcat5.0.16默认是支持EL的);
    <li><font color="#0066cc">&lt;jsp-property-group&gt;</font>&nbsp;<br />
    &lt;description&gt; For config the ICW sample application &lt;/description&gt; <br />
    &lt;display-name&gt;JSPConfiguration&lt;/display-name&gt; <br />
    &lt;url-pattern&gt;/jsp/datareset.jsp&lt;/url-pattern&gt; <br />
    &lt;el-ignored&gt;true&lt; /<ccid_code> el-ignored&gt; <br />
    &lt;page-encoding&gt;ISO-8859-1&lt;/page-encoding&gt; <br />
    &lt;scripting-invalid&gt;true&lt;/scripting-invalid&gt;<br />
    &lt;include-prelude&gt;/jsp/prelude.jspf&lt;/include-prelude&gt; <br />
    &lt;include-coda&gt;/jsp/coda.jspf&lt;/include-coda&gt;<br />
    <font color="#0066cc">&lt;/jsp-property-group&gt;</font></ccid_code> </li>
</ol>
<li>
<ol>
    <li><a name="A2"></a><font color="#ff6600"><strong>算术运算符演示：</strong> </font><br />
    以下是EL运算符列表，其中empty可以检查某个值是否为空 </li>
</ol>
<table class="clear" cellspacing="1" cellpadding="2" width="75%" align="center" bgcolor="#dddddd" border="0">
    <tbody>
        <tr align="center" bgcolor="#ffffff">
            <td>
            <ol>
                <li><strong>运算符</strong> </li>
            </ol>
            </td>
            <td><strong>说明</strong> </td>
            <td><strong>运算符</strong> </td>
            <td><strong>说明</strong> </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>+</p>
            </td>
            <td>
            <p>加</p>
            </td>
            <td>&gt; 或 gt</td>
            <td>大于</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>-</p>
            </td>
            <td>
            <p>减</p>
            </td>
            <td>&lt;= 或 le</td>
            <td>小于等于</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>*</p>
            </td>
            <td>
            <p>乘</p>
            </td>
            <td>&gt;= 或 ge</td>
            <td>大于等于</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>/ 或 div</p>
            </td>
            <td>
            <p>除</p>
            </td>
            <td>&amp;&amp; 或 and</td>
            <td>逻辑与</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>% 或 mod</p>
            </td>
            <td>
            <p>模（求余）</p>
            </td>
            <td>|| 或 or</td>
            <td>逻辑或</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>== 或 =</p>
            </td>
            <td>
            <p>等于</p>
            </td>
            <td>! 或 not</td>
            <td>逻辑非</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>!= 或 !=</p>
            </td>
            <td>
            <p>不等于</p>
            </td>
            <td>empty</td>
            <td>检查是否为空值</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>&lt; 或 lt</p>
            </td>
            <td>
            <p>小于</p>
            </td>
            <td>a ? b : c</td>
            <td>条件运算符</td>
        </tr>
    </tbody>
</table>
<ol>
    <li>EL表达式使用简单,在网页中"\${}"表示是EL表达式。\${1+1} 显示为 2 </li>
</ol>
<table cellspacing="1" cellpadding="5" width="75%" align="center" bgcolor="#dddddd" border="0">
    <tbody>
        <tr align="center" bgcolor="#ffffff">
            <td>
            <ol>
                <li><strong>EL算术表达式</strong> </li>
            </ol>
            </td>
            <td><strong>运算结果</strong> </td>
            <td><strong>EL 关系运算表达式</strong> </td>
            <td><strong>运算结果</strong> </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${1}</td>
            <td>1</td>
            <td>${1 &lt; 2}</td>
            <td>true</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${1 + 2}</td>
            <td>3</td>
            <td>${1 lt 2}</td>
            <td>true</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${1.2 + 2.3}</td>
            <td>3.5</td>
            <td>${1 &gt; (4/2)}</td>
            <td>false</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${-4 - 2}</td>
            <td>-6</td>
            <td>${4.0 &gt;= 3}</td>
            <td>true</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${21 * 2}</td>
            <td>42</td>
            <td>${4.0 ge 3}</td>
            <td>true</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${10%4}</td>
            <td>2</td>
            <td>${100.0 eq 100}</td>
            <td>true</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${10 mod 4}</td>
            <td>2</td>
            <td>${(10*10) != 100}</td>
            <td>false</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${(1==2) ? 3 : 4}</td>
            <td>4</td>
            <td>${(10*10) ne 100}</td>
            <td>false</td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<li>
<ol>
    <li><a name="A3"></a><strong><font color="#ff6600">隐含对象数据演示：</font> </strong>
    <li>EL 表达式定义了11个隐含对象,使用这11个对象可以很方便的读取到session,cookie,HttpHeader,用户提交表单<code>(</code>param)等 </li>
</ol>
<table class="clear" cellspacing="1" cellpadding="2" width="75%" align="center" bgcolor="#dddddd" border="0">
    <tbody>
        <tr bgcolor="#ffffff">
            <td width="30%">
            <ol>
                <li>
                <div style="text-align: center" align="center"><strong>隐含对象</strong> </div>
                </li>
            </ol>
            </td>
            <td>
            <p style="text-align: center" align="center"><strong>内容</strong> </p>
            </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>applicationScope</p>
            </td>
            <td>
            <p style="layout-grid-mode: char">应用程序范围内的scoped变量组成的集合</p>
            </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>cookie</p>
            </td>
            <td>
            <p style="layout-grid-mode: char">所有cookie组成的集合</p>
            </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>header</p>
            </td>
            <td>
            <p style="layout-grid-mode: char">HTTP请求头部，字符串</p>
            </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>headerValues</p>
            </td>
            <td>
            <p style="layout-grid-mode: char">HTTP请求头部，字符串集合</p>
            </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>initParam</p>
            </td>
            <td>
            <p style="layout-grid-mode: char">全部应用程序参数名组成的集合</p>
            </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>pageContext</p>
            </td>
            <td>
            <p style="layout-grid-mode: char">当前页面的javax.servlet.jsp.PageContext对象</p>
            </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>pageScope</p>
            </td>
            <td>
            <p style="layout-grid-mode: char">页面范围内所有对象的集合</p>
            </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>param</p>
            </td>
            <td>
            <p style="layout-grid-mode: char">所有请求参数字符串组成的集合</p>
            </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>paramValues</p>
            </td>
            <td>
            <p style="layout-grid-mode: char">所有作为字符串集合的请求参数</p>
            </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>requestScope</p>
            </td>
            <td>
            <p style="layout-grid-mode: char">所有请求范围的对象的集合</p>
            </td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>
            <p>sessionScope</p>
            </td>
            <td>
            <p style="layout-grid-mode: char">所有会话范围的对象的集合</p>
            </td>
        </tr>
    </tbody>
</table>
<ol>
    <li>下面是获取HTTP访问头部数据和用户提交数据的示例 </li>
</ol>
<table cellspacing="1" cellpadding="5" width="75%" align="center" bgcolor="#dddddd" border="0">
    <tbody>
        <tr bgcolor="#ffffff">
            <td width="30%">
            <ol>
                <li>EL表达式 </li>
            </ol>
            </td>
            <td>运算结果</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${header["host"]}<br />
            </td>
            <td>这里得到HTTP连接头部的host值</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${header["accept"]}</td>
            <td>这里获得HTTP头部的accept值</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${header["user-agent"]}</td>
            <td>这里获得HTTP头部的user-agent值</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td colspan="2" height="24"><a name="B4"></a>以下可以读取用户提交的信息,假设用户提交信息为 ?name=myname&amp;alies=now.net.cn(这里有两种访问方式,一种是使用[]来进行访问,另外一种是使用" "来进行访问，两种访问效果是一样的。)</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${param["name"] }</td>
            <td>&nbsp;myname</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${param.name} </td>
            <td>&nbsp;myname</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td>${param["alies"] }</td>
            <td>&nbsp;now.net.cn</td>
        </tr>
        <tr bgcolor="#ffffff">
            <td height="4">${param.alies}</td>
            <td height="4">now.net.cn</td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p>eg:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000"> ${empty(requestScope.backpath)?'admin_TcAction.do?method=findFinish':requestScope.backpath}</font></p>
</li>
</div>
<img src ="http://www.blogjava.net/blameswood/aggbug/189079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/blameswood/" target="_blank">火焰出林</a> 2008-03-27 17:34 <a href="http://www.blogjava.net/blameswood/articles/189079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate one-to-many学习笔记 </title><link>http://www.blogjava.net/blameswood/articles/189078.html</link><dc:creator>火焰出林</dc:creator><author>火焰出林</author><pubDate>Thu, 27 Mar 2008 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/blameswood/articles/189078.html</guid><wfw:comment>http://www.blogjava.net/blameswood/comments/189078.html</wfw:comment><comments>http://www.blogjava.net/blameswood/articles/189078.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/blameswood/comments/commentRss/189078.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/blameswood/services/trackbacks/189078.html</trackback:ping><description><![CDATA[<div class="postbody"><font color="#0000ff">EmylinkUpcode&nbsp; 1...................n&nbsp; EmylinkUlink</font>&nbsp;&nbsp; 一对多关系<br />
<br />
1.hbm.xml描述<br />
&nbsp; EmylinkUpcode.hbm.xml<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">
<p><span style="color: #000000">&lt;?xml version="1.0"?&gt;<br />
&lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"<br />
"<a href="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd</a>" &gt;<br />
&lt;hibernate-mapping package="hbm"&gt;<br />
&nbsp;&lt;class&nbsp;name="EmylinkUpcode" table="emylink_upcode"&gt;<br />
&nbsp;&nbsp;&lt;id<br />
&nbsp;&nbsp;&nbsp;name="id"&nbsp;type="integer"&nbsp;column="plink_code"<br />
&nbsp;&nbsp;&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;generator class="org.hibernate.id.IncrementGenerator"/&gt;<br />
&nbsp;&nbsp;&lt;/id&gt;</span></p>
<p><span style="color: #000000">&nbsp;&nbsp;&lt;property<br />
&nbsp;&nbsp;&nbsp;name="account"<br />
&nbsp;&nbsp;&nbsp;column="account"<br />
&nbsp;&nbsp;&nbsp;type="string"<br />
&nbsp;&nbsp;&nbsp;not-null="true"<br />
&nbsp;&nbsp;&nbsp;length="20"<br />
&nbsp;&nbsp;/&gt;<br />
&nbsp;&nbsp;&lt;property<br />
&nbsp;&nbsp;&nbsp;name="plinkName"<br />
&nbsp;&nbsp;&nbsp;column="plink_name"<br />
&nbsp;&nbsp;&nbsp;type="string"<br />
&nbsp;&nbsp;&nbsp;not-null="true"<br />
&nbsp;&nbsp;&nbsp;length="50"<br />
&nbsp;&nbsp;/&gt;<br />
&nbsp;&nbsp;&lt;property<br />
&nbsp;&nbsp;&nbsp;name="plinkExplain"<br />
&nbsp;&nbsp;&nbsp;column="plink_explain"<br />
&nbsp;&nbsp;&nbsp;type="string"<br />
&nbsp;&nbsp;&nbsp;not-null="false"<br />
&nbsp;&nbsp;&nbsp;length="100"<br />
&nbsp;&nbsp;/&gt;<br />
&nbsp;&nbsp;&lt;property<br />
&nbsp;&nbsp;&nbsp;name="typeCode"<br />
&nbsp;&nbsp;&nbsp;column="type_code"<br />
&nbsp;&nbsp;&nbsp;type="string"<br />
&nbsp;&nbsp;&nbsp;not-null="false"<br />
&nbsp;&nbsp;&nbsp;length="8"<br />
&nbsp;&nbsp;/&gt;<br />
&nbsp;<br />
&nbsp;&nbsp;&lt;set name="emylinkUlinks" inverse="true" <font color="#ff0000">lazy="true"&nbsp; </font><font color="#800080">cascade="all"</font>&gt;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &lt;key column="plink_code"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;one-to-many class="EmylinkUlink"/&gt;<br />
&nbsp;&nbsp;&lt;/set&gt;</span></p>
<p><span style="color: #000000">&nbsp;&lt;/class&gt;&nbsp;<br />
&lt;/hibernate-mapping&gt;<br />
</span></p>
<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: 36.26%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; height: 122px; background-color: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">操作级联（<font color="#800080">cascade</font>）关系。<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="" />all&nbsp;:&nbsp;所有情况下均进行级联操作。<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />none：所有情况下均不进行级联操作。<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />save</span><span style="color: #000000">-</span><span style="color: #000000">update:在执行save</span><span style="color: #000000">-</span><span style="color: #000000">update时<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="" />delete：在执行delete时进行级联操作。</span></div>
</div>
<br />
&nbsp;EmylinkUlink.hbm.xml
<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">
<p>&lt;?xml version="1.0"?&gt;<br />
&lt;!DOCTYPE hibernate-mapping PUBLIC<br />
&nbsp;"-//Hibernate/Hibernate Mapping DTD//EN"<br />
&nbsp;"<a href="http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd</a>" &gt;</p>
<p>&lt;hibernate-mapping package="hbm"&gt;<br />
&nbsp;&lt;class<br />
&nbsp;&nbsp;name="EmylinkUlink"<br />
&nbsp;&nbsp;table="emylink_ulink"<br />
&nbsp;&gt;<br />
&nbsp;&nbsp;&lt;id<br />
&nbsp;&nbsp;&nbsp;name="id"<br />
&nbsp;&nbsp;&nbsp;type="integer"<br />
&nbsp;&nbsp;&nbsp;column="id"<br />
&nbsp;&nbsp;&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;generator class="org.hibernate.id.IncrementGenerator"/&gt;<br />
&nbsp;&nbsp;&lt;/id&gt;</p>
<p>&nbsp;&nbsp;&lt;property<br />
&nbsp;&nbsp;&nbsp;name="account"<br />
&nbsp;&nbsp;&nbsp;column="account"<br />
&nbsp;&nbsp;&nbsp;type="string"<br />
&nbsp;&nbsp;&nbsp;not-null="true"<br />
&nbsp;&nbsp;&nbsp;length="20"<br />
&nbsp;&nbsp;/&gt;<br />
&nbsp;&nbsp;&lt;property<br />
&nbsp;&nbsp;&nbsp;name="link"<br />
&nbsp;&nbsp;&nbsp;column="link"<br />
&nbsp;&nbsp;&nbsp;type="string"<br />
&nbsp;&nbsp;&nbsp;not-null="true"<br />
&nbsp;&nbsp;&nbsp;length="200"<br />
&nbsp;&nbsp;/&gt;<br />
&nbsp;&nbsp;&lt;property<br />
&nbsp;&nbsp;&nbsp;name="linkName"<br />
&nbsp;&nbsp;&nbsp;column="link_name"<br />
&nbsp;&nbsp;&nbsp;type="string"<br />
&nbsp;&nbsp;&nbsp;not-null="true"<br />
&nbsp;&nbsp;&nbsp;length="20"<br />
&nbsp;&nbsp;/&gt;<br />
&nbsp;&nbsp;&lt;property<br />
&nbsp;&nbsp;&nbsp;name="explain"<br />
&nbsp;&nbsp;&nbsp;column="explain"<br />
&nbsp;&nbsp;&nbsp;type="string"<br />
&nbsp;&nbsp;&nbsp;not-null="false"<br />
&nbsp;&nbsp;&nbsp;length="500"<br />
&nbsp;&nbsp;/&gt;<br />
&nbsp;&nbsp;&lt;property<br />
&nbsp;&nbsp;&nbsp;name="indate"<br />
&nbsp;&nbsp;&nbsp;column="indate"<br />
&nbsp;&nbsp;&nbsp;type="date"<br />
&nbsp;&nbsp;&nbsp;not-null="true"<br />
&nbsp;&nbsp;&nbsp;length="16"<br />
<font color="#a52a2a">&nbsp;&nbsp; insert="false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //不参与插入操作<br />
&nbsp;&nbsp; update="false"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //不参与更新操作<br />
</font>&nbsp;&nbsp;/&gt;<br />
&nbsp;&nbsp;&lt;property<br />
&nbsp;&nbsp;&nbsp;name="sort"<br />
&nbsp;&nbsp;&nbsp;column="sort"<br />
&nbsp;&nbsp;&nbsp;type="string"<br />
&nbsp;&nbsp;&nbsp;not-null="false"<br />
&nbsp;&nbsp;&nbsp;length="3"<br />
&nbsp;&nbsp;/&gt;<br />
&nbsp;&nbsp;&lt;property<br />
&nbsp;&nbsp;&nbsp;name="private"<br />
&nbsp;&nbsp;&nbsp;column="private"<br />
&nbsp;&nbsp;&nbsp;type="string"<br />
&nbsp;&nbsp;&nbsp;not-null="false"<br />
&nbsp;&nbsp;&nbsp;length="1"<br />
&nbsp;&nbsp;/&gt;<br />
&nbsp;&nbsp;&lt;many-to-one<br />
&nbsp;&nbsp;&nbsp;name="plinkCode"<br />
&nbsp;&nbsp;&nbsp;column="plink_code"<br />
&nbsp;&nbsp;&nbsp;class="EmylinkUpcode"<br />
&nbsp;&nbsp;&nbsp;not-null="true"<br />
&nbsp;&nbsp;&gt;<br />
&nbsp;&nbsp;&lt;/many-to-one&gt;<br />
&nbsp;&lt;/class&gt;&nbsp;<br />
&lt;/hibernate-mapping&gt;</p>
</div>
<br />
2.POJO对象<br />
&nbsp; EmylinkUpcode.java
<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: #008000">//</span><span style="color: #008000">略<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;primary&nbsp;key</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;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.lang.Integer&nbsp;id;<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;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;fields</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;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.lang.String&nbsp;account;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.lang.String&nbsp;plinkName;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.lang.String&nbsp;plinkExplain;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.lang.String&nbsp;typeCode;<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;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;collections</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;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.util.Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">hbm.EmylinkUlink</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;emylinkUlinks;<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: #008000">//</span><span style="color: #008000">略</span></div>
<br />
&nbsp; EmylinkUlink.java
<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: #008000">//</span><span style="color: #008000">略</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;hashCode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Integer.MIN_VALUE;<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;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;primary&nbsp;key</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;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.lang.Integer&nbsp;id;<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;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;fields</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;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.lang.String&nbsp;account;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.lang.String&nbsp;link;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.lang.String&nbsp;linkName;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.lang.String&nbsp;explain;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.util.Date&nbsp;indate;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.lang.String&nbsp;sort;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;java.lang.String&nbsp;m_private;<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;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;many&nbsp;to&nbsp;one</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;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;hbm.EmylinkUpcode&nbsp;plinkCode;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">略</span></div>
<br />
通过EmylinkUpcode加载EmylinkUlink(<font color="#ffa500" size="2">注意EmylinkUpcode.hbm.xml中声明了延迟加载</font>)<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"><span style="color: #000000">Session&nbsp;session&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;EmylinkSessionFactory.currentSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query&nbsp;q&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;session.createQuery(</span><span style="color: #000000">"</span><span style="color: #000000">from&nbsp;EmylinkUpcode&nbsp;where&nbsp;account='derek'</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;l&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;q.list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EmylinkUpcode&nbsp;eu&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;&nbsp;(EmylinkUpcode)l.get(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(eu.getPlinkName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">Hibernate.initialize(eu.getEmylinkUlinks());</span><span style="color: #008000">//</span><span style="color: #008000">当延迟加载lazy=true时，强制加载及联对象</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set&nbsp;ul&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;eu.getEmylinkUlinks();&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator</span><span style="color: #000000">&lt;</span><span style="color: #000000">EmylinkUlink</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;it&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ul.iterator();</span><span style="color: #008000">//</span><span style="color: #008000">lazy=true并且不使用强制加载，则此时才真真及联加载</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(it.hasNext()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(it.next().getLinkName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;EmylinkSessionFactory.closeSession();&nbsp;&nbsp;<br />
</span></div>
<p><font color="#ff0000">* 延迟加载</font>&nbsp;&nbsp;&nbsp;<br />
&nbsp; &nbsp;如果lazy=true(延迟加载), 加载EmylinkUpcode时,hibernate不会立即加载EmylinkUlink,只有当(Iterator<span style="color: #000000">&lt;</span><span style="color: #000000">EmylinkUlink</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;it&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ul.iterator();</span>)执行时,hibernate才加载EmylinkUlink实例;&nbsp;如果在加载前就关闭session,则报异常<font color="#ff0000">LazyInitializationException&nbsp;<font color="#000000">;&nbsp;可以使用</font></font><font color="#0000ff">Hibernate.initialize(Object o)</font><font color="#000000">强制及联加载<br />
<br />
<u><font color="#c60a00">*J2SE5.0</font><font color="#800080">的泛型 </font></u></font><font color="#0000ff"></font></p>
<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"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setEmylinkUlinks&nbsp;(java.util.Set</span><span style="color: #000000">&lt;</span><span style="color: #000000">hbm.EmylinkUlink</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;emylinkUlinks)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.emylinkUlinks&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;emylinkUlinks;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<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"><span style="color: #000000">Iterator</span><span style="color: #000000">&lt;</span><span style="color: #000000">EmylinkUlink</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;it&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ul.iterator();</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(it.hasNext()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EmylinkUlink&nbsp;el&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;it.next();</span><span style="color: #008000">//</span><span style="color: #008000">无需进行强制类型转换</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(el.getLinkName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<p><font size="2">emylinkUlinks集合中只能存放EmylinkUlink对象，从集合中获取对象无需再类型转换<br />
</font>&nbsp;<br />
struts+spring+hibernate关于hibernate中lazy="true"的问题。web.xml中用&nbsp;&nbsp;&nbsp;</p>
<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"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">filter</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000">openSessionInViewFilter</span><span style="color: #000000">&lt;/</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #0000ff">class</span><span style="color: #000000">&gt;</span><span style="color: #000000">org.springframework.orm.hibernate.support.OpenSessionInViewFilter</span><span style="color: #000000">&lt;/</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #0000ff">class</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">filter</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #000000">mapping</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000">openSessionInViewFilter</span><span style="color: #000000">&lt;/</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #000000">name</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">url</span><span style="color: #000000">-</span><span style="color: #000000">pattern</span><span style="color: #000000">&gt;*</span><span style="color: #000000">.</span><span style="color: #0000ff">do</span><span style="color: #000000">&lt;/</span><span style="color: #000000">url</span><span style="color: #000000">-</span><span style="color: #000000">pattern</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">filter</span><span style="color: #000000">-</span><span style="color: #000000">mapping</span><span style="color: #000000">&gt;</span></div>
<p>&nbsp; 它的原理就是：打开页面的时候打开session，一直到页面装载完毕才关闭session，这样就解决了lazy="true"时session&nbsp;&nbsp; is&nbsp;&nbsp; closed的问题。<br />
&nbsp; 关于OpenSessionInViewFilter 延迟加载失效问题 <a href="http://www.javaeye.com/topic/15057">http://www.javaeye.com/topic/15057</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenSessionInView的效率问题&nbsp; <a href="http://www.javaeye.com/topic/17501" target="blank">http://www.javaeye.com/topic/17501</a><br />
</p>
</div>
<img src ="http://www.blogjava.net/blameswood/aggbug/189078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/blameswood/" target="_blank">火焰出林</a> 2008-03-27 17:33 <a href="http://www.blogjava.net/blameswood/articles/189078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux下配置cvs服务器 </title><link>http://www.blogjava.net/blameswood/articles/189077.html</link><dc:creator>火焰出林</dc:creator><author>火焰出林</author><pubDate>Thu, 27 Mar 2008 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/blameswood/articles/189077.html</guid><wfw:comment>http://www.blogjava.net/blameswood/comments/189077.html</wfw:comment><comments>http://www.blogjava.net/blameswood/articles/189077.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/blameswood/comments/commentRss/189077.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/blameswood/services/trackbacks/189077.html</trackback:ping><description><![CDATA[<div class="postbody">
<p>一 CVS<a href="http://www.chinahtml.com/systems/" target="_blank">服务器</a>的安装： <br />
1。查看你的操作系统上是否安装了CVS：<br />
#&gt; rpm -qa|grep cvs </p>
<p>如果没有安装你可以在Redhat 第2张光盘上找到<br />
<br />
2。建立cvs用户组： </p>
<p>#&gt; groupadd cvs </p>
<p>3。建立cvs组的cvsroot用户和所属的目录： </p>
<p>#&gt; useradd -g cvs -G cvs &#8211;d /cvsroot cvsroot </p>
<p>4。为cvsroot用户添加密码： </p>
<p>#&gt; passwd cvsroot </p>
<p>5。改变 /cvsroot/ 的目录属性：</p>
<p>#&gt; chmod &#8211;R 770 /cvsroot </p>
<p>6。改变用户登陆身份： </p>
<p>#&gt; su cvsroot </p>
<p>7。开始创建单个项目： </p>
<p>#&gt; cd /cvsroot <br />
#&gt; mkdir project1 <br />
#&gt;mkdir project2 <br />
8。开始建立仓库： </p>
<p>#&gt; cvs &#8211;d /cvsroot/project1 init <br />
#&gt; cvs &#8211;d /cvsroot/project2 init <br />
#&gt; chmod &#8211;R 770 ./project1/ ./project2/ </p>
<p>9。建立CVS服务启动文件，我们使用xinetd方式： </p>
<p>#&gt; [Crtl]+[d] 切换到root用户身份 <br />
#&gt; cd /etc/xinetd.d <br />
#&gt; vi cvspserver </p>
<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"><span style="color: #000000">service&nbsp;cvspserver&nbsp;<br />
{&nbsp;<br />
disable&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;no&nbsp;<br />
flags&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;REUSE&nbsp;<br />
socket_type&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;stream&nbsp;<br />
wait&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;no&nbsp;<br />
user&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;root&nbsp;<br />
server</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">/</span> <span style="color: #000000">usr</span> <span style="color: #000000">/</span> <span style="color: #000000">bin</span> <span style="color: #000000">/</span> <span style="color: #000000">cvs&nbsp;<br />
server_args</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">-</span> <span style="color: #000000">f&nbsp;</span> <span style="color: #000000">--</span> <span style="color: #000000">allow</span> <span style="color: #000000">-</span> <span style="color: #000000">root</span> <span style="color: #000000">=/</span> <span style="color: #000000">home2</span> <span style="color: #000000">/</span> <span style="color: #000000">cvsroot</span> <span style="color: #000000">/</span> <span style="color: #000000">project1&nbsp;</span> <span style="color: #000000">--</span> <span style="color: #000000">allow</span> <span style="color: #000000">-</span> <span style="color: #000000">root</span> <span style="color: #000000">=/</span> <span style="color: #000000">home2</span> <span style="color: #000000">/</span> <span style="color: #000000">cvsroot</span> <span style="color: #000000">/</span> <span style="color: #000000">project2&nbsp;pserver&nbsp;<br />
log_on_failure&nbsp;</span> <span style="color: #000000">+=</span> <span style="color: #000000">&nbsp;USERID&nbsp;<br />
}</span> </div>
<p>注：由于xinetd的server_args长度限制,当你想运行很多的单个仓库的时候,可以这么做：</p>
<p>#&gt; vi cvspserver </p>
<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"><span style="color: #000000">service&nbsp;cvspserver&nbsp;<br />
{&nbsp;<br />
disable&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;no&nbsp;<br />
flags&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;REUSE&nbsp;<br />
socket_type&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;stream&nbsp;<br />
wait&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;no&nbsp;<br />
user&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;root&nbsp;<br />
server&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">/</span> <span style="color: #000000">cvsroot</span> <span style="color: #000000">/</span> <span style="color: #000000">cvs.run&nbsp;<br />
log_on_failure&nbsp;</span> <span style="color: #000000">+=</span> <span style="color: #000000">&nbsp;USERID&nbsp;<br />
}<br />
<br />
</span></div>
<p>&nbsp;</p>
<p>编写cvs.run脚本 </p>
<p>#&gt; vi /cvsroot/cvs.run </p>
<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">#</span> <span style="color: #000000">!/</span> <span style="color: #000000">bin</span> <span style="color: #000000">/</span> <span style="color: #000000">bash&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">bin</span> <span style="color: #000000">/</span> <span style="color: #000000">cvs&nbsp;</span> <span style="color: #000000">-</span> <span style="color: #000000">f&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">allow</span> <span style="color: #000000">-</span> <span style="color: #000000">root</span> <span style="color: #000000">=/</span> <span style="color: #000000">cvsroot</span> <span style="color: #000000">/</span> <span style="color: #000000">project1&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">allow</span> <span style="color: #000000">-</span> <span style="color: #000000">root</span> <span style="color: #000000">=/</span> <span style="color: #000000">cvsroot</span> <span style="color: #000000">/</span> <span style="color: #000000">project2&nbsp;<br />
<img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />pserver</span> </div>
<p>#&gt;chmod +x /cvsroot/cvs.run </p>
<p>10。加入cvs服务： </p>
<p>#&gt;vi /etc/services </p>
<p>cvspserver 2401/tcp #pserver cvs service <br />
cvspserver 2401/udp #pserver cvs service <br />
11。启动cvs服务： </p>
<p>#&gt; /etc/init.d/xinetd restart </p>
<p>12。检查cvspserver服务是否已经启动： </p>
<p>#&gt; netstat -l |grep cvspserver <br />
应该有如下结果： </p>
<p>tcp 0 0 *:cvspserver *:* LISTEN </p>
<p>二。CVS服务的用户管理： </p>
<p>上面我们已经建立了project1和project2两个CVS仓库，下面我们分别给两个仓库建立cvs用户。 </p>
<p>13。创建可以登陆cvs<a href="http://www.chinahtml.com/systems/" target="_blank">服务器</a>的用户名和密码： </p>
<p>#&gt; su cvsroot <br />
#&gt; vi /cvsroot/project1/CVSROOT/passwd </p>
<p>trotter:*****:cvsroot <br />
mimi:*****:cvsroot </p>
<p>#&gt;vi /cvsroot/project2/CVSROOT/passwd </p>
<p>trotter:*****:cvsroot <br />
gary:*****:cvsroot </p>
<p>这两个文件的意思是有trotter，mimi，gary三个cvs用户，mimi拥有project1的使用权限，gary拥有project2的使用权限，trotter拥有project1和project2的使用权限。登陆后的权限是cvsroot权限。<br />
注意：这里的cvs用户和系统用户是不同的。 </p>
<p>14。*****为密码，由以下文件生成： </p>
<p>#&gt; vi /cvsroot/passwd.pl </p>
<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"><span style="color: #000000">#</span> <span style="color: #000000">!/</span> <span style="color: #000000">usr</span> <span style="color: #000000">/</span> <span style="color: #000000">bin</span> <span style="color: #000000">/</span> <span style="color: #000000">perl&nbsp;<br />
srand&nbsp;(time());&nbsp;<br />
my&nbsp;$randletter&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">"</span> <span style="color: #000000">(int&nbsp;(rand&nbsp;(26))&nbsp;+&nbsp;(int&nbsp;(rand&nbsp;(1)&nbsp;+&nbsp;.5)&nbsp;%&nbsp;2&nbsp;?&nbsp;65&nbsp;:&nbsp;97))</span> <span style="color: #000000">"</span> <span style="color: #000000">;&nbsp;<br />
my&nbsp;$salt&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;sprintf&nbsp;(</span> <span style="color: #000000">"</span> <span style="color: #000000">%c%c</span> <span style="color: #000000">"</span> <span style="color: #000000">,&nbsp;eval&nbsp;$randletter,&nbsp;eval&nbsp;$randletter);&nbsp;<br />
my&nbsp;$plaintext&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;shift;&nbsp;<br />
my&nbsp;$crypttext&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;crypt&nbsp;($plaintext,&nbsp;$salt);&nbsp;<br />
print&nbsp;</span> <span style="color: #000000">"</span> <span style="color: #000000">${crypttext}</span> <span style="color: #000000">"</span> <span style="color: #000000">;</span> </div>
<p>#&gt;chmod a+x /cvsroot/passwd.pl </p>
<p>15。如果你想生成一个密码是&#8220;123456&#8221;，则： </p>
<p>#&gt; /cvsroot/passwd.pl &#8220;123456&#8221; </p>
<p>回车即可得到加密密码,用其替换passwd文件中的***** </p>
<p>16。Ok，cvs现在已经全部安装完成了，如果你想让一个用户拥有project1的权限，你就在/cvsroot/project1/CVSROOT/passwd中给他加入一个用户；如果你想让一个用户同时具有project1和project2的权限，你就给/cvsroot/project1/CVSROOT/passwd和/cvsroot/project2/CVSROOT/passwd里给他加一个用户名和密码相同的用户即可。最后，我们试用一下：</p>
<p>#&gt; cvs -d :pserver:trotter@192.168.1.200:/cvsroot/project1 login </p>
<p>敲入命令回车后提示输入trotter的密码,你按照自己设置的密码输入,如果没有什么错误信息出现就是成功了</p>
</div>
<img src ="http://www.blogjava.net/blameswood/aggbug/189077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/blameswood/" target="_blank">火焰出林</a> 2008-03-27 17:32 <a href="http://www.blogjava.net/blameswood/articles/189077.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring 定时器 </title><link>http://www.blogjava.net/blameswood/articles/SpringTimer.html</link><dc:creator>火焰出林</dc:creator><author>火焰出林</author><pubDate>Thu, 27 Mar 2008 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/blameswood/articles/SpringTimer.html</guid><wfw:comment>http://www.blogjava.net/blameswood/comments/189075.html</wfw:comment><comments>http://www.blogjava.net/blameswood/articles/SpringTimer.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/blameswood/comments/commentRss/189075.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/blameswood/services/trackbacks/189075.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"><span style="color: #000000">&lt;!--1.简单定时--&gt;<br />
&lt;</span> <span style="color: #000000">bean&nbsp;id</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">myTask</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">usish.po.pub.MyTask</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--自己定义的任务extends TimerTask --&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">generatPo</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">ref&nbsp;local</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">generatPO</span> <span style="color: #000000">"</span> <span style="color: #000000">/&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">importData</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">ref&nbsp;local</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">importData</span> <span style="color: #000000">"</span> <span style="color: #000000">/&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #000000">&lt;/</span> <span style="color: #000000">bean</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
<br />
</span><span style="color: #000000">&lt;</span> <span style="color: #000000">bean&nbsp;id</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">timer</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">org.springframework.scheduling.timer.TimerFactoryBean</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">scheduledTimerTasks</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">list</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">ref&nbsp;local</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">scheduledTimerTask_1</span> <span style="color: #000000">"</span> <span style="color: #000000">/&gt; &lt;!--定时器的任务链--&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">list</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #000000">&lt;/</span> <span style="color: #000000">bean</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
<br />
</span><span style="color: #000000">&lt;</span> <span style="color: #000000">bean&nbsp;id</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">scheduledTimerTask_1</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">org.springframework.scheduling.timer.ScheduledTimerTask</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt; &lt;!--任务链启动任务--&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">timerTask</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">ref&nbsp;local</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">myTask</span> <span style="color: #000000">"</span> <span style="color: #000000">/&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">delay</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">value</span> <span style="color: #000000">&gt;</span> <span style="color: #000000">1000</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">value</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">property&nbsp;name</span> <span style="color: #000000">=</span> <span style="color: #000000">"</span> <span style="color: #000000">period</span> <span style="color: #000000">"</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">value</span> <span style="color: #000000">&gt;</span> <span style="color: #000000">50000</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">value</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
&nbsp;&nbsp;</span> <span style="color: #000000">&lt;/</span> <span style="color: #000000">property</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #000000">&lt;/</span> <span style="color: #000000">bean</span> <span style="color: #000000">&gt;</span> <br />
<br />
&lt;!--2.使用Quartz定时--&gt;<br />
&lt;!-- scheduler --&gt;<br />
&nbsp;&lt;bean id="cacheClearStar" class="com.ztgame.memcached.CacheClearStar" /&gt;<br />
&nbsp;&lt;bean id="cacheClearStarJob"<br />
&nbsp;&nbsp;&nbsp;&nbsp; class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="targetObject"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ref local="cacheClearStar" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="targetMethod"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;clear&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&lt;/bean&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;bean id="cacheClearStarTrigger"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.springframework.scheduling.quartz.CronTriggerBean"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="jobDetail"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ref local="cacheClearStarJob" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="cronExpression"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;0 0 0 * * ?&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp; &lt;/bean&gt;<br />
&nbsp; &lt;bean id="scheduler"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;property name="triggers"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ref local="cacheClearStarTrigger" /&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp; &lt;/bean&gt;<br />
&nbsp;&lt;!-- scheduler end --&gt;</div>
<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">一个cron表达式有至少6个（也可能7个）有空格分隔的时间元素。<br />
按顺序依次为 <br />
1.秒（0~59） <br />
2.分钟（0~59） <br />
</span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">3.小时（0~23） </span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt"><br />
4.天（月）（0~31，但是你需要考虑你月的天数） <br />
</span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">5.月（0~11） <br />
</span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">6.天（星期）（1~7 1=SUN 或 SUN，MON，TUE，WED，THU，FRI，SAT） <br />
</span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">7.年份（1970－2099）</span></span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。<br />
由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?. </span></span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">0 0 10,14,16 * * ? 每天上午10点，下午2点，4点<br />
0 0/30 9-17 * * ??? 朝九晚五工作时间内每半小时<br />
0 0 12 ? * WED 表示每个星期三中午12点 </span></span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">有些子表达式能包含一些范围或列表 <br />
</span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">例如：子表达式（天（星期））可以为 &#8220;MON-FRI&#8221;，&#8220;MON，WED，FRI&#8221;，&#8220;MON-WED,SAT&#8221; </span></span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">&#8220;*&#8221;字符代表所有可能的值 <br />
</span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">因此，&#8220;*&#8221;在子表达式（月）里表示每个月的含义，&#8220;*&#8221;在子表达式（天（星期））表示星期的每一天 </span></span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">&#8220;/&#8221;字符用来指定数值的增量 <br />
</span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">例如：在子表达式（分钟）里的&#8220;0/15&#8221;表示从第0分钟开始，每15分钟 ;<br />
</span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">在子表达式（分钟）里的&#8220;3/20&#8221;表示从第3分钟开始，每20分钟（它和&#8220;3，23，43&#8221;）的含义一样 <br />
</span></span></span><br />
<span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">&#8220;？&#8221;字符仅被用于天（月）和天（星期）两个子表达式，表示不指定值 <br />
</span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">当2个子表达式其中之一被指定了值以后，为了避免冲突，需要将另一个子表达式的值设为&#8220;？&#8221; </span></span></span></p>
<p><span style="font-size: 12pt"></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">&#8220;L&#8221; 字符仅被用于天（月）和天（星期）两个子表达式，它是单词&#8220;last&#8221;的缩写 </span></span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">但是它在两个子表达式里的含义是不同的。 </span></span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">在天（月）子表达式中，&#8220;L&#8221;表示一个月的最后一天 ,<br />
</span></span></span><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">在天（星期）自表达式中，&#8220;L&#8221;表示一个星期的最后一天，也就是SAT </span></span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">如果在&#8220;L&#8221;前有具体的内容，它就具有其他的含义了 </span></span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 12pt"><span style="font-size: 10pt">例如：&#8220;6L&#8221;表示这个月的倒数第６天，&#8220;ＦＲＩＬ&#8221;表示这个月的最后一个星期五 </span></span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-size: 12pt">注意：在使用&#8220;L&#8221;参数时，不要指定列表或范围，因为这会导致问题</span></span></span></p>
 <img src ="http://www.blogjava.net/blameswood/aggbug/189075.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/blameswood/" target="_blank">火焰出林</a> 2008-03-27 17:31 <a href="http://www.blogjava.net/blameswood/articles/SpringTimer.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring+hibernate分页查询 </title><link>http://www.blogjava.net/blameswood/articles/Springhibernate.html</link><dc:creator>火焰出林</dc:creator><author>火焰出林</author><pubDate>Thu, 27 Mar 2008 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/blameswood/articles/Springhibernate.html</guid><wfw:comment>http://www.blogjava.net/blameswood/comments/189072.html</wfw:comment><comments>http://www.blogjava.net/blameswood/articles/Springhibernate.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/blameswood/comments/commentRss/189072.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/blameswood/services/trackbacks/189072.html</trackback:ping><description><![CDATA[<span style="color: #008000">/**</span> <span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;TOP查询<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span> <span style="color: #808080">@param</span> <span style="color: #008000">&nbsp;sql&nbsp;String<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span> <span style="color: #808080">@param</span> <span style="color: #008000">&nbsp;top&nbsp;int<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span> <span style="color: #808080">@return</span> <span style="color: #008000">&nbsp;List<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #008000">*/</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">public</span> <span style="color: #000000">&nbsp;List&nbsp;findTop(String&nbsp;sql,&nbsp;</span> <span style="color: #0000ff">int</span> <span style="color: #000000">&nbsp;top)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HibernateTemplate&nbsp;ht&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;</span> <span style="color: #0000ff">this</span> <span style="color: #000000">.getHibernateTemplate();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ht.setMaxResults(top);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">return</span> <span style="color: #000000">&nbsp;ht.find(sql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #008000">/**</span> <span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;分页查询<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span> <span style="color: #808080">@param</span> <span style="color: #008000">&nbsp;sql&nbsp;String<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span> <span style="color: #808080">@param</span> <span style="color: #008000">&nbsp;firstRow&nbsp;int<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span> <span style="color: #808080">@param</span> <span style="color: #008000">&nbsp;maxRow&nbsp;int<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span> <span style="color: #808080">@return</span> <span style="color: #008000">&nbsp;List<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #008000">*/</span> <span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">public</span> <span style="color: #000000">&nbsp;List&nbsp;findPage(</span> <span style="color: #0000ff">final</span> <span style="color: #000000">&nbsp;String&nbsp;sql,</span> <span style="color: #0000ff">final</span> <span style="color: #000000">&nbsp;</span> <span style="color: #0000ff">int</span> <span style="color: #000000">&nbsp;firstRow,</span> <span style="color: #0000ff">final</span> <span style="color: #000000">&nbsp;</span> <span style="color: #0000ff">int</span> <span style="color: #000000">&nbsp;maxRow)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">return</span> <span style="color: #000000">&nbsp;</span> <span style="color: #0000ff">this</span> <span style="color: #000000">.getHibernateTemplate().executeFind(</span> <span style="color: #0000ff">new</span> <span style="color: #000000">&nbsp;HibernateCallback(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">public</span> <span style="color: #000000">&nbsp;Object&nbsp;doInHibernate(Session&nbsp;session)&nbsp;</span> <span style="color: #0000ff">throws</span> <span style="color: #000000">&nbsp;SQLException,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HibernateException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query&nbsp;q&nbsp;</span> <span style="color: #000000">=</span> <span style="color: #000000">&nbsp;session.createQuery(sql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.setFirstResult(firstRow);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q.setMaxResults(maxRow);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">return</span> <span style="color: #000000">&nbsp;q.list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span> 
<img src ="http://www.blogjava.net/blameswood/aggbug/189072.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/blameswood/" target="_blank">火焰出林</a> 2008-03-27 17:25 <a href="http://www.blogjava.net/blameswood/articles/Springhibernate.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring配置总结</title><link>http://www.blogjava.net/blameswood/articles/Spring.html</link><dc:creator>火焰出林</dc:creator><author>火焰出林</author><pubDate>Thu, 27 Mar 2008 09:08:00 GMT</pubDate><guid>http://www.blogjava.net/blameswood/articles/Spring.html</guid><wfw:comment>http://www.blogjava.net/blameswood/comments/189064.html</wfw:comment><comments>http://www.blogjava.net/blameswood/articles/Spring.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/blameswood/comments/commentRss/189064.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/blameswood/services/trackbacks/189064.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: web.xml载入Log4j配置&lt;context-param&gt;&lt;!--Log4j配置 在同一容器中部署多个应用不能使用默认的webAppRootKey,必须指定唯一KEY,以免冲突--&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;webAppRootKey&lt;/param-name&gt;&nbsp;&nb...&nbsp;&nbsp;<a href='http://www.blogjava.net/blameswood/articles/Spring.html'>阅读全文</a><img src ="http://www.blogjava.net/blameswood/aggbug/189064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/blameswood/" target="_blank">火焰出林</a> 2008-03-27 17:08 <a href="http://www.blogjava.net/blameswood/articles/Spring.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>