??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲av日韩精品久久久久久a,亚洲国产婷婷综合在线精品,国产综合激情在线亚洲第一页http://m.tkk7.com/xiekai-blog/archive/2007/11/29/164009.html言w寸言w寸Thu, 29 Nov 2007 07:40:00 GMThttp://m.tkk7.com/xiekai-blog/archive/2007/11/29/164009.htmlhttp://m.tkk7.com/xiekai-blog/comments/164009.htmlhttp://m.tkk7.com/xiekai-blog/archive/2007/11/29/164009.html#Feedback0http://m.tkk7.com/xiekai-blog/comments/commentRss/164009.htmlhttp://m.tkk7.com/xiekai-blog/services/trackbacks/164009.html假设List myList 中存放了n个数据对象,每个数据对象包含m个属性。现在要这n个数据对象按照某一个或几个属性值重新排序,得到排序后的List。ؓ此,可以利用java中的TreeMap来方便地实现?br /> 再具体一些,假设qn个数据对象类型ؓMyEntity, 其中有A, B, C, D, E五个属性,现要依次按照A,  E, B的升序来排序?br />
//排序
Map map = sortMyEntity(myList);
//得到排序后的List
myList = convertMapToList(map);

/**
 *sortMyEntityҎ的实?br />  */
public Map sortMyEntity(List myList) {
    Map sortMap = new TreeMap();
    for (int i = 0; i < myList.size(); i++) {
        MyEntity entity = (MyEntity)myList.get(i);
        String key = entity.getA().toString() + ":" + entity.getE().toString() + ":" + entity.getB().toString();
        sortMap.put(key, entity);
    }
    return sortMap;
}


/**
 *排序后的Map转换回List
 */
public List convertMapToList(Map sortMap) {
    List resultList = new ArrayList();
    Iterator itKey = sortMap.keySet().iterator();
    while (itKey.hasNext()) {
        String key = (String)itKey.next();
        MyEntity entity = (MyEntity)sortMap.get(key);
        resultList.add(entity);
    }
    return resultList;
}

言w寸 2007-11-29 15:40 发表评论
]]>
Weblogicq程重启动命?/title><link>http://m.tkk7.com/xiekai-blog/archive/2007/07/02/127602.html</link><dc:creator>言w寸</dc:creator><author>言w寸</author><pubDate>Mon, 02 Jul 2007 08:42:00 GMT</pubDate><guid>http://m.tkk7.com/xiekai-blog/archive/2007/07/02/127602.html</guid><wfw:comment>http://m.tkk7.com/xiekai-blog/comments/127602.html</wfw:comment><comments>http://m.tkk7.com/xiekai-blog/archive/2007/07/02/127602.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiekai-blog/comments/commentRss/127602.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiekai-blog/services/trackbacks/127602.html</trackback:ping><description><![CDATA[Deploy的时候,有时需要重启weblogicQ方法如下:<br><br>1Q通过Tera Term Proq样的工Pq接服务器。端?3?br>M可以直接用cmd命o行窗口,输入telnet IP 。例如:telnet 11.111.11.11 <br>2Q按照提C,输入用户名和口o<br>3Q登陆成功后Q就可以输入停止、启动weblogic的命令了Q如下:<br>     stop:<br>     sudo /etc/init.d/weblogic stop  <br><br>     start:<br>     sudo /etc/init.d/weblogic start  <br><br>4Q有Ӟstop之后Q进E还没有l束Q还在停止中状态,q时需要等待。可通过下面的命令查看进E是否停止了Q?br>     ps ax|grep <br>    例如Q?ps ax|grep "mfserver\|myserver" <img src ="http://m.tkk7.com/xiekai-blog/aggbug/127602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiekai-blog/" target="_blank">言w寸</a> 2007-07-02 16:42 <a href="http://m.tkk7.com/xiekai-blog/archive/2007/07/02/127602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>取得最开始日期,JAVA中Set和Iterator的用一?/title><link>http://m.tkk7.com/xiekai-blog/archive/2007/05/23/119385.html</link><dc:creator>言w寸</dc:creator><author>言w寸</author><pubDate>Wed, 23 May 2007 05:34:00 GMT</pubDate><guid>http://m.tkk7.com/xiekai-blog/archive/2007/05/23/119385.html</guid><wfw:comment>http://m.tkk7.com/xiekai-blog/comments/119385.html</wfw:comment><comments>http://m.tkk7.com/xiekai-blog/archive/2007/05/23/119385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiekai-blog/comments/commentRss/119385.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiekai-blog/services/trackbacks/119385.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">     </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">画面表示する開始日を判断する為のSET</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">     Set strYmdSet </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> HashSet();<br><br>     strYmdSet.add(strYmd1().toString());<br>     strYmdSet.add(strYmd2().toString());<br>     。。?br>     strYmdSet.add(strYmdn().toString());</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: #000000">    </span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br>     * ゅRトから最の開始日を取得します?br>     *<br>     * </span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000"> strYmdSet 開始日のゅR?br>     * </span><span style="COLOR: #808080">@return</span><span style="COLOR: #008000"> 最の開始?br>     </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String getMinStrYtiYmd(Set strYmdSet) {<br>        String minStrYmd </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">99999999</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><br>        Iterator itr </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> strYmdSet.iterator();<br>        </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (itr.hasNext()) {<br>            String strYmd </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (String) itr.next();<br>            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (strYmd </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) {<br>                strYmd </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">;<br>            }<br>            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (minStrYmd.compareTo(strYmd) </span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) {<br>                minStrYmd </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> strYmd;<br>            }<br>        }<br>        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> minStrYmd;<br>    }</span></div> <img src ="http://m.tkk7.com/xiekai-blog/aggbug/119385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiekai-blog/" target="_blank">言w寸</a> 2007-05-23 13:34 <a href="http://m.tkk7.com/xiekai-blog/archive/2007/05/23/119385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebLogic 如何讄session时旉 http://m.tkk7.com/xiekai-blog/archive/2007/02/13/99695.html言w寸言w寸Tue, 13 Feb 2007 07:17:00 GMThttp://m.tkk7.com/xiekai-blog/archive/2007/02/13/99695.htmlhttp://m.tkk7.com/xiekai-blog/comments/99695.htmlhttp://m.tkk7.com/xiekai-blog/archive/2007/02/13/99695.html#Feedback0http://m.tkk7.com/xiekai-blog/comments/commentRss/99695.htmlhttp://m.tkk7.com/xiekai-blog/services/trackbacks/99695.html1 web.xml

讄WEB应用E序描述Wweb.xml里的<session-timeout>元素。这个g分钟?br />单位Qƈ覆盖weblogic.xml中的TimeoutSecs属?br />  <session-config>
    <session-timeout>54</session-timeout>
  </session-config>
此例表示Session在54分钟后过?br />?lt;session-timeout>讄为-2Q表C将使用在weblogic.xml中设|的
TimeoutSecsq个属性倹{?br />?lt;session-timeout>讄为-1Q表CSession永不过期,而忽略在
weblogic.xml中设|的TimeoutSecs属性倹{?br />该属性值可以通过console控制台来讄

2 weblogic.xml

讄WebLogicҎ部v描述Wweblogic.xml?lt;session-descriptor>元素?br />TimeoutSecs属性。这个gUؓ单位
<session-descriptor>
   <session-param>
      <param-name>TimeoutSecs</param-name>
      <param-value>3600</param-value>
   </session-param>
</session-descriptor>
默认值是3600



言w寸 2007-02-13 15:17 发表评论
]]>
RiAQRich Internet ApplicationQC/B/S架构Q?/title><link>http://m.tkk7.com/xiekai-blog/archive/2006/09/15/69956.html</link><dc:creator>言w寸</dc:creator><author>言w寸</author><pubDate>Fri, 15 Sep 2006 09:46:00 GMT</pubDate><guid>http://m.tkk7.com/xiekai-blog/archive/2006/09/15/69956.html</guid><wfw:comment>http://m.tkk7.com/xiekai-blog/comments/69956.html</wfw:comment><comments>http://m.tkk7.com/xiekai-blog/archive/2006/09/15/69956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiekai-blog/comments/commentRss/69956.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiekai-blog/services/trackbacks/69956.html</trackback:ping><description><![CDATA[ <h3>RiAQRich Internet ApplicationQC/B/S架构Q?br /></h3> <p>Coofucoo  <a >http://blog.csdn.net/coofucoo/archive/2006/03/17/626909.aspx</a></p> <p>RiA是Rich Internet Application的羃写?br />“Rich”代表功能强大,高交互性,高用户体验?br />“Internet”代表方ѝ应用程序部|方便,用户使用方便。跨pȝQ跨语言?/p> <p>其实RiA实际上一U基于Web的C/S架构Q我UC为C/B/SQ。由于有一个客LQ所以RiA应用可以提供强大的功能,让用户体验到高交互性,高用户体验。同ӞRiA又是ZInternet览器的应用Q所以,用户使用RiA非常方便。理x_用户使用RiA应当像现在用普通网一hѝ用户不需要安装Q何的客户端YӞ只要拥有览器。当用户通过览器发出指令,希望q行某种RiA应用E序Ӟ一切都会飞快的建立在客L机器上,像你在Web上点M个页面一栗?/p> <p>目前Q典型的RiA的代表有如下几种技术:<br />MS ClickOnce     <br />Sun Java Web Start<br />Adobe Flash  <br />Ajax</p> <p>RiA实际上代表的是一U回归?/p> <p>最开始流行的C/Sl构Q因为功能强大,而且范围有限Q不需要害怕部|问题。之后随着用户的增加,部v问题来大Q导致B/S模式的生?br />B/S模式虽然功能有限Q但是却使用非常方便。从长期来看Q方便的作用q是非常巨大的。功能可以不断增强,但是如果不方便,吓走所有的客户。实际上观察一下Web的发展,׃发现Q如今百花齐攄Web开发技术,其目的都是ؓ了提高B/S架构的交互性,让他更能适应需要而已?br />不过Q随着目前来多的应用需要一直到Web上,Zl于发现B/S模式的缺炏V各U技术上的硬性问题均限制着B/S模式的发展。从最基本的请?相应模型QHTTP协议Q到所有负载均q行在服务器上的事实Q让我们q切需要一U方式来提高Web的交互能力,但同时又不能丧失它的使用方便性?br />于是QRiA诞生了。RiA是Z览器的C/Sl构。它部分的服务器负载{Ud客户端,同时又不会׃用和部v上的方便性?br />所以说QRiA是一ơ回归,只不q这ơ回归我们没有原C动,相反Q我们找C最佳结合点Q也是C/S和B/S的交集?/p> <img src ="http://m.tkk7.com/xiekai-blog/aggbug/69956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiekai-blog/" target="_blank">言w寸</a> 2006-09-15 17:46 <a href="http://m.tkk7.com/xiekai-blog/archive/2006/09/15/69956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Ant构徏Java目Q箋Q?/title><link>http://m.tkk7.com/xiekai-blog/archive/2006/08/31/66820.html</link><dc:creator>言w寸</dc:creator><author>言w寸</author><pubDate>Thu, 31 Aug 2006 03:42:00 GMT</pubDate><guid>http://m.tkk7.com/xiekai-blog/archive/2006/08/31/66820.html</guid><wfw:comment>http://m.tkk7.com/xiekai-blog/comments/66820.html</wfw:comment><comments>http://m.tkk7.com/xiekai-blog/archive/2006/08/31/66820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiekai-blog/comments/commentRss/66820.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiekai-blog/services/trackbacks/66820.html</trackback:ping><description><![CDATA[q一讲q如何自动运行JUnit试q行自动化测试。我们将JUnit试攑֜test目录?br /><strong>W一步:~译试</strong><br />首先Q在build.xml文g里定义一个单独的构徏目标Q以便编译测试源文g?br />  <font color="#0000ff"><target name="compile-tests" depends="compile"><br />    <javac srcdir="${test.dir}" destdir="${build.test.dir}"><br />      <classpath refid="project.classpath" /><br />    </javac><br />  </target><br /></font>compile-tests目标?lt;javac>d在test.dir目录~译试源文Ӟq将l果cL件放入build.test.dir目录Q用project.classpath路径作ؓ试代码的类路径?br /><strong>W二步:q行试</strong><br />在build.xml文g里定义构建目标,使所有的JUnit试自动q行?br />  <font color="#0000ff"><target name="test" depends="compile-tests"><br />    <junit haltonfailure="true"><br />      <classpath refid="project.classpath" /><br />      <formatter type="brief" usefile="false" /><br />      <batchtest><br />        <fileset dir="${build.test.dir}" <br />          includes="**/*Test.class" /><br />      </batchtest><br />      <sysproperty key="doc.dir"   value="${doc.dir}" /><br />      <sysproperty key="index.dir" value="${index.dir}" /><br />    </junit><br />  </target><br /></font>test目标的depends属性生成与刚定义的compile-tests目标的依存关pR?br />如果构徏成功Q意味着所有的东西不仅都编译过Q还都通过了测试?br />haltonfailure属性设为true会构徏随着M试p|而失败?br />q里我们再次用project.classpath定义了运行JUnit试的类路径?br />下面定义了一个输出格式化器,?lt;formatter> 元素中,使用briefcd来输出每个运行的试用例的名U及其统计信息,仅当试p|时才有更详细的信息(plaincd默认比briefcd输出信息多一些;xmlcd测试结果以XML格式输出Q。将usefile属性D为false会将试l果送往控制収ͼ而不是写入文件?br /><batchtest>d攉从封?lt;fileset>元素中返回的所有测试,q自动创建包含了所有测试的试suite。我们将Ҏ有的试cȝ*Test.java命名U定取名Q这些文件将~译?Test.class文gQ放?lt;fileset>的build.test.dir性质指向的目录中?br />最后,<sysproperty>元素定义pȝ性质Z个键值对Q这些性质可以在测试代码中讉K。这里,试需要知道从哪里扑ֈ文Q以及向哪里攑օ文档的烦引结果,在运行测试时我们传递这些结果,例如Q测试在q行时查看送入的doc.dirpȝ性质来定位项目目录结构中doc目录的绝对\径?br />要运行测试,h行test目标Q?br />$ ant test<br /><strong>最后,打扫战场<br /></strong>我们可以定义一个删除所有构出的Ant目标?br />  <font color="#0000ff"><target name="clean"><br />    <delete dir="${build.dir}" /><br />  </target><br /></font>clean目标使用<delete>d来删除build.dir所指的目录。要删除目录Q请q行clean目标Q?br />$ ant clean<br />冲掉q些构徏输出有积极的作用Q从头开始生成构建,可以发现可能被篏U构建掩盖的错误?br /><br />完整的build.xmlQ?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff"><?</span><span style="COLOR: #ff00ff">xml version="1.0"</span><span style="COLOR: #0000ff">?></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000"><!--</span><span style="COLOR: #008000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  Excerpted from the book, "Pragmatic Project Automation"<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  ISBN 0-9745140-3-9<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  Copyright 2004 The Pragmatic Programmers, LLC.  All Rights Reserved.<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  Visit www.PragmaticProgrammer.com<br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #008000">--></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">project </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="dms"</span><span style="COLOR: #ff0000"> default</span><span style="COLOR: #0000ff">="compile"</span><span style="COLOR: #ff0000"> basedir</span><span style="COLOR: #0000ff">="."</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="build.dir"</span><span style="COLOR: #ff0000">      location</span><span style="COLOR: #0000ff">="build"</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="build.prod.dir"</span><span style="COLOR: #ff0000"> location</span><span style="COLOR: #0000ff">="${build.dir}/prod"</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="build.test.dir"</span><span style="COLOR: #ff0000"> location</span><span style="COLOR: #0000ff">="${build.dir}/test"</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="doc.dir"</span><span style="COLOR: #ff0000">        location</span><span style="COLOR: #0000ff">="doc"</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="index.dir"</span><span style="COLOR: #ff0000">      location</span><span style="COLOR: #0000ff">="index"</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="src.dir"</span><span style="COLOR: #ff0000">        location</span><span style="COLOR: #0000ff">="src"</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="test.dir"</span><span style="COLOR: #ff0000">       location</span><span style="COLOR: #0000ff">="test"</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="vendor.lib.dir"</span><span style="COLOR: #ff0000"> location</span><span style="COLOR: #0000ff">="vendor/lib"</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">path </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="project.classpath"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">pathelement </span><span style="COLOR: #ff0000">location</span><span style="COLOR: #0000ff">="${build.prod.dir}"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">pathelement </span><span style="COLOR: #ff0000">location</span><span style="COLOR: #0000ff">="${build.test.dir}"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">fileset </span><span style="COLOR: #ff0000">dir</span><span style="COLOR: #0000ff">="${vendor.lib.dir}"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">include </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="*.jar"</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">fileset</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">path</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">    <br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">target </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="prepare"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">mkdir </span><span style="COLOR: #ff0000">dir</span><span style="COLOR: #0000ff">="${build.prod.dir}"</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">mkdir </span><span style="COLOR: #ff0000">dir</span><span style="COLOR: #0000ff">="${build.test.dir}"</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">target</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">target </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="compile"</span><span style="COLOR: #ff0000"> depends</span><span style="COLOR: #0000ff">="prepare"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">javac </span><span style="COLOR: #ff0000">srcdir</span><span style="COLOR: #0000ff">="${src.dir}"</span><span style="COLOR: #ff0000"> destdir</span><span style="COLOR: #0000ff">="${build.prod.dir}"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">classpath </span><span style="COLOR: #ff0000">refid</span><span style="COLOR: #0000ff">="project.classpath"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">javac</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">target</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">target </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="compile-tests"</span><span style="COLOR: #ff0000"> depends</span><span style="COLOR: #0000ff">="compile"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">javac </span><span style="COLOR: #ff0000">srcdir</span><span style="COLOR: #0000ff">="${test.dir}"</span><span style="COLOR: #ff0000"> destdir</span><span style="COLOR: #0000ff">="${build.test.dir}"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">classpath </span><span style="COLOR: #ff0000">refid</span><span style="COLOR: #0000ff">="project.classpath"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">javac</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">target</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">target </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="test"</span><span style="COLOR: #ff0000"> depends</span><span style="COLOR: #0000ff">="compile-tests"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">junit </span><span style="COLOR: #ff0000">haltonfailure</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">classpath </span><span style="COLOR: #ff0000">refid</span><span style="COLOR: #0000ff">="project.classpath"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">formatter </span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="brief"</span><span style="COLOR: #ff0000"> usefile</span><span style="COLOR: #0000ff">="false"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">batchtest</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">fileset </span><span style="COLOR: #ff0000">dir</span><span style="COLOR: #0000ff">="${build.test.dir}"</span><span style="COLOR: #ff0000"> <br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />          includes</span><span style="COLOR: #0000ff">="**/*Test.class"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">batchtest</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">sysproperty </span><span style="COLOR: #ff0000">key</span><span style="COLOR: #0000ff">="doc.dir"</span><span style="COLOR: #ff0000">   value</span><span style="COLOR: #0000ff">="${doc.dir}"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">sysproperty </span><span style="COLOR: #ff0000">key</span><span style="COLOR: #0000ff">="index.dir"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="${index.dir}"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">junit</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">target</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">target </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="clean"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">delete </span><span style="COLOR: #ff0000">dir</span><span style="COLOR: #0000ff">="${build.dir}"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">target</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">project</span><span style="COLOR: #0000ff">></span></div><br />下面再D一个实际项目中用到的构建文件的例子Q?br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff"><?</span><span style="COLOR: #ff00ff">xml version="1.0" </span><span style="COLOR: #0000ff">?></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">project </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="JSBook"</span><span style="COLOR: #ff0000"> default</span><span style="COLOR: #0000ff">="compile"</span><span style="COLOR: #ff0000"> basedir</span><span style="COLOR: #0000ff">="."</span><span style="COLOR: #0000ff">><br /></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">environment</span><span style="COLOR: #0000ff">="env"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="src"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="WEB-INF/src"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="classes"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="WEB-INF/classes"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="lib"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="WEB-INF/lib"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"> <br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="dist"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="dist"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">path </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="task.classpath"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">pathelement </span><span style="COLOR: #ff0000">location</span><span style="COLOR: #0000ff">="${classes}"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">pathelement </span><span style="COLOR: #ff0000">location</span><span style="COLOR: #0000ff">="${lib}"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"> <br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000"><!--</span><span style="COLOR: #008000"> Tomcat 5.0.16 Servlet 2.4 API </span><span style="COLOR: #008000">--></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">pathelement </span><span style="COLOR: #ff0000">location</span><span style="COLOR: #0000ff">="${lib}/servlet-api.jar"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #008000"><!--</span><span style="COLOR: #008000"> Tomcat 5.0.16 JSP 2.0 API </span><span style="COLOR: #008000">--></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">pathelement </span><span style="COLOR: #ff0000">location</span><span style="COLOR: #0000ff">="${lib}/jsp-api.jar"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">path</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    <br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">target </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="init"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">Init Complete !</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">ant home = ${ant.home} </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">java home = ${java.home} </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">user home = ${user.home} </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">      <br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">target</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">target </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="compile"</span><span style="COLOR: #ff0000"> depends</span><span style="COLOR: #0000ff">="init"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">javac </span><span style="COLOR: #ff0000">classpathref</span><span style="COLOR: #0000ff">="task.classpath"</span><span style="COLOR: #ff0000"> srcdir</span><span style="COLOR: #0000ff">="${src}"</span><span style="COLOR: #ff0000"> destdir</span><span style="COLOR: #0000ff">="${classes}"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">echo </span><span style="COLOR: #ff0000">level</span><span style="COLOR: #0000ff">="verbose"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">Seen with -verbose</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">echo </span><span style="COLOR: #ff0000">level</span><span style="COLOR: #0000ff">="debug"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">Seen with -debug</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">        <br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">Compilation Complete !</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">echo</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">target</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  <br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">target </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="war"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">jar </span><span style="COLOR: #ff0000">jarfile</span><span style="COLOR: #0000ff">="${dist}/JSPBook.war"</span><span style="COLOR: #ff0000"> basedir</span><span style="COLOR: #0000ff">="."</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">target</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">project</span><span style="COLOR: #0000ff">></span></div>    <br />也许你已l看出来了,q就是〈〈jsp2.0技术手册〉〉里面的build.xml文g啦!<img src ="http://m.tkk7.com/xiekai-blog/aggbug/66820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiekai-blog/" target="_blank">言w寸</a> 2006-08-31 11:42 <a href="http://m.tkk7.com/xiekai-blog/archive/2006/08/31/66820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Ant构徏Java目http://m.tkk7.com/xiekai-blog/archive/2006/08/30/66696.html言w寸言w寸Wed, 30 Aug 2006 09:36:00 GMThttp://m.tkk7.com/xiekai-blog/archive/2006/08/30/66696.htmlhttp://m.tkk7.com/xiekai-blog/comments/66696.htmlhttp://m.tkk7.com/xiekai-blog/archive/2006/08/30/66696.html#Feedback0http://m.tkk7.com/xiekai-blog/comments/commentRss/66696.htmlhttp://m.tkk7.com/xiekai-blog/services/trackbacks/66696.htmlAnt是一个开放源代码的构建工P专门用于构徏Java目?br />Ant入门的最Ҏ的方法就是编写一个构建文?-----build.xml。当Antq行Ӟ会在当前目录下寻扑֐为build.xml的文件?br />
~写Ant构徏文gQ?br />W一步:定义目(project)
在项目根目录下创建build.xml文g。第一行指明其为XML格式Q然后在W二行定义项目?br /><?xml version="1.0"?>
<project name="dms" default="compile" basedir=".">
一个Ant构徏文g定义一个项目,使用<project>元素的name属性命名项目,default属性设为compileQ告诉Ant当你在命令行键入ant而无其他参数Ӟ执行构E的compile步骤。我们稍候将定义此步骤;basedir属性设?."Q告诉AntQ该构徏文g内的全部其他路径都是相对于build.xml文g所在\径而言的?br />W二步:定义性质(property)
下一步,为项目的每一个目录定义性质Q以便让Ant了解目的目录结构?br />  <property name="build.dir"      location="build"/>
  <property name="build.prod.dir" location="${build.dir}/prod"/>
  <property name="build.test.dir" location="${build.dir}/test"/>
  <property name="doc.dir"        location="doc"/>
  <property name="index.dir"      location="index"/>
  <property name="src.dir"        location="src"/>
  <property name="test.dir"       location="test"/>
  <property name="vendor.lib.dir" location="vendor/lib"/>
location属性所指的目录相对?lt;project>元素定义的basedir属性|基目录)?br />使用Ant性质命名相对目录有两个优炏V首先,当Antq行构徏文gӞ会定位build.xml文g所在目录的全部相对目录。第二个好处是,性质可以使构建文件易于维护。例如用build.dir性质指代build目录Q当以后军_更改build目录为classesӞ只要修改build.dir性质的location属性值即可。在构徏文g中所有引用build.dir性质的地方,都将会自动指向新的classes目录?br />W三步:定义路径(path)
下面定义表示目Javac\径的路径?br />  <path id="project.classpath">
    <pathelement location="${build.prod.dir}" />
    <pathelement location="${build.test.dir}" />
    <fileset dir="${vendor.lib.dir}">
      <include name="*.jar"/>
    </fileset>
  </path>
<path>元素创徏路径project.classpath。我们将在构E的~译步骤用到此\径?br />首先Q用<pathelement>元素向\径加入两个构建目录,以便Java~译器可以找到所有的cLӞ然后使用<fileset>元素Q加入所有厂?jar文gx路径QJava~译器可以找到我们用到的厂家cR?br />W四步:定义目标(target)
接着我们定义首个构徏步骤------UCؓ“目标”。该目标创徏~译步骤要存放JavacL件的目录?br />  <target name="prepare">
    <mkdir dir="${build.prod.dir}"/>
    <mkdir dir="${build.test.dir}"/>
  </target>
目标只是定义了一pdd按照指定的顺序执行的有名字的构徏步骤。prepare目标使用<mkdir>d创徏构徏输出目录Q这与在命o行上执行mkdir是等效的。但前者可以工作于M操作pȝ下,不会因ؓ目录已经存在而失败,而且必要时会创徏父目录?br />W五步:定义~译步骤
l于我们可以定义~译步骤了。他编译所有的产品源文Ӟ结果类文g攑ֈprepare目标所生成的目录下?br />  <target name="compile" depends="prepare">
    <javac srcdir="${src.dir}" destdir="${build.prod.dir}">
      <classpath refid="project.classpath" />
    </javac>
  </target>
通过目标的depends属性,可以生成目标间的依存关系Q从而指定目标顺序。该属性值是一个目标名间用逗号隔开的清单?br />例如Qcompile目标使用depends属性来声明与prepare目标的依存关p,q意味着要运行compile目标必须首先q行prepare目标Q以在编译源文g前生成要求的目录。与shell脚本或批处理文gL序执行命o相比Q这是一个很大的优点?br />prepare目标q行后,compile目标q行<javac>dQ从而调用Java~译器。编译器处理src.dir性质所指目录下的全部Java源文Ӟ在build.prod.dir性质所指目录下生成对应的类文g?br /><classpath>元素告诉~译器用project.classpath代表的g为类路径?br />
下面是完整的构徏文gQ?/p>
<? xml version="1.0" ?>
<!--
  Excerpted from the book, "Pragmatic Project Automation"
  ISBN 0-9745140-3-9
  Copyright 2004 The Pragmatic Programmers, LLC.  All Rights Reserved.
  Visit www.PragmaticProgrammer.com
 
-->

< project  name ="dms"  default ="compile"  basedir ="." >
  
  
< property  name ="build.dir"       location ="build" />
  
< property  name ="build.prod.dir"  location ="${build.dir}/prod" />
  
< property  name ="build.test.dir"  location ="${build.dir}/test" />
  
< property  name ="doc.dir"         location ="doc" />
  
< property  name ="index.dir"       location ="index" />
  
< property  name ="src.dir"         location ="src" />
  
< property  name ="test.dir"        location ="test" />
  
< property  name ="vendor.lib.dir"  location ="vendor/lib" />

  
< path  id ="project.classpath" >
    
< pathelement  location ="${build.prod.dir}"   />
    
< pathelement  location ="${build.test.dir}"   />
    
< fileset  dir ="${vendor.lib.dir}" >
      
< include  name ="*.jar" />
    
</ fileset >
  
</ path >     

  
< target  name ="prepare" >
    
< mkdir  dir ="${build.prod.dir}" />
    
< mkdir  dir ="${build.test.dir}" />
  
</ target >


  
< target  name ="compile"  depends ="prepare" >
    
< javac  srcdir ="${src.dir}"  destdir ="${build.prod.dir}" >
      
< classpath  refid ="project.classpath"   />
    
</ javac >
  
</ target >
</ project >

q行构徏Q?br />在命令行环境中,切换至build.xml所在的目录Q运行AntQ?br />D:\MyProject> ant
q行Ant前,L认ANT_HOME环境变量指向你的Ant安装目录Q且PATH环境变量中加入了%ANT_HOME%\bin?br />Antdbuild.xmlQ以预先定义的顺序执行构建步骤(目标Q?img src ="http://m.tkk7.com/xiekai-blog/aggbug/66696.html" width = "1" height = "1" />

言w寸 2006-08-30 17:36 发表评论
]]>
TOMCAT创徏和发布WEB应用(TOMCAT与Java Web开发技术详?W二?阅读W记) http://m.tkk7.com/xiekai-blog/archive/2006/08/22/65011.html言w寸言w寸Tue, 22 Aug 2006 03:00:00 GMThttp://m.tkk7.com/xiekai-blog/archive/2006/08/22/65011.htmlhttp://m.tkk7.com/xiekai-blog/comments/65011.htmlhttp://m.tkk7.com/xiekai-blog/archive/2006/08/22/65011.html#Feedback0http://m.tkk7.com/xiekai-blog/comments/commentRss/65011.htmlhttp://m.tkk7.com/xiekai-blog/services/trackbacks/65011.html

本来准备自己整理的,l果发现|上有现成的Q爽Q省了好多功夫,E作修改Q如下:

TOMCAT 的目录结?/h3>

?/span>    ?/span>

?/span>    q?/span>

/bin

存放 windows ?/span> Linux q_上启动和关闭 Tomcat 的脚本文?/span>

/conf

存放 Tomcat 服务器的各种配置文gQ其中最重要的是 server.xml

/server

包含三个子目录: classes ?/span> lib ?/span> webapps

/server/lib

存放 Tomcat 服务器所需的各U?/span> jar 文gQ只能被Tomcat服务器访问)

/server/webapps

存放 Tomcat 自带的两?/span> WEB 应用Q?/span> admin 应用?/span> manager 应用

/common/lib

存放 Tomcat 服务器以及所?/span> web 应用都可以访问的 jar 文g

/shared/lib

存放所?/span> web 应用都可以访问的 jar 文gQ但是不能被 Tomcat 服务器访问)

/logs

存放 Tomcat 的日志文?/span>

/webapps

当发?/span> Web 应用Ӟ默认情况下把 Web 应用文g放于此目?/span>

/work

Tomcat 把由 JSP 生成?/span> Servlet 放于此目录下


WEB应用的目录结?/font>
假设?/span> <CATALINA_HOME>/webapps 下有 helloapp ?/span> web 应用Q如?/span> Q?/span>

/helloapp

Web 应用的根目录Q所有的 jsp 文g?/span> html 文g都在此目录下

/helloapp/WEB_INF

存放 web 发布时的描述文g web.xml

/helloapp/WEB_INF/class

存放各种 class 文gQ?/span> Servlet 文g也存放于此目录下?/span>

/helloapp/WEB_INF/lib

存放各钟 Web 应用所需要的 jar 文g。比如可以存?/span> JDBC 驱动E序?/span> JAR 文g


配置虚拟L
 ------Host
元素的属?/span>

name

指定虚拟L名字

debug

指定日志U别

appBase

指定虚拟L目录Q可以是l对目录Q也可以指定相对?/span> <CATALINA_HOME> 的相对目录。如果此Ҏ有设定则默认的是 <CATALINA_HOME>/webapps ?/span>

unpackWARs

如果此项讄?/span> true Q?/span> 表示把 Web 应用?/span> WAR 文g先展开为开攄录结构后再运行。如果ؓ false , 则直接运?/span> WAR 文g

autoDeploy

如果此项讄?/span> true Q?/span> 表示?/span> Tomcat 服务器处于运行状态时Q能够监?span style="FONT-SIZE: 9pt; COLOR: blue">appBase下的文gQ?/font> 如有新的 Web 加入q来Q则会自动发布这?/span> Web 应用?/span>

alias

指定虚拟L的别名,可以指定多个别名?/span>

deployOnStarup

如果此项设ؓ trueQ?/span> 则表C?/span> Tomcat 服务器启动时会自动发?/span> appBase 目录下的所?/span> Web 应用。如?/span> Web 应用?/span> server.xml 中没有相应的 <context> 元素 , 则将采用默认?/span> Context 配置?/span> deployOnStarup 的默认设|是 true


在server.xml中加?lt;Context>元素
------Context
元素属?/span>

path

指定 Web 应用?/span> URL 入口

docBase

指定 Web 应用的文件\径,可以l定l对路径Q也可以是相对于 Host ?/span> appBase 属性的相对路径Q?span style="COLOR: red">参见上面 Host ?/span> appBase 属?/span> Q。如?/span> Web 应用采用开攄录结构,则指?/span> Web 应用?/span> 根目录;如果 Web 应用是个 WAR 文gQ则指定 WAR 文g的\径?/span>

reloadable

如果?/span> true ,Tomcat 服务器在q行状态下会监视在 WEB-INF/class ?/span> WEB-INF/lib ?/span> class 文g的改动。如果检到?/span> class 文g更新Q服务器会自动蝲?/span> Web 应用?/span>


在web.xml中加?lt;servlet>?lt;servlet-mapping>元素
------<servlet>
元素的属?/span>

<servlet-name>

定义 Servlet 的名字?/span>

<servlet-class>

指定实现q个 Servlet 的类?/span>

<init-param>

定义 Servlet 的初始化参数Q包括参数名和参数|Q一?/span> <servlet> 元素中可以有多个 <init-param> 元素?/span>

<load-on-startup>

指定?/span> Web 应用启动Ӟ装蝲 Servlet 的次序。当q个gؓ正数或零Q?/span> Servlet 容器先加载数值小?/span> Servlet Q再依次加蝲其他数值大?/span> Servlet 。如果这个gؓ负数或没有设?/span>Q?/span> Servlet Web 客户首次讉Kq个 Servlet 时加载它?/span>



言w寸 2006-08-22 11:00 发表评论
]]>java中连接Oracle数据?/title><link>http://m.tkk7.com/xiekai-blog/archive/2006/08/08/62314.html</link><dc:creator>言w寸</dc:creator><author>言w寸</author><pubDate>Tue, 08 Aug 2006 02:49:00 GMT</pubDate><guid>http://m.tkk7.com/xiekai-blog/archive/2006/08/08/62314.html</guid><wfw:comment>http://m.tkk7.com/xiekai-blog/comments/62314.html</wfw:comment><comments>http://m.tkk7.com/xiekai-blog/archive/2006/08/08/62314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiekai-blog/comments/commentRss/62314.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiekai-blog/services/trackbacks/62314.html</trackback:ping><description><![CDATA[本地不安装OracleQ用JAVA实现q接Oracle数据源:<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">数据库服务器Qlips-db        端口Q?/span><span style="COLOR: #000000">1521</span><span style="COLOR: #000000">        数据库名QJAVATECH<br />q接用户名:ebt        q接密码Qebt06        </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"><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.sql.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img id="Codehighlighter1_19_183_Open_Image" onclick="this.style.display='none'; Codehighlighter1_19_183_Open_Text.style.display='none'; Codehighlighter1_19_183_Closed_Image.style.display='inline'; Codehighlighter1_19_183_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_19_183_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_19_183_Closed_Text.style.display='none'; Codehighlighter1_19_183_Open_Image.style.display='inline'; Codehighlighter1_19_183_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_19_183_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span><span id="Codehighlighter1_19_183_Open_Text"><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /> * <p>Title: </p><br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /> *<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /> * <p>Description: </p><br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /> *<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /> * <p>Copyright: Copyright (c) 2006</p><br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /> *<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /> * <p>Company: </p><br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /> *<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /> * </span><span style="COLOR: #808080">@author</span><span style="COLOR: #008000"> not attributable<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /> * </span><span style="COLOR: #808080">@version</span><span style="COLOR: #008000"> 1.0<br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_206_1322_Open_Image" onclick="this.style.display='none'; Codehighlighter1_206_1322_Open_Text.style.display='none'; Codehighlighter1_206_1322_Closed_Image.style.display='inline'; Codehighlighter1_206_1322_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_206_1322_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_206_1322_Closed_Text.style.display='none'; Codehighlighter1_206_1322_Open_Image.style.display='inline'; Codehighlighter1_206_1322_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Welcome </span><span id="Codehighlighter1_206_1322_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_206_1322_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> Connection getConnect() </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> SQLException<br /><img id="Codehighlighter1_275_499_Open_Image" onclick="this.style.display='none'; Codehighlighter1_275_499_Open_Text.style.display='none'; Codehighlighter1_275_499_Closed_Image.style.display='inline'; Codehighlighter1_275_499_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_275_499_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_275_499_Closed_Text.style.display='none'; Codehighlighter1_275_499_Open_Image.style.display='inline'; Codehighlighter1_275_499_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_275_499_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_275_499_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        DriverManager.registerDriver(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> oracle.jdbc.OracleDriver());<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        Connection conn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> DriverManager.getConnection(<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jdbc:oracle:thin:@lips-db:1521:javatech</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ebt</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ebt06</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> conn;<br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_545_1320_Open_Image" onclick="this.style.display='none'; Codehighlighter1_545_1320_Open_Text.style.display='none'; Codehighlighter1_545_1320_Closed_Image.style.display='inline'; Codehighlighter1_545_1320_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_545_1320_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_545_1320_Closed_Text.style.display='none'; Codehighlighter1_545_1320_Open_Image.style.display='inline'; Codehighlighter1_545_1320_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main(String[] args) </span><span id="Codehighlighter1_545_1320_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_545_1320_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_559_1199_Open_Image" onclick="this.style.display='none'; Codehighlighter1_559_1199_Open_Text.style.display='none'; Codehighlighter1_559_1199_Closed_Image.style.display='inline'; Codehighlighter1_559_1199_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_559_1199_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_559_1199_Closed_Text.style.display='none'; Codehighlighter1_559_1199_Open_Image.style.display='inline'; Codehighlighter1_559_1199_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_559_1199_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_559_1199_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            Connection conn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Welcome.getConnect();<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            Statement stmt </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> conn.createStatement();<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            ResultSet rs </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> stmt.executeQuery(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">select * from tbm_student</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            ResultSetMetaData rsmd </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rs.getMetaData();<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">, n </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> rsmd.getColumnCount(); i </span><span style="COLOR: #000000"><=</span><span style="COLOR: #000000"> n; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br /><img id="Codehighlighter1_877_1189_Open_Image" onclick="this.style.display='none'; Codehighlighter1_877_1189_Open_Text.style.display='none'; Codehighlighter1_877_1189_Closed_Image.style.display='inline'; Codehighlighter1_877_1189_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_877_1189_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_877_1189_Closed_Text.style.display='none'; Codehighlighter1_877_1189_Open_Image.style.display='inline'; Codehighlighter1_877_1189_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span id="Codehighlighter1_877_1189_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_877_1189_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                System.out.print(rsmd.getColumnName(i));<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                System.out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                System.out.print(rsmd.getColumnClassName(i));<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                System.out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                System.out.print(rsmd.getColumnTypeName(i));<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                System.out.println(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1233_1258_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1233_1258_Open_Text.style.display='none'; Codehighlighter1_1233_1258_Closed_Image.style.display='inline'; Codehighlighter1_1233_1258_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1233_1258_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1233_1258_Closed_Text.style.display='none'; Codehighlighter1_1233_1258_Open_Image.style.display='inline'; Codehighlighter1_1233_1258_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (SQLException se) </span><span id="Codehighlighter1_1233_1258_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_1233_1258_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//<br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="COLOR: #000000">        }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1289_1314_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1289_1314_Open_Text.style.display='none'; Codehighlighter1_1289_1314_Closed_Image.style.display='inline'; Codehighlighter1_1289_1314_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1289_1314_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1289_1314_Closed_Text.style.display='none'; Codehighlighter1_1289_1314_Open_Image.style.display='inline'; Codehighlighter1_1289_1314_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (Exception ex) </span><span id="Codehighlighter1_1289_1314_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_1289_1314_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//<br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="COLOR: #000000">        }</span></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span></div>要成功运行,q需要引入classesxx.jar或者classesxx.zipQ?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"><?</span><span style="COLOR: #ff00ff">xml version="1.0" encoding="UTF-8"</span><span style="COLOR: #0000ff">?></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">classpath</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">classpathentry </span><span style="COLOR: #ff0000">kind</span><span style="COLOR: #0000ff">="src"</span><span style="COLOR: #ff0000"> path</span><span style="COLOR: #0000ff">=""</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">classpathentry </span><span style="COLOR: #ff0000">kind</span><span style="COLOR: #0000ff">="con"</span><span style="COLOR: #ff0000"> path</span><span style="COLOR: #0000ff">="org.eclipse.jdt.launching.JRE_CONTAINER"</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br />    </span><strong><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">classpathentry </span><span style="COLOR: #ff0000">kind</span><span style="COLOR: #0000ff">="lib"</span><span style="COLOR: #ff0000"> path</span><span style="COLOR: #0000ff">="C:/oracle/ora92/jdbc/lib/classes12.jar"</span><span style="COLOR: #0000ff">/></span></strong><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">classpathentry </span><span style="COLOR: #ff0000">kind</span><span style="COLOR: #0000ff">="output"</span><span style="COLOR: #ff0000"> path</span><span style="COLOR: #0000ff">=""</span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">classpath</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br /></span></div><img src ="http://m.tkk7.com/xiekai-blog/aggbug/62314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiekai-blog/" target="_blank">言w寸</a> 2006-08-08 10:49 <a href="http://m.tkk7.com/xiekai-blog/archive/2006/08/08/62314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2EE中的EJB和EJB Containerhttp://m.tkk7.com/xiekai-blog/archive/2006/08/04/61695.html言w寸言w寸Fri, 04 Aug 2006 03:41:00 GMThttp://m.tkk7.com/xiekai-blog/archive/2006/08/04/61695.htmlhttp://m.tkk7.com/xiekai-blog/comments/61695.htmlhttp://m.tkk7.com/xiekai-blog/archive/2006/08/04/61695.html#Feedback0http://m.tkk7.com/xiekai-blog/comments/commentRss/61695.htmlhttp://m.tkk7.com/xiekai-blog/services/trackbacks/61695.html1 Servlet/JSP Container
2 EJB Container

EJBI竟是什么?说一个不很恰当的比喻QEJB像?一个公司做软g开发工作的员工。你是EJBQ公司就是EJBContainer. 公司(Container) 负责与外界打交道Q比如销售商Q客P工商Q税务,银行{等。你(EJB)可以专心做软g开发。公?Container)q负责员?EJB)之间的协调。当然了公司和员工是双向选择的。EJB和Container也是q样。所以J2EE&Container&EJB不是H发奇想,也不是天外来客,是我们..............

下面是网上copy的一些名词定义,比较晦ӆQ希望大家踊跃给出更形象生动而又不失准确的定义?br />
EJB 
  Enterprise JavaBeansQJava中用于开发企业应用的技术标准,他定义了一个用于开发和发布可重用的服务器端lg的模型,包括Session beansQEntity beans以及Message-driven beans三种?/font>

Container 容器 
  一个ؓlg提供生命周期理Q安全,配置Q和q行时服务的实体。每一个类型的容器QEJB, Web, JSP, servlet, applet, 和application clientQ也会提供各自组件相关的服务

servlet container 
  一个提供网l服务的容器Q通过它,h和应{被传送,h被解码,应答被格式化。所有的servlet container必须支持HTTP协议的请求和应答Q也可以支持其它的请求应{型协议比如HTTPS?

JSP container 
  一个提供和servlet容器同样服务的容器和一个把JSP面转换成servlet的引擎?br />
EJB container EJB容器 
  一个实CJ2EE体系l构中EJBlg规范的容器。这个规范指定了一个Enterprise bean的运行时环境Q包括安全,一致性,生命周期Q事务,配置Q和其他的服务。一个EJB容器可以由EJB或者J2EE服务器提供?br />

Web container 
  实现J2EE体系l构中Weblg协议的容器。这个协议规定了一个Weblgq行时的环境Q包括安全,一致性,生命周期理Q事务,配置和其它的服务。一个提供和JSP和J2EEq_APIs界面相同服务的容器。一个Web container 由Web服务器或者J2EE服务器提供?/font>




言w寸 2006-08-04 11:41 发表评论
]]>
TOMCAT?TOMCAT与Java Web开发技术详?W一?阅读W记)http://m.tkk7.com/xiekai-blog/archive/2006/07/12/57787.html言w寸言w寸Wed, 12 Jul 2006 05:18:00 GMThttp://m.tkk7.com/xiekai-blog/archive/2006/07/12/57787.htmlhttp://m.tkk7.com/xiekai-blog/comments/57787.htmlhttp://m.tkk7.com/xiekai-blog/archive/2006/07/12/57787.html#Feedback0http://m.tkk7.com/xiekai-blog/comments/commentRss/57787.htmlhttp://m.tkk7.com/xiekai-blog/services/trackbacks/57787.html Tomcat ?/span> ?/span> 器是一?/span> Servlet/Jsp 容器 . 不但支持q行 Servlet ?/span> Jsp , q具备作为商?/span> Java Web 应用容器的特?/span> , ?/span> Tomcat 理和控制^?/span> , 安全域管?/span> , Tomcat 阀{?/span> .

 

Tomcat 作ؓ Servlet 容器 , 负责把客戯求传送给 Servlet q把响应l果q回l客?/span> . 当客戯求某?/span> Servlet ?/span> , Servlet 容器首先创Z?/span> ServletRequest 对象?/span> ServletResponse 对象 ( ?/span> ServletRequest 对象中封装了客户h信息 ), 然后 Servlet 容器?/span> ServletRequest 对象?/span> ServletResponse 对象传给客户所h?/span> Servlet , Servlet 把响应结果写?/span> ServletResponse ?/span> , 最后由 Servlet 容器把响应结果传l客?/span> .

 

Tomcat 的结?/span> : Tomcat 服务器由一pd可配|的lg构成 . q些lg?/span> <CATALINA_HOME> / conf/server.xml 文g中进行配|?/span> , 每个 Tomcat lg?/span> server.xml 文g中对应一U配|元?/span> .
server.xml 的结构如?/span> :
<Server>
  
<Service>
    
<Connector/>
    
<Engine>
      
<Host>
       
<Context>
       
</Context>
      
</Host>
    
</Engine>
  
</Service>
</Server>

所有配|元素分?/span> 4 c?/span> :

1.     层cd?/span> : < Server> 元素?/span> <Service> 元素 .

2.     q接器类元素 : <Connector/> , 客户与服务器之间的通信接口 .

3.     容器cd?/span> : <Engine> <Host> <Context> , 用于处理客户h .

4.     嵌套cd?/span> : ?/span> < Logger> <Valve> <Realm>, 代表可以加入到容器中的组?/span> .

<Server>元素:
代表整个Catalina Servlet容器
,  <Server>元素可以包含一个或多个<Service>元素.
<Service>元素:
  包含一?lt;Engine>元素
, 以及一个或多个<Connector/>元素 , q些<Connector/>元素׃n一?lt;Engine>元素.
<Connector/>元素:
  代表和客户实际交互的lg
, 负责接收客户h , 以及向客戯回响应结?
<Engine>元素:
  每个<Service>元素只能包含一?lt;Engine>元素. <Engine>元素处理在同一?lt;Service>元素中所?lt;Connector/>元素接收到的客户h.
<Host>元素:
  一?lt;Engine>元素可以包含多个<Host>元素
, 每个<Host>元素定义了一个虚拟主?/span> , 它可以包含一个或多个web应用.
<Context>元素:
  每个<Context>元素代表了运行在虚拟L上的单个web应用.一?lt;Host>元素可以包含多个<Context>元素.

Tomcat 各个lg间的嵌套关系如下图所C?/span> :
o_Tomcata.bmp
Tomcat各个lg间响应客戯求的q程如下图所C?/span>:
o_Tomcatb.bmp


Tomcat
的工作模?/span> .

1.     独立?/span> Servlet 容器 .( Tomcat 的默认工作模?/span> )

2.     q程内的 Servlet 容器 .( 与其?/span> Web 服务器集?/span> )

3.     q程外的 Servlet 容器 .( 与其?/span> Web 服务器集?/span> )


Servlet容器响应Web客户h程的URL时序图,如下Q?br />o_servlet32.bmp


言w寸 2006-07-12 13:18 发表评论
]]>
JSP与Servlet(1) - W一个servlethttp://m.tkk7.com/xiekai-blog/archive/2006/07/03/56316.html言w寸言w寸Mon, 03 Jul 2006 05:40:00 GMThttp://m.tkk7.com/xiekai-blog/archive/2006/07/03/56316.htmlhttp://m.tkk7.com/xiekai-blog/comments/56316.htmlhttp://m.tkk7.com/xiekai-blog/archive/2006/07/03/56316.html#Feedback0http://m.tkk7.com/xiekai-blog/comments/commentRss/56316.htmlhttp://m.tkk7.com/xiekai-blog/services/trackbacks/56316.html阅读全文

言w寸 2006-07-03 13:40 发表评论
]]>
MyEclipse + Tomcat + Eclipse 开发struts应用http://m.tkk7.com/xiekai-blog/archive/2006/06/30/55957.html言w寸言w寸Fri, 30 Jun 2006 06:34:00 GMThttp://m.tkk7.com/xiekai-blog/archive/2006/06/30/55957.htmlhttp://m.tkk7.com/xiekai-blog/comments/55957.htmlhttp://m.tkk7.com/xiekai-blog/archive/2006/06/30/55957.html#Feedback0http://m.tkk7.com/xiekai-blog/comments/commentRss/55957.htmlhttp://m.tkk7.com/xiekai-blog/services/trackbacks/55957.html
1.要注意struts1.1和struts1.2q两个不同的版本.因ؓ是开源的,版本变动有时候会很大,如果对其不了?很容易在开发中遇到各种奇怪的问题.常见的是使用<html:errors/>标签引v的错?
如果是struts1.2,在Action或者Form的validate中可以这样写:
ActionErrors errors = new ActionErrors();
if(......){
errors.add("name", new ActionMessage("error"));
}
如果是struts1.1,则必dActionMessage改ؓActionError.

2.在MyEclipse配置中有一叫作Validation,默认讄如下图所C?
r_b.bmp
因此在我写好JSP,~译?发现代码行的左边有好几个U叉?可是代码又能正常q行,如下?
r_a.bmp
不知道这个Validation有什么作?到底做的是怎样的代码检查我也不清楚,如有知道?q望不吝赐教.



言w寸 2006-06-30 14:34 发表评论
]]>
x struts, jsf, 甚至ajaxhttp://m.tkk7.com/xiekai-blog/archive/2006/06/28/55594.html言w寸言w寸Wed, 28 Jun 2006 10:59:00 GMThttp://m.tkk7.com/xiekai-blog/archive/2006/06/28/55594.htmlhttp://m.tkk7.com/xiekai-blog/comments/55594.htmlhttp://m.tkk7.com/xiekai-blog/archive/2006/06/28/55594.html#Feedback0http://m.tkk7.com/xiekai-blog/comments/commentRss/55594.htmlhttp://m.tkk7.com/xiekai-blog/services/trackbacks/55594.htmlMVCl构C天,已经C峰?br />
?000q初诞生的Struts以及其他cM?MVC(Model View Controler)框架主要都是以操作ؓ中心Q且都是无状态的开发模型,而现在,Zlg(component-based)和事仉?event- driven)的开发模型逐渐行hQ在很多时候都成了Struts的有利竞争者,q其中来自jcp的JavaServer Faces(JSF)以及来自apache的Tapestry是其中的g者?br />
struts也好 cM的webwork也好Q尽其有一定的优势Q但不可避免的要CQ但谁来代替它们Q?br />jsfQtapestryQ甚至ajaxQ?/p>

现在很难说?br />jsf在各大家的支持下Q正在茁壮成长,tapestryq没有看到成Z的q象Qajax虽然热火Q但q不是非常成熟?/p>

q前趋势看,感觉jsf会成ؓL?br />

Ajax基础教程  

   ajax入门推荐书籍.书中讲解了ajax出现得背?/span> , 相关得技?最有h值得是书中   第5章  构建完备的Ajax开发工L  W?章  用JsUnit试JavaScript代码  W?章  分析JavaScript调试工具和技术 这三章?5块钱也g.
   该书定位很准
, 寚wU知识没有讲?/span> , 只ؓ入门.

   推荐指数:  4? 
   推荐理由: l对最好的入门书籍
, 其是把最先进的ajax开发方式介l给大家.


言w寸 2006-06-28 18:59 发表评论
]]>
使用 JSF 架构q行设计(转蝲)http://m.tkk7.com/xiekai-blog/archive/2006/06/28/55586.html言w寸言w寸Wed, 28 Jun 2006 10:21:00 GMThttp://m.tkk7.com/xiekai-blog/archive/2006/06/28/55586.htmlhttp://m.tkk7.com/xiekai-blog/comments/55586.htmlhttp://m.tkk7.com/xiekai-blog/archive/2006/06/28/55586.html#Feedback0http://m.tkk7.com/xiekai-blog/comments/commentRss/55586.htmlhttp://m.tkk7.com/xiekai-blog/services/trackbacks/55586.html

2006 q?1 ?04 ?/p>

本文中,作?Anand Joshi 使用 JSF 框架中的设计模式阐释?JavaServer?Faces (JSF) 体系l构。他讨论?JSF 体系l构中用的 GoF 设计模式Q以及这些模式在 JSF 框架 中的作用。Q何对设计模式?JSF 体系l构有一定了解的人都能从 Anand 详细的介l中有所收获?读者应该对 GoF 设计模式?JSF 技术有 很好的了解?/blockquote>

设计模式可以帮助用户在更高层ơ上抽象l节Q更好地理解体系l构。如果比较熟?GoF 设计模式?JavaServer Faces (JSF) 框架Q本文可以帮助您z察 JSF 框架中用的设计模式Q深入理解其工作原理?/p>

本文探讨?JSF 框架中 用的设计模式。详l讨论的设计模式包括 Singleton、Model-View-Controller、Factory Method、State、Composite、Decorator、Strategy 、Template Method ?Observer 模式?

设计模式?JavaServer Faces (JSF) 技?

首先要地介绍一下模式和 JSF 框架?/p>

  • 模式?/b>设计模式是对问题和解x案进行抽象的普遍适用?Ҏ。因为模式是所有开发h员和架构师公认的Q所以模式可以节U时间和资源。用外行话来_模式是关于某个人所q的问题的l过?证的解决Ҏ。模式可以重用,重用使得解决Ҏ更健壮?
  • Java Server Faces?/b> JSF 体系l构是一U?Web 应用E序框架?它是 Java Community Process (JCP) 推动的,有望成ؓ Web 应用E序开发的标准框架。目前用于开?Web 应用E序的框架有 50 多个Q这 说明q切需要实现框架的标准化,q正?JSF 框架的目标!




深入剖析 JSF 模式

现在我们来讨?JSF 体系l构中的各种设计模式。本文将详细讨论 Singleton、Model-View-Controller?Factory Method、State、Composite、Decorator、Strategy、Template Method ?Observer 设计模式。我分析每U模式的用途及其在 JSF 框架中的作用?/p>



Singleton 模式

Singleton 模式的目的是保证cd有一个实例被加蝲Q该实例?供一个全局讉K炏V当启动h JSF 支持?Web 应用E序ӞWeb 容器初始化一?FacesServlet 实例。在q个阶段QFacesServlet Ҏ?Web 应用E序实例?Application ?LifeCycle 实例一ơ。这些实例就采用众所周知?Singleton 模式Q通常只需要该cd的一个实例?

使用 JSF ?Web 应用E序只需?Application ?LifeCycle cȝ一个实例。LifeCycle 理多个 JSF h的整个生命期。因为其 状态和行ؓ在所有请求之间共享,q些对象采用 Singleton 模式合情合理。LifeCycle l护?PhaseListeners 也是 Singleton 模式的?PhaseListeners 由所?JSF h׃n。在 JSF 框架中可以广泛?Singleton 模式Q以减少内存占用和提供对象的全局讉K?NavigationHandlerQ用于确定请求的逻辑l果Q和 ViewHandlerQ用于创图)也是使用 Singleton 模式的例子?/p>



Model-View-Controller (MVC)

MVC 模式的目的是从数据表C(ViewQ中数据( ?ModelQ分d来。如果应用程序有多种表示Q可以仅替换视图层而重用控制器和模型代码。类似的Q如果需要改变模型,可以在很大程?上不改变视图层。控制器处理用户动作Q用户动作可能造成模型改变和视图更新。当用户h一?JSF 面Ӟh发送到 FacesServlet?FacesServlet ?JSF 使用的前端控制器 servlet。和其他很多 Web 应用E序框架一PJSF 使用 MVS 模式消除视图和模型之间的耦合。ؓ 了集中处理用戯求,控制?servlet 改变模型q将用户D到视图?/p>

FacesServlet ?JSF 框架中所有用戯求都要经q的控制?元素。FacesServlet 分析用户hQ用托?bean Ҏ型调用各U动作。后収ͼbackingQ或托管QmanagedQbean 是该模型的例子。JSF 用户界面QUIQ组件是视图层的例子。MVC 模式把Q务分解给h不同技能的开发h员,使这些Q务能够同时进行,q样 GUI 设计人员可?使用丰富?UI lg创徏 JSF 面Q同时后端开发h员可以创建托?bean 来编写专门的业务逻辑代码?/p>



Factory Method 模式

Factory Method 模式的目的是定义一个用于创建对象的接口Q但是把对象实例化推q到子类中。在 JSF 体系 l构中,Factory Method 模式被用于创建对象。LifeCycleFactory 是一个创建和q回 LifeCycle 实例的工厂对象。LifeCycleFactory ?getLifeCycle (String LifeCycleId) Ҏ采用 Factory Method 模式Q根?LifeCycleId 创徏Q如果需要)q返?LifeCycle 实例。自?义的 JSF 实现可以重新定义 getLifeCycle 抽象Ҏ来创定义?LifeCycle 实例。默认的 JSF 实现提供默认?LifeCycle 实例。此?Q对于每?JSF hQFacesServlet 都从 FacesContextFactory 得到 FacesContext。FacesContextFactory 是一个抽象类Q公开?getFacesContext APIQJSF 实现提供?FacesContextFactory ?getFacesContext API 的具体实现。这是另外一个?Factory Method ?式的例子Q具体的 FacesContextFactory 实现创徏 FacesContext 对象?/p>



State 模式

State 模式的目的是在表C状态的不同cM间分配与状态有关的逻辑。FacesServlet ?LifCycle 实例调用 execute ?render Ҏ。LifeCycle 协调不同?Phrase 以便执行 JSF h。在q里 JSF 实现遵循了 State 模式。如果没有用这U模式, LifeCycle 实现׃被大量的条gQ即 “if?语句Q搅得一塌糊涂。JSF 实现为每个状态(或阶D)创徏单独的类q调?step。phase 是一 个抽象类Q定了每?step 的公共接口。在 JSF 框架中定义了六个 phraseQ即 stepQ:RestoreViewPhase、ApplyRequestValues?ProcessValidationsPhase、UpdateModelValuesPhase、InvokeApplicationPhase ?RenderResponsePhase?/p>

?State 模式中, LifeCycle ?FacesContext 对象传递给 phase。每个阶D|状态改变传递给它的上下文信息,然后讄 FacesContext 本n中的标志表明?一个可能的步骤。JSF 实现在每个步骤中改变其行为。每个阶D都可以作ؓ下一个阶D늚起因。FacesContext 有两U标?renderResponse ?responseComplete 可以改变执行的顺序。每个步骤执行完成后QLifeCycle 查上一阶段是否讄了这些标志。如果设|了 responseCompleteQLifeCycle 则完全放弃请求的执行。如果经q某个阶D后讄?renderResponse 标志QJSF ׃跌剩下的阶D而直?q入 Render Response 阶段。如果这两个标志都没有设|,LifeCycle ׃按顺序l执行下一步?/p>



Composite 模式

Composite 模式让客户代码能够统一处理复合对象和基本对象。复合对象是基本对象的容器。在W一阶段QRestore View 阶段Q和最后一个阶D(Render Response 阶段Q,使用 JSF UI lg构?UI View。UIComponentBase 是 Composite 模式?Component 抽象cȝ一个例子。UIViewRoot ?Composite c,?UIOutputQ比方说Q就是叶子(或者基本类Q。UIComponentBase cd义了 叶子和复合对象的公共ҎQ如~码/解码值和子节点管理函数。子节点理函数Q如 getChildrenQ对于叶子节点返回空列表Q对于复合节?则返回其子节炏V?/p>





Decorator 模式

Decorator 模式的目的是不通过子类化动态扩展对象的行ؓ。JSF 框架有很多扩展点Q即可插入机Ӟ。JSF 实现可?Decorator 模式替换默认?PropertyResolver、VariableResolver、ActionListener 、NavigationHandler、ViewHandler ?StateManager。通常自定义实现接受通过构造函C递给它的默认实现的引用。自定义实现仅仅改写 功能的一个子集,而将其他功能委托l默认实现。如果希望实现自定义?ViewHandlerQ改写默?ViewHandler 实现?calculateLocale ?法,可以?清单 1 那样~写 CustomViewHandler c:
清单 1. CustomViewHandler 片段


public class CustomViewHandler extends ViewHandler {
 public CustomViewHandler(ViewHandler handler) {
		 super();
		 oldViewHandler = handler;
 }
private ViewHandler oldViewHandler  = null;
public void renderView (facesContext context, UIViewRoot view) {
            //delegate method to oldViewHandler
		 oldViewHandler.renderView(context, view);
}
//custom implementation of calculateLocale
public Locale calculateLocale(FacesContext context) {
}
}





Strategy 模式

Strategy 模式的目的是装不同的概cJSF ?枉?Strategy 模式使用委托实现模型呈现 UI lg。JSF 技术支持两U呈现模型。在直接实现模型中,UI lgҎ到的h中的数据q行 解码Q然后编码这些数据进行显C。在委托实现模型中,解码和编码操作委托给和组建关联的专门呈现器。后一U模型利用了 Strategy 设计 模式Q比直接实现更灵zR在 Strategy 模式中,不同的法装在单独的对象中,从而可以动态地改变法。JSF 实现可以用已有的 renderkit 实例注册另外的呈现器Q当应用E序启动的时候,JSF 实现d配置文g这些呈现器?UI lg联系在一赗?/p>





Template Method 模式

Template Method 模式的目的是变化的步骤推迟到子c?中,而在父类中定义那些固定的法步骤。JSF 框架通过 PhraseListeners 展现?Template Method 模式提供的功能。采?Template MethodQ或?“hook”)使得 Web 作者可以ؓ不同阶段之间的可选步骤提供实玎ͼ而主要阶D仍然和 JSF 框架的定义一致。JSF 框架提供?PhaseListenersQ概念上cM?Template Method 模式中的可变步骤。JSF 框架有六个预定义的阶D,在每个阶D之_Web 作者可以实?PhaseListeners 来提供类g Template Method hook ?hook。事实上Q这U结构比 Template Method 模式更具有扩展性。可以通过注册 PhraseId ?ANY_PHRASE ?PhaseListener 在每个阶D后提供 hook。如?PhaseId ?ANY_PHASEQJSF 实现׃在每个阶D之前和之后?用该 PhaseListener。JSF 框架中的实现略有不同Q因为可以根本没?PhaseListenerQ但是在 Template Method 模式中,子类通常重新定义 父类中抽象的可变步骤?/p>





Observer 模式

Observer 模式的目的是当目标对象的状态改变时自动通知所有依 赖的对象Q即观察器)。JSF ?UI lg中实C Observer 模式。JSF 有两cdZӞActionEvent ?ValueChangedEvent。ActionEvent 用于定用户界面lgQ如按钮Q的ȀzR当用户单击按钮ӞJSF 实现通知d到该按钮上的一个或多个动作监听E序。于是该按钮被激z?Q或者说按钮Q主体)的状态改变了。添加到按钮上的所有监听程序(卌察器Q都收到通知该主体状态已l改变。类似的Q当输入 UI lg 中的值改变时QJSF 实现通知 ValueChangeListener?/p>





l束?

JSF 框架利用?Singleton、Model-View-Controller、Factory Method、State、Composite、Decorator、Strategy?Template Method ?Observer 设计模式。因为它的体pȝ构徏立在已经验证的设计模式的基础上,q是一个健壮的框架Q模式在 JSF 框架?得到了很好的利用?





参考资?

学习

  • 您可以参阅本文在 developerWorks 全球?点上?英文原文?br />
  • 误?Gang of Four Design Patterns q一步了解这些设计模式?

  • 请阅??a >怀疑论者的 JSF: JSF 应用E序的生命周?/font>?q一步了?JavaServer Faces 框架QdeveloperWorksQ?005 q?3 月)?

  • 误?developerWorks Java 技术专?/font>。这里专门发 表各U基?Web ?Java 的解x案的文章和教E?br />


获得产品和技?/b>


讨论





关于作?/font>

Anand Joshi 的照? src=

Anand 是一?Sun 认证的企业架构师Q几q来一直研I?Web 技术。他?WebSphere 理控制 台应用程序的设计和开发做了多斚w的A献。Anand 曄?IBM 国工作q几q_目前?IBM 印度工作?/p>



言w寸 2006-06-28 18:21 发表评论
]]> վ֩ģ壺 һձaѲ| ˳ɵӰ߹ۿ| ѿԻ40| ɫ˿߹ۿ| ŮvƬ| ŷ߿ƬAѹۿ| ŮƵվ| պѹۿһëƬ| ȫaëƬ**Ƶ| ˽Ƶ75| Ӱѿ| ҹ99Ƶ| ޸Ļַ| Ůʮ·츾 | þþþŮʦһ| 99Ƶ߹ۿ| ѵȫһ¼| 7x7x7x߹ۿ| һ߹ۿѸ߹ۿ | ֳִˬֳƵ| պëƬƵ| þwww˳ɾƷ㽶| ߻ɫӰ| 91˿߹ۿ| վ߹ۿ| ޾Ʒվ߹ۿ޹ | Ƶ| ҹƷѹۿ| aɻ߹ۿ| Ʒ޾Ʒպ| ŷ޹Ƶ| AVվ| ߹ۿavվ| ԻԻ³ҹҹѲƵ| ѹۿСˮ| av޹av| Ľղ2020| avƬ߹ۿ| ձAëһƬ| ҹƷƵ| ѲŴɫaƵ|