<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>aninfeel</title>
    <description></description>
    <link>http://aninfeel.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>javascript控制html dom</title>
        <author>aninfeel</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://aninfeel.javaeye.com">aninfeel</a>&nbsp;
          链接：<a href="http://aninfeel.javaeye.com/blog/75919" style="color:red;">http://aninfeel.javaeye.com/blog/75919</a>&nbsp;
          发表时间: 2007年04月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>逛了一下<font face="Arial"><a href="http://www.w3schools.com">http://www.w3schools.com</a>，得到几个比较有用的javascript函数：</font></p>
<p><font face="Arial">1、新建一个dom元素，参数为标签名&mdash;&mdash;document.createElement(&quot;tagName&quot;)</font></p>
<p><font face="Arial">2、把一个元素添加到某个元素下面&mdash;&mdash;parentElement.appendChild(childElement)</font></p>
<p><font face="Arial">3、获得父元素&mdash;&mdash;childElement.parentNode</font></p>
<p><font face="Arial">4、获得第一个子元素&mdash;&mdash;parentElement.firstChild</font></p>
<p><font face="Arial">5、获得所有的标签为tag的子元素&mdash;&mdash;parentElement.getElementsByTagName(&quot;tag&quot;)</font></p>
<p><font face="Arial">6、还有就是大家熟悉的document.getElementById(&quot;xid&quot;)和document.getElementsByName(&quot;yname&quot;)</font></p>
<p>顺便写个例子巩固一下：</p>
<div class="code_title">样例</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span><!--CTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"</sp--><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span> </span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">HTML</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">HEAD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">TITLE</span><span class="tag">&gt;</span><span>&nbsp;javascript&nbsp;测试&nbsp;</span><span class="tag"><span class="tag-name">TITLE</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">META</span><span>&nbsp;</span><span class="attribute">NAME</span><span>=</span><span class="attribute-value">&quot;Generator&quot;</span><span>&nbsp;</span><span class="attribute">CONTENT</span><span>=</span><span class="attribute-value">&quot;EditPlus&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">META</span><span>&nbsp;</span><span class="attribute">NAME</span><span>=</span><span class="attribute-value">&quot;Author&quot;</span><span>&nbsp;</span><span class="attribute">CONTENT</span><span>=</span><span class="attribute-value">&quot;&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">META</span><span>&nbsp;</span><span class="attribute">NAME</span><span>=</span><span class="attribute-value">&quot;Keywords&quot;</span><span>&nbsp;</span><span class="attribute">CONTENT</span><span>=</span><span class="attribute-value">&quot;&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">META</span><span>&nbsp;</span><span class="attribute">NAME</span><span>=</span><span class="attribute-value">&quot;Description&quot;</span><span>&nbsp;</span><span class="attribute">CONTENT</span><span>=</span><span class="attribute-value">&quot;&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">SCRIPT</span><span>&nbsp;</span><span class="attribute">LANGUAGE</span><span>=</span><span class="attribute-value">&quot;JavaScript&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;//列表内容 &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">listItems</span><span>=['aaa','bbb','ccc','ddd','eee']; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;//创建一个ol列表，上面的数组为每个li的内容 &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;createList() &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">myol</span><span>=</span><span class="attribute-value">document</span><span>.createElement(&quot;ol&quot;); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(var&nbsp;it&nbsp;in&nbsp;listItems) &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">tli</span><span>=</span><span class="attribute-value">document</span><span>.createElement(&quot;li&quot;); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">tli.innerHTML</span><span>=</span><span class="attribute-value">listItems</span><span>[it]; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//鼠标单击时调用changeColor函数 &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">tli.onclick</span><span>=</span><span class="attribute-value">changeColor</span><span>; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//鼠标双击时调用removeMe函数 &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">tli.ondblclick</span><span>=</span><span class="attribute-value">removeMe</span><span>; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myol.appendChild(tli); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.body.appendChild(myol); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;changeColor() &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//changeColor是自己加的，考虑到undefinded也是false，所以没有初始化。 &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//动态语言就是好，对象的属性和方法可以随便加。 &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(this.changeColor) &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">this.style.background</span><span>=</span><span class="attribute-value">&quot;yellow&quot;</span><span>; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">this.changeColor</span><span>=</span><span class="attribute-value">false</span><span>; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">this.style.background</span><span>=</span><span class="attribute-value">&quot;lightgreen&quot;</span><span>; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">this.changeColor</span><span>=</span><span class="attribute-value">true</span><span>; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;removeMe() &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//先找到父节点，再用父节点删除自己 &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span class="attribute">p</span><span>=</span><span class="attribute-value">this</span><span>.parentNode; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.removeChild(this); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//如果这个ul元素下的li子元素已经删除光了，就把这个ul元素也删掉。 &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(p.getElementsByTagName('li')</span><span class="attribute">.length</span><span>==0) &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.parentNode.removeChild(p); &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">SCRIPT</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;</span><span class="tag"><span class="tag-name">HEAD</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">BODY</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">button</span><span>&nbsp;</span><span class="attribute">onclick</span><span>=</span><span class="attribute-value">&quot;createList()&quot;</span><span class="tag">&gt;</span><span>创建列表</span><span class="tag"><span class="tag-name">button</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;</span><span class="tag"><span class="tag-name">BODY</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">HTML</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://aninfeel.javaeye.com/blog/75919#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 28 Apr 2007 18:11:18 +0800</pubDate>
        <link>http://aninfeel.javaeye.com/blog/75919</link>
        <guid>http://aninfeel.javaeye.com/blog/75919</guid>
      </item>
      <item>
        <title>spring mvc循序渐进（6）</title>
        <author>aninfeel</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://aninfeel.javaeye.com">aninfeel</a>&nbsp;
          链接：<a href="http://aninfeel.javaeye.com/blog/72592" style="color:red;">http://aninfeel.javaeye.com/blog/72592</a>&nbsp;
          发表时间: 2007年04月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>第十八步&mdash;&mdash;添加一下测试数据让它自动装载业务对象</strong></p>
<p style="MARGIN-BOTTOM: 0in">我还不想添加任何从数据库加载业务对象的代码。我们仅仅使用spring的bean运用环境编制几个对象。我将简单把握需要的数据全部放到springapp-servlet.xml里。我同时添加我将在后面创建的整个信息池配置（'messages.properties'）。</p>
<div class="code_title">
<p><strong><font size="2"><font face="Nimbus Mono L">springapp/war/WEB-INF/springapp-servlet.xml</font></font></strong> </p>
</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag"><!--sp--><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;UTF-8&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span> </span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">beans</span><span>&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://www.springframework.org/schema/beans&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xmlns:xsi</span><span>=</span><span class="attribute-value">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xsi:schemaLocation</span><span>=&quot; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>http://www.springframework.org/schema/beans&nbsp;http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="comments"><!--  - Application context definition for "springapp" DispatcherServlet.  --></span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;springappController&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;web.SpringappController&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;productManager&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;prodMan&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;prodMan&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;bus.ProductManager&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;products&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;product1&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;product2&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">ref</span><span>&nbsp;</span><span class="attribute">bean</span><span>=</span><span class="attribute-value">&quot;product3&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;product1&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;bus.Product&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;description&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>Lamp</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;price&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>5.75</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;product2&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;bus.Product&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;description&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>Table</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;price&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>75.25</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;product3&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;bus.Product&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;description&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>Chair</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;price&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>22.79</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;messageSource&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.context.support.ResourceBundleMessageSource&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;basename&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>messages</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;urlMapping&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.web.servlet.handler.SimpleUrlHandlerMapping&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;mappings&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;/hello.htm&quot;</span><span class="tag">&gt;</span><span>springappController</span><span class="tag"><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;viewResolver&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.web.servlet.view.InternalResourceViewResolver&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;viewClass&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>org.springframework.web.servlet.view.JstlView</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;prefix&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>/WEB-INF/jsp/</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;suffix&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>.jsp</span><span class="tag"><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">beans</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p>&nbsp;</p>
<p><strong>第十九步&mdash;&mdash;添加消息池绑定同时添加一个clean target到build.xml</strong></p>
<p style="MARGIN-BOTTOM: 0in">I create a 'messages.properties' file in the war/WEB-INF/classes directory. This properties bundle so far has three entries matching the keys specified in the <fmt:message>tags that we added to the hello.jsp.</fmt:message></p>
<p style="MARGIN-BOTTOM: 0in">我在war/WEB-INF/classes目录下创建了一个&ldquo;messages.properties'&rdquo;文件。这个消息捆绑（properties bundle）目前已经有三个匹配hello.jsp的<fmt:message>中定义的索引的 标签。</fmt:message></p>
<p style="MARGIN-BOTTOM: 0in"><fmt:message></fmt:message><fmt:message><strong><font size="2"><font face="Nimbus Mono L">springapp/war/WEB-INF/classes/messages.properties</font></font></strong> </fmt:message></p>
<div class="dp-highlighter">
<ol class="dp-rb">
    <li class="alt"><span><span>title=SpringApp &nbsp;&nbsp;</span></span></li>
    <li class=""><span>heading=Hello&nbsp;::&nbsp;SpringApp &nbsp;&nbsp;</span></li>
    <li class="alt"><span>greeting=Greetings,&nbsp;it&nbsp;is&nbsp;now &nbsp;&nbsp;</span></li>
</ol>
</div>
<p style="MARGIN-BOTTOM: 0in">运行ant，重启tomcat，浏览<font face="Arial"><a href="http://127.0.0.1:8080/springapp/hello.htm">http://127.0.0.1:8080/springapp/hello.htm</a>，就看到改动了</font></p>
          <br/>
          <span style="color:red;">
            <a href="http://aninfeel.javaeye.com/blog/72592#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 19 Apr 2007 23:52:43 +0800</pubDate>
        <link>http://aninfeel.javaeye.com/blog/72592</link>
        <guid>http://aninfeel.javaeye.com/blog/72592</guid>
      </item>
      <item>
        <title>spring mvc循序渐进（5）</title>
        <author>aninfeel</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://aninfeel.javaeye.com">aninfeel</a>&nbsp;
          链接：<a href="http://aninfeel.javaeye.com/blog/72588" style="color:red;">http://aninfeel.javaeye.com/blog/72588</a>&nbsp;
          发表时间: 2007年04月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>第十六步&mdash;&mdash;为业务逻辑添加一些类</strong></p>
<p>到目前位置，我们运用程序的实用性还不强。我们将要添加一个商品类Product和一个管理所有商品的类ProductManager。为了分离网站和业务，我们将用两个包分离java代码&mdash;&mdash;网站和业务。如果这是某个公司的运用程序，我就把程序包命名为类似于com.mycompany.web和com.mycompany.bus，但到目前为止这仅仅是个演示程序，所以程序包名称将保持简短。产品类将以javaBean实现，就是用getter和setter的那种。同时使它可序列化，虽然我们的程序还不需要，但如果我们要在不同的程序层之间传递这个类，我们将很快用到。</p>
<div class="code_title">
<p><font face="Nimbus Mono L"><font size="2"><strong>springapp/src/bus/Product.java</strong></font></font></p>
</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">package</span><span>&nbsp;bus; &nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;java.io.Serializable; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Product&nbsp;</span><span class="keyword">implements</span><span>&nbsp;Serializable&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;String&nbsp;description;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;Double&nbsp;price;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setDescription(String&nbsp;s)&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;description&nbsp;=&nbsp;s;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;getDescription() &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;description;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setPrice(Double&nbsp;d) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;price&nbsp;=&nbsp;d;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;Double&nbsp;getPrice() &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;price; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>} &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p style="MARGIN-BOTTOM: 0in">产品管理类ProductManager 保存这一个商品的List，除此之外它也是个JavaBean。</p>
<div class="code_title">
<p><font face="Nimbus Mono L"><font size="2"><strong>springapp/src/web/SpringappController.java</strong></font></font></p>
</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">package</span><span>&nbsp;bus; &nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;java.io.Serializable; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;java.util.List; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;ProductManager&nbsp;</span><span class="keyword">implements</span><span>&nbsp;Serializable&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;List&nbsp;products; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setProducts(List&nbsp;p) &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;products&nbsp;=&nbsp;p;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;List&nbsp;getProducts() &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;products;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>} &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p style="MARGIN-BOTTOM: 0in">下一步，我修改SpringappController让它控制一个到ProductManager 的链接。正如你所见，它现在在一个分离的包web里&mdash;&mdash;要记得把源代码移到这个新的位置。我同时添加了一些把产品信息传到视图的代码。getModelAndView 方法返回一个装着日期、时间和产品管理器的Map。</p>
<p style="MARGIN-BOTTOM: 0in">&nbsp;<font face="Nimbus Mono L"><font size="2"><strong>springapp/src/web/SpringappController.java</strong></font></font></p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">import</span><span>&nbsp;org.springframework.web.servlet.mvc.Controller; &nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;org.springframework.web.servlet.ModelAndView; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;javax.servlet.ServletException; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;javax.servlet.http.HttpServletRequest; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;javax.servlet.http.HttpServletResponse; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;java.io.IOException; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;java.util.Map; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;java.util.HashMap; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;bus.Product; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;bus.ProductManager; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;org.apache.commons.logging.Log; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;org.apache.commons.logging.LogFactory; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;SpringappController&nbsp;</span><span class="keyword">implements</span><span>&nbsp;Controller &nbsp;&nbsp;</span></li>
    <li class=""><span>{&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;Logger&nbsp;for&nbsp;this&nbsp;class&nbsp;and&nbsp;subclasses&nbsp;*/</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">final</span><span>&nbsp;Log&nbsp;logger&nbsp;=&nbsp;LogFactory.getLog(getClass());&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;ProductManager&nbsp;prodMan; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;ModelAndView&nbsp;handleRequest(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throws</span><span>&nbsp;ServletException,&nbsp;IOException &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;now&nbsp;=&nbsp;(</span><span class="keyword">new</span><span>&nbsp;java.util.Date()).toString(); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info(</span><span class="string">&quot;returning&nbsp;hello&nbsp;view&nbsp;with&nbsp;&quot;</span><span>&nbsp;+&nbsp;now); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&nbsp;myModel&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;HashMap(); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myModel.put(</span><span class="string">&quot;now&quot;</span><span>,&nbsp;now); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myModel.put(</span><span class="string">&quot;products&quot;</span><span>,&nbsp;getProductManager().getProducts()); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;ModelAndView(</span><span class="string">&quot;hello&quot;</span><span>,&nbsp;</span><span class="string">&quot;model&quot;</span><span>,&nbsp;myModel); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;setProductManager(ProductManager&nbsp;pm)&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prodMan&nbsp;=&nbsp;pm; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;ProductManager&nbsp;getProductManager()&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;prodMan; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>} &nbsp;&nbsp;</span></li>
</ol>
</div>
<p><strong></strong></p>
<p><strong>第十七步&mdash;&mdash;修改视图让它显示业务数据同时添加代码让它支持消息池（message bundle）</strong></p>
<p>使用JSTL的&lt;c:forEach&gt;标签，我添加了一小片显示产品信息的代码。我同时用JSTL的&nbsp;&lt;fmt:message&gt;标把title由&ldquo;heading and greeting&rdquo;换成消息池里的信息&mdash;&mdash;这个代码将在稍后显示。</p>
<div class="code_title">
<p><strong><font size="2"><font face="Nimbus Mono L">springapp/war/WEB-INF/jsp/hello.jsp</font></font></strong> </p>
</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span>%@&nbsp;include&nbsp;</span><span class="attribute">file</span><span>=</span><span class="attribute-value">&quot;/WEB-INF/jsp/include.jsp&quot;</span><span>&nbsp;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">fmt:message</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;title&quot;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">fmt:message</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;heading&quot;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">p</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">fmt:message</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;greeting&quot;</span><span class="tag">/&gt;</span><span>&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">c:out</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${model.now}&quot;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">h3</span><span class="tag">&gt;</span><span>Products</span><span class="tag">&lt;/</span><span class="tag-name">h3</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">c:forEach</span><span>&nbsp;</span><span class="attribute">items</span><span>=</span><span class="attribute-value">&quot;${model.products}&quot;</span><span>&nbsp;</span><span class="attribute">var</span><span>=</span><span class="attribute-value">&quot;prod&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">c:out</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${prod.description}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">i</span><span class="tag">&gt;</span><span>$</span><span class="tag">&lt;</span><span class="tag-name">c:out</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${prod.price}&quot;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">i</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">br</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">br</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;/</span><span class="tag-name">c:forEach</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://aninfeel.javaeye.com/blog/72588#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 19 Apr 2007 23:31:59 +0800</pubDate>
        <link>http://aninfeel.javaeye.com/blog/72588</link>
        <guid>http://aninfeel.javaeye.com/blog/72588</guid>
      </item>
      <item>
        <title>spring mvc循序渐进（4）</title>
        <author>aninfeel</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://aninfeel.javaeye.com">aninfeel</a>&nbsp;
          链接：<a href="http://aninfeel.javaeye.com/blog/72581" style="color:red;">http://aninfeel.javaeye.com/blog/72581</a>&nbsp;
          发表时间: 2007年04月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>第十五步&mdash;&mdash;连接视图和控制器</strong></p>
<p style="MARGIN-BOTTOM: 0in">现在控制器定义的视图路径是全名路径，这就在控制器和视图之间建立了一种不确定的关联。比较理想的方法是视图的映射使用一个局部名称，这允许我们不修改控制器也可以定位视图。如果使用ResourceBundleViewResolver 和SimpleUrlHandlerMapping 类，你可以用一个properties文件来存放视图的映射。如果你需要简便的映射的话，在InternalResourceViewResolver对象中设置前缀和扩展名将是一件很轻松的事。我们现在就使用这种方式，让我们修改springapp-servlet.xml并且包含这个viewResolver 作为入口。我们选用可以把JSTL和消息群结合起来同时也支持国际化的JstlView 。</p>
<div class="code_title">
<p><strong><font size="2"><font face="Nimbus Mono L">springapp/war/WEB-INF/springapp-servlet.xml</font></font></strong> </p>
</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;?</span><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;UTF-8&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">beans</span><span>&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://www.springframework.org/schema/beans&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xmlns:xsi</span><span>=</span><span class="attribute-value">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xsi:schemaLocation</span><span>=&quot; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>http://www.springframework.org/schema/beans&nbsp;http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comments">&lt;!--&nbsp;&nbsp;-&nbsp;Application&nbsp;context&nbsp;definition&nbsp;for&nbsp;&quot;springapp&quot;&nbsp;DispatcherServlet.&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;springappController&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;SpringappController&quot;</span><span class="tag">/&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;urlMapping&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.web.servlet.handler.SimpleUrlHandlerMapping&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;mappings&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;/hello.htm&quot;</span><span class="tag">&gt;</span><span>springappController</span><span class="tag">&lt;/</span><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;viewResolver&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.web.servlet.view.InternalResourceViewResolver&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;viewClass&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>org.springframework.web.servlet.view.JstlView</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;prefix&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>/WEB-INF/jsp/</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;suffix&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>.jsp</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;/</span><span class="tag-name">beans</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>上面添加了一个viewResolver，所以视图名称就可以移去前缀和扩展名了。</p>
<div class="code_title">
<p><font face="Nimbus Mono L"><font size="2"><strong>springapp/src/SpringappController.java</strong></font></font></p>
</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">import</span><span>&nbsp;org.springframework.web.servlet.mvc.Controller; &nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;org.springframework.web.servlet.ModelAndView; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;javax.servlet.ServletException; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;javax.servlet.http.HttpServletRequest; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;javax.servlet.http.HttpServletResponse; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;java.io.IOException; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;org.apache.commons.logging.Log; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;org.apache.commons.logging.LogFactory; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;SpringappController&nbsp;</span><span class="keyword">implements</span><span>&nbsp;Controller &nbsp;&nbsp;</span></li>
    <li class="alt"><span>{&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/**&nbsp;Logger&nbsp;for&nbsp;this&nbsp;class&nbsp;and&nbsp;subclasses&nbsp;*/</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">protected</span><span>&nbsp;</span><span class="keyword">final</span><span>&nbsp;Log&nbsp;logger&nbsp;=&nbsp;LogFactory.getLog(getClass());&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;ModelAndView&nbsp;handleRequest(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">throws</span><span>&nbsp;ServletException,&nbsp;IOException &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;now&nbsp;=&nbsp;(</span><span class="keyword">new</span><span>&nbsp;java.util.Date()).toString();&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info(</span><span class="string">&quot;returning&nbsp;hello&nbsp;view&nbsp;with&nbsp;&quot;</span><span>&nbsp;+&nbsp;now); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;ModelAndView(</span><span class="string">&quot;hello&quot;</span><span>,&nbsp;</span><span class="string">&quot;now&quot;</span><span>,&nbsp;now); &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li class="alt"><span>} &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>运行ant，重启tomcat，程序照样能运行。</p>
          <br/>
          <span style="color:red;">
            <a href="http://aninfeel.javaeye.com/blog/72581#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 19 Apr 2007 22:49:39 +0800</pubDate>
        <link>http://aninfeel.javaeye.com/blog/72581</link>
        <guid>http://aninfeel.javaeye.com/blog/72581</guid>
      </item>
      <item>
        <title>spring mvc循序渐进（3）</title>
        <author>aninfeel</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://aninfeel.javaeye.com">aninfeel</a>&nbsp;
          链接：<a href="http://aninfeel.javaeye.com/blog/72292" style="color:red;">http://aninfeel.javaeye.com/blog/72292</a>&nbsp;
          发表时间: 2007年04月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>这是从无到有用spring框架开发web应用程序的第二部分。这部分将进行如下内容：</p>
<ol>
    <li>
    <p style="MARGIN-BOTTOM: 0in">一个首页<strong>index.jsp</strong></p>
    </li>
    <li>
    <p style="MARGIN-BOTTOM: 0in">一个 DispatcherServlet 和相应的<strong>springapp-servlet.xml</strong> 配置文件。</p>
    </li>
    <li>
    <p style="MARGIN-BOTTOM: 0in">一个控制器<strong>springappController.java</strong>.</p>
    </li>
    <li>
    <p style="MARGIN-BOTTOM: 0in">一个视图<strong>hello.jsp</strong>.</p>
    </li>
</ol>
<p style="MARGIN-BOTTOM: 0in">我们将改进第一部分的内容，建立更使用的程序。</p>
<p style="MARGIN-BOTTOM: 0in"><strong>第十三步 改进index.jsp</strong></p>
<p style="MARGIN-BOTTOM: 0in">我们将要用到jstl，所以把spring-framework-1.2/lib/j2ee/jstl.jar和spring-framework-1.2/lib/jakarta-taglibs/standard.jar&nbsp; 复制到WEB-INF/lib 目录。同时创建一个将被每一个jsp文件用到的类似c语言的头文件的jsp文件include.jsp。</p>
<div class="code_title"><strong><font size="2"><font face="Nimbus Mono L">springapp/war/WEB-INF/jsp/include.jsp</font></font></strong></div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span>%@&nbsp;page&nbsp;</span><span class="attribute">session</span><span>=</span><span class="attribute-value">&quot;false&quot;</span><span>%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span>%@&nbsp;taglib&nbsp;</span><span class="attribute">prefix</span><span>=</span><span class="attribute-value">&quot;c&quot;</span><span>&nbsp;</span><span class="attribute">uri</span><span>=</span><span class="attribute-value">&quot;http://java.sun.com/jstl/core&quot;</span><span>&nbsp;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span>%@&nbsp;taglib&nbsp;</span><span class="attribute">prefix</span><span>=</span><span class="attribute-value">&quot;fmt&quot;</span><span>&nbsp;</span><span class="attribute">uri</span><span>=</span><span class="attribute-value">&quot;http://java.sun.com/jstl/fmt&quot;</span><span>&nbsp;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>修改index.jsp文件，使用jstl的&nbsp;<c:redirect> 标签把它重定向到控制器。</c:redirect></p>
<div class="code_title"><strong><font size="2"><font face="Nimbus Mono L">springapp/war/index.jsp</font></font></strong></div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span>%@&nbsp;include&nbsp;</span><span class="attribute">file</span><span>=</span><span class="attribute-value">&quot;/WEB-INF/jsp/include.jsp&quot;</span><span>&nbsp;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span>%--&nbsp;Redirected&nbsp;because&nbsp;we&nbsp;can't&nbsp;set&nbsp;the&nbsp;welcome&nbsp;page&nbsp;to&nbsp;a&nbsp;virtual&nbsp;URL.&nbsp;--%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">c:redirect</span><span>&nbsp;</span><span class="attribute">url</span><span>=</span><span class="attribute-value">&quot;/hello.htm&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;</p>
<p><strong>第十四步 改进视图和控制器</strong></p>
<p>把hello.jsp移到WEB-INF/jsp目录。修改这个文件，包含同时被index.jsp包含的include.jsp文件，同时用<c:out></c:out>标签输出当前时间，这个时间就像从model取出来传到view里一样（自己去想象吧）。</p>
<div class="code_title"><strong><font size="2"><font face="Nimbus Mono L">springapp/war/WEB-INF/jsp/hello.jsp</font></font></strong></div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span>%@&nbsp;include&nbsp;</span><span class="attribute">file</span><span>=</span><span class="attribute-value">&quot;/WEB-INF/jsp/include.jsp&quot;</span><span>&nbsp;%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>Hello&nbsp;::&nbsp;Spring&nbsp;Application</span><span class="tag"><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>Hello&nbsp;-&nbsp;Spring&nbsp;Application</span><span class="tag"><span class="tag-name">h1</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>Greetings,&nbsp;it&nbsp;is&nbsp;now&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">c:out</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${now}&quot;</span><span class="tag">/&gt;</span><span class="tag"><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag"><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>稍微修改一下SpringappController.java ，把导向的视图改为修改过的WEB-INF/jsp/hello.jsp，同时把字符串&quot;now&quot;当作取得当前时间 的model 的索引。</p>
<p>运行ant重启tomcat，浏览&nbsp;<a href="http://localhost:8080/springapp">http://localhost:8080/springapp</a>，就可以看到修改的成果了，万里长征也终于迈出了第一步。</p>
          <br/>
          <span style="color:red;">
            <a href="http://aninfeel.javaeye.com/blog/72292#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 19 Apr 2007 22:00:00 +0800</pubDate>
        <link>http://aninfeel.javaeye.com/blog/72292</link>
        <guid>http://aninfeel.javaeye.com/blog/72292</guid>
      </item>
      <item>
        <title>spring mvc循序渐进（2）</title>
        <author>aninfeel</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://aninfeel.javaeye.com">aninfeel</a>&nbsp;
          链接：<a href="http://aninfeel.javaeye.com/blog/72285" style="color:red;">http://aninfeel.javaeye.com/blog/72285</a>&nbsp;
          发表时间: 2007年04月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>第十二步&mdash;&mdash;创建一个视图</strong></p>
<p>接下来改创建第一个视图了，就用一个名为hello.jsp的jsp页面吧，同时把它放到war目录下。</p>
<div class="code_title">
<p><font face="Nimbus Mono L"><font size="2"><strong><span id="highlight_tag" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; PADDING-BOTTOM: 0px; COLOR: #ee6600; PADDING-TOP: 0px; BACKGROUND-COLOR: yellow; EE6600: ">spring</span>app/war/hello.jsp</strong></font></font></p>
</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span> </li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>Example&nbsp;::&nbsp;Spring&nbsp;Application</span><span class="tag"><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>Hello&nbsp;-&nbsp;Spring&nbsp;Application</span><span class="tag"><span class="tag-name">h1</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>Greetings.</span><span class="tag"><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag"><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>到目前位置还没看到spring mvc发生作用的痕迹，下面进入正题&mdash;&mdash;修改SpringappController，让它引导视图到上面的hello.jsp页面(spring主页的dtd无法访问，搞得我的tomcat出错，我只好把它改成xsd了)。</p>
<div class="code_title"><strong><font size="2"><font face="Nimbus Mono L">springapp/src/SpringappController.java</font></font></strong><span class="tag"></span></div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;?</span><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;UTF-8&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">beans</span><span>&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://www.springframework.org/schema/beans&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xmlns:xsi</span><span>=</span><span class="attribute-value">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xsi:schemaLocation</span><span>=&quot; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>http://www.springframework.org/schema/beans&nbsp;http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="comments">&lt;!--&nbsp;&nbsp;-&nbsp;Application&nbsp;context&nbsp;definition&nbsp;for&nbsp;&quot;springapp&quot;&nbsp;DispatcherServlet.&nbsp;&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;springappController&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;SpringappController&quot;</span><span class="tag">/&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;urlMapping&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.web.servlet.handler.SimpleUrlHandlerMapping&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;mappings&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;/hello.htm&quot;</span><span class="tag">&gt;</span><span>springappController</span><span class="tag">&lt;/</span><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="tag">&lt;/</span><span class="tag-name">beans</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>修改这个文件的同时，还加了一个日志记录器，以确认我们到底做过什么。上面的视图，也就是这个类返回的，实际上是通过ViewResolver处理的。到目前为止我们还没有指定一个，我们将使用一个默认值，这个默认值只是导向和url的名字相同的已定义视图。下面还将继续修改这个东西。</p>
<p>运行ant，重启tomcat，并访问&nbsp;<a href="http://localhost:8080/springapp/hello.htm">http://localhost:8080/springapp/hello.htm</a>，就可以运行刚才的程序了。</p>
<p>访问<font face="Arial">Tomcat 5.5\logs下的最后一个日志文件，就可以看到刚才的记录了：</font></p>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="number">007</span><span>-</span><span class="number">04</span><span>-</span><span class="number">18</span><span>&nbsp;</span><span class="number">22</span><span>:</span><span class="number">22</span><span>:</span><span class="number">52</span><span>,</span><span class="number">906</span><span>&nbsp;INFO&nbsp;[org.springframework.web.servlet.DispatcherServlet]&nbsp;-&nbsp; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="number">2007</span><span>-</span><span class="number">04</span><span>-</span><span class="number">18</span><span>&nbsp;</span><span class="number">22</span><span>:</span><span class="number">22</span><span>:</span><span class="number">58</span><span>,</span><span class="number">000</span><span>&nbsp;INFO&nbsp;[SpringappController]&nbsp;-&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="number">2007</span><span>-</span><span class="number">04</span><span>-</span><span class="number">18</span><span>&nbsp;</span><span class="number">22</span><span>:</span><span class="number">45</span><span>:</span><span class="number">32</span><span>,</span><span class="number">328</span><span>&nbsp;INFO&nbsp;[SpringappController]&nbsp;-&nbsp;&nbsp;&nbsp;</span> </li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://aninfeel.javaeye.com/blog/72285#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 18 Apr 2007 22:46:38 +0800</pubDate>
        <link>http://aninfeel.javaeye.com/blog/72285</link>
        <guid>http://aninfeel.javaeye.com/blog/72285</guid>
      </item>
      <item>
        <title>spring mvc循序渐进(译) (1)</title>
        <author>aninfeel</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://aninfeel.javaeye.com">aninfeel</a>&nbsp;
          链接：<a href="http://aninfeel.javaeye.com/blog/70820" style="color:red;">http://aninfeel.javaeye.com/blog/70820</a>&nbsp;
          发表时间: 2007年04月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p style="MARGIN-BOTTOM: 0in"><strong>第五步&mdash;&mdash;下载spring发行版</strong></p>
<p style="MARGIN-BOTTOM: 0in">没下就赶紧下，地址：<a href="http://www.springframework.org/download.html">www.springframework.org/download.html</a>，文件名：spring-framework-1.2-with-dependencies.zip（版本号可能不同）</p>
<p style="MARGIN-BOTTOM: 0in">好了，万事俱备，只欠东风，下面开始真正的spring mvc之旅。</p>
<p style="MARGIN-BOTTOM: 0in">第六步&mdash;&mdash;修改 WEB-INF/web.xml文件</p>
<div class="code_title">
<p><strong><font size="2"><font face="Nimbus Mono L">springapp/war/WEB-INF/web.xml</font></font></strong> </p>
</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag"><!--sp--><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;UTF-8&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span> </span></li>
    <li class=""><span><!--CTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'</sp--><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">web-app</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>springapp</span><span class="tag"><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-class</span><span class="tag">&gt;</span><span>org.springframework.web.servlet.DispatcherServlet</span><span class="tag"><span class="tag-name">servlet-class</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">load-on-startup</span><span class="tag">&gt;</span><span>1</span><span class="tag"><span class="tag-name">load-on-startup</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">servlet</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>springapp</span><span class="tag"><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>*.htm</span><span class="tag"><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">servlet-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">welcome-file-list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">welcome-file</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index.jsp &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">welcome-file</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">welcome-file-list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name">web-app</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p>&nbsp;</p>
<p style="MARGIN-BOTTOM: 0in">Go to the 'springapp/war/ WEB-INF' directory. Modify the minimal 'web.xml' file that we created earlier. Now we will modify it to suit our needs. We define a DispatcherServlet that is going to control where all our request are routed based on information we will enter at a later point. It also has a standard servlet-mapping entry that maps to the url patterns that we will be using. I have decided to let any url with an '.htm' extension be routed to the 'springapp' dispatcher.</p>
<p>
<table cellspacing="0" border="1" bordercolor="#000000" width="90%" cellpadding="4">
    <colgroup><col width="256" /></colgroup>
    <tbody>
    </tbody>
</table>
上面定义了一个名为<span>springapp的</span>DispatcherServlet（也许应该转发器），将控制（转发）所有以*.htm结尾的url连接请求，springapp的具体工作内容在下面的新文件springapp-servlet.xml 中定义：</p>
<div class="code_title"><strong><font size="2"><font face="Nimbus Mono L">springapp/war/WEB-INF/springapp-servlet.xml</font></font></strong></div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag"><!--sp--><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;UTF-8&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span> </span></li>
    <li class=""><span><!--CTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans_2_0.dtd"</sp--><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="comments"><!--  springapp的运用程序上下文，也就是springapp所在的程序环境（希望不要越描越黑）  --></span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">beans</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;springappController&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;SpringappController&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;urlMapping&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;org.springframework.web.servlet.handler.SimpleUrlHandlerMapping&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;mappings&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">prop</span><span>&nbsp;</span><span class="attribute">key</span><span>=</span><span class="attribute-value">&quot;/hello.htm&quot;</span><span class="tag">&gt;</span><span>springappController</span><span class="tag"><span class="tag-name">prop</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">props</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">beans</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p>&nbsp;文件名之所以为springapp-servlet.xml，是为了符合java国际惯例。这个文件定义了一个spring 控制器，所谓控制器就是当有人访问某个网址是，控制它运行那个java程序。</p>
<p><strong>第七步&mdash;&mdash;复制spring jar文件到WEB-INF/lib</strong></p>
<p>要复制的文件内容如下(解压下载到的spring文件)：</p>
<p>spring-framework-1.2/dist/spring.jar</p>
<p>spring-framework-1.2/lib/jakarta-commons/commons-logging.jar</p>
<p>&nbsp;</p>
<p><strong>&nbsp;第八步&mdash;&mdash;创建自己的控制器（concroller）</strong></p>
<div class="code_title"><strong><font size="2"><font face="Nimbus Mono L">springapp/src/SpringappController.java</font></font></strong></div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">import</span><span>&nbsp;org.springframework.web.servlet.mvc.Controller; &nbsp;&nbsp;</span></span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;org.springframework.web.servlet.ModelAndView; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;javax.servlet.ServletException; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;javax.servlet.http.HttpServletRequest; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="keyword">import</span><span>&nbsp;javax.servlet.http.HttpServletResponse; &nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;java.io.IOException; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;SpringappController&nbsp;</span><span class="keyword">implements</span><span>&nbsp;Controller &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>{ &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;ModelAndView&nbsp;handleRequest(HttpServletRequest&nbsp;request, &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;ServletException,&nbsp;IOException &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;ModelAndView(</span><span class="string">&quot;&quot;</span><span>); &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<p>&nbsp;</p>
<p>这只是最基本的控制器。spring的控制器没什么特色，只是要返回ModelAndView，具体后面再讲。</p>
<p><strong>第九步&mdash;&mdash;生成war程序</strong></p>
<p>省略吧，如果真的很有空就运行：ant build</p>
<p><strong>第十步&mdash;&mdash;复制并修改log4j.properties</strong></p>
<p>我们只复制不修改下面的内容：</p>
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span>#&nbsp;For&nbsp;JBoss:&nbsp;Avoid&nbsp;to&nbsp;setup&nbsp;Log4J&nbsp;outside&nbsp;$JBOSS_HOME/server/</span><span class="keyword">default</span><span>/deploy/log4j.xml! &nbsp;&nbsp;</span></span></li>
    <li class=""><span>#&nbsp;For&nbsp;all&nbsp;other&nbsp;servers:&nbsp;Comment&nbsp;out&nbsp;the&nbsp;Log4J&nbsp;listener&nbsp;in&nbsp;web.xml&nbsp;to&nbsp;activate&nbsp;Log4J. &nbsp;&nbsp;</span></li>
    <li class="alt"><span>log4j.rootLogger=INFO,&nbsp;stdout,&nbsp;logfile &nbsp;&nbsp;</span></li>
    <li class=""><span>log4j.appender.stdout=org.apache.log4j.ConsoleAppender &nbsp;&nbsp;</span></li>
    <li class="alt"><span>log4j.appender.stdout.layout=org.apache.log4j.PatternLayout &nbsp;&nbsp;</span></li>
    <li class=""><span>log4j.appender.stdout.layout.ConversionPattern=%d&nbsp;%p&nbsp;[%c]&nbsp;-&nbsp;&lt;%m&gt;%n &nbsp;&nbsp;</span></li>
    <li class="alt"><span>log4j.appender.logfile=org.apache.log4j.RollingFileAppender &nbsp;&nbsp;</span></li>
    <li class=""><span>log4j.appender.logfile.File=/Users/trisberg/jakarta-tomcat-</span><span class="number">5.0</span><span>.</span><span class="number">28</span><span>/logs/springapp.log &nbsp;&nbsp;</span></li>
    <li class="alt"><span>log4j.appender.logfile.MaxFileSize=512KB &nbsp;&nbsp;</span></li>
    <li class=""><span>#&nbsp;Keep&nbsp;three&nbsp;backup&nbsp;files. &nbsp;&nbsp;</span></li>
    <li class="alt"><span>log4j.appender.logfile.MaxBackupIndex=</span><span class="number">3</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>#&nbsp;Pattern&nbsp;to&nbsp;output:&nbsp;date&nbsp;priority&nbsp;[category]&nbsp;-&nbsp;message &nbsp;&nbsp;</span></li>
    <li class="alt"><span>log4j.appender.logfile.layout=org.apache.log4j.PatternLayout &nbsp;&nbsp;</span></li>
    <li class=""><span>log4j.appender.logfile.layout.ConversionPattern=%d&nbsp;%p&nbsp;[%c]&nbsp;-&nbsp;%m%n &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p><strong>第十一步&mdash;&mdash;发布（省略）</strong></p>
          <br/>
          <span style="color:red;">
            <a href="http://aninfeel.javaeye.com/blog/70820#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 13 Apr 2007 22:30:29 +0800</pubDate>
        <link>http://aninfeel.javaeye.com/blog/70820</link>
        <guid>http://aninfeel.javaeye.com/blog/70820</guid>
      </item>
      <item>
        <title>spring mvc循序渐进(译)</title>
        <author>aninfeel</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://aninfeel.javaeye.com">aninfeel</a>&nbsp;
          链接：<a href="http://aninfeel.javaeye.com/blog/69681" style="color:red;">http://aninfeel.javaeye.com/blog/69681</a>&nbsp;
          发表时间: 2007年04月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p align="center" style="MARGIN-BOTTOM: 0in">第一部分&nbsp;&ndash; 基本运用和配置运行环境</p>
<p align="center" style="MARGIN-BOTTOM: 0in"><strong>Thomas Risberg</strong><br />
July, 2003</p>
<p align="center" style="MARGIN-BOTTOM: 0in">(Revised April, 2005)</p>
<p style="MARGIN-BOTTOM: 0in">这是一份关于如何使用spring framework开发网络运用程序的文档。</p>
<p style="MARGIN-BOTTOM: 0in">软件需求：</p>
<ol>
    <li>
    <div style="MARGIN-BOTTOM: 0in">
    <p style="MARGIN-BOTTOM: 0in">java SDK(1.4.2或更高)</p>
    </div>
    </li>
    <li>
    <div style="MARGIN-BOTTOM: 0in">
    <p style="MARGIN-BOTTOM: 0in">ant(1.6.2或更高)</p>
    </div>
    </li>
    <li>
    <div style="MARGIN-BOTTOM: 0in">
    <p style="MARGIN-BOTTOM: 0in">apache tomcat(5.0.28或更高)</p>
    </div>
    </li>
</ol>
<p style="MARGIN-BOTTOM: 0in"><strong>第一步&mdash;&mdash;开发文件的目录</strong></p>
<p style="MARGIN-BOTTOM: 0in">首先需要一个目录来存放所有的源代码和其它一些我们需要的文件，就把它命名为&ldquo;springapp&rdquo;吧，至于这个目录放在哪里，就看你的需要了（为了和下面的ant配合，你最好放在tomcat的webapps下）。在这个目录里面还需要新建一个存放所以java源代码的目录&mdash;&mdash;src；同时新建另外一个便于用来打包war文件的目录&mdash;&mdash;war，java、jsp文件和各种配置文件都放在这里。</p>
<p style="MARGIN-BOTTOM: 0in"><strong>第二部&mdash;&mdash; 创建首页 index.jsp</strong></p>
<p style="MARGIN-BOTTOM: 0in">这是首页文件，整个应用程序的入口，放在war目录下：</p>
<div class="code_title">
<p><strong><font size="2"><font face="Nimbus Mono L">springapp/war/index.jsp</font></font></strong> </p>
</div>
<div class="dp-highlighter">
<ol class="dp-j">
    <li class="alt"><span><span></span></span></li>
    <li class="alt"><span><span></span></span></li>
    <li class="alt"><span><span></span></span></li>
    <li class="alt"><span><span></span></span></li>
    <li class="alt"><span><span></span></span></li>
    <li class="alt"><span><span>
    <h1>Example&nbsp;-&nbsp;Spring&nbsp;Application</h1>
    </span></span></li>
    <li class="alt"><span><span>
    <p>This&nbsp;is&nbsp;my&nbsp;test.</p>
    </span></span></li>
    <li class="alt"><span><span></span></span></li>
    <li class="alt"><span><span>&nbsp;&nbsp;</span></span> </li>
</ol>
</div>
<p style="MARGIN-BOTTOM: 0in">为了迎合web应用程序，还需要在war的WEB-INF目录下创建一个web.xml文件：</p>
<div class="code_title">
<p><strong><font size="2"><font face="Nimbus Mono L">springapp/war/WEB-INF/web.xml</font></font></strong> </p>
</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag"><!--sp--><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span>&nbsp;</span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">&quot;UTF-8&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span> </span></li>
    <li class=""><span><!--CTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'</sp--><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">web-app</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag"><span class="tag-name">web-app</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
<p style="MARGIN-BOTTOM: 0in">&nbsp;</p>
<p style="MARGIN-BOTTOM: 0in"><strong>第三步&mdash;&mdash;发布到tomcat中，让程序可以在tomcat中运行</strong></p>
<p style="MARGIN-BOTTOM: 0in">下面是一个ant脚本（还入门呢，让新手望而却步。ant是一个方便一次性对java进行编译、打包、运行等的软件），这个脚本的使用一直贯穿整个文档。这个脚本功能挺多的，我把我认为没用的和我看不懂的全删除了，现在的主要功能是建立发布运用程序。脚本如下：</p>
<div class="code_title"><strong><font size="2"><font face="Nimbus Mono L">springapp/build.xml</font></font></strong></div>
<div class="code_title">
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag"><!--sp--><span class="tag-name">xml</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;1.0&quot;</span><span class="tag">?&gt;</span><span>&nbsp;&nbsp;</span></span> </span><font face="Arial">springapp.war文件，启动或重启tomcat，浏览<font face="Arial"><a href="http://127.0.0.1:8080/springapp/">http://127.0.0.1:8080/springapp/</a>，就可以看到那个空有jsp名称而没有jsp实质的index.jsp的内容了。</font></font> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">project</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;springapp&quot;</span><span>&nbsp;</span><span class="attribute">basedir</span><span>=</span><span class="attribute-value">&quot;.&quot;</span><span>&nbsp;</span><span class="attribute">default</span><span>=</span><span class="attribute-value">&quot;deploywar&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;src.dir&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;src&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span><span class="comments"><!--源代码目录--></span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;web.dir&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;war&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span><span class="comments"><!--要打包成war的目录--></span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;build.dir&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;${web.dir}/WEB-INF/classes&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span><span class="comments"><!--编译生成的*.class文件的存放目录--></span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;appserver.home&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;../../&quot;</span><span class="tag">/&gt;</span><span>&nbsp;</span><span class="comments"><!--tomcat的主目录，我把它改成了相对的--></span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;deploy.path&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;../&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span><span class="comments"><!--让程序在tomcat运行的目录，我这里指向tomcat的webapps--></span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;name&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;springapp&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span><span class="comments"><!--打包成的war的文件名称--></span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">path</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;master-classpath&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">fileset</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${web.dir}/WEB-INF/lib&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">include</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;*.jar&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">fileset</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">fileset</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${appserver.home}/common/lib&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">include</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;servlet*.jar&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">fileset</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">pathelement</span><span>&nbsp;</span><span class="attribute">path</span><span>=</span><span class="attribute-value">&quot;${build.dir}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag">&lt;</span><span class="tag-name">pathelement</span><span>&nbsp;</span><span class="attribute">path</span><span>=</span><span class="attribute-value">&quot;${build.dir}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">path</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;build&quot;</span><span>&nbsp;</span><span class="attribute">description</span><span>=</span><span class="attribute-value">&quot;Compile&nbsp;main&nbsp;source&nbsp;tree&nbsp;java&nbsp;files&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span><span class="comments"><!--编译--></span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">mkdir</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${build.dir}&quot;</span><span class="tag">/&gt;</span><span>&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">javac</span><span>&nbsp;</span><span class="attribute">destdir</span><span>=</span><span class="attribute-value">&quot;${build.dir}&quot;</span><span>&nbsp;</span><span class="attribute">debug</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span>&nbsp;&nbsp;&nbsp;</span><span class="attribute">deprecation</span><span>=</span><span class="attribute-value">&quot;false&quot;</span><span>&nbsp;</span><span class="attribute">optimize</span><span>=</span><span class="attribute-value">&quot;false&quot;</span><span>&nbsp;</span><span class="attribute">failonerror</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">src</span><span>&nbsp;</span><span class="attribute">path</span><span>=</span><span class="attribute-value">&quot;${src.dir}&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">classpath</span><span>&nbsp;</span><span class="attribute">refid</span><span>=</span><span class="attribute-value">&quot;master-classpath&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">javac</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span></span><span class="tag"><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;</span> </li>
    <li class="alt"><span></span><span class="tag">&lt;</span><span class="tag-name">target</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;deploywar&quot;</span><span>&nbsp;</span><span class="attribute">depends</span><span>=</span><span class="attribute-value">&quot;build&quot;</span><span>&nbsp;</span><span class="attribute">description</span><span>=</span><span class="attribute-value">&quot;Deploy&nbsp;application&nbsp;as&nbsp;a&nbsp;WAR&nbsp;file&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span><span class="comments"><!--生成war并做必要的拷贝--></span><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">war</span><span>&nbsp;</span><span class="attribute">destfile</span><span>=</span><span class="attribute-value">&quot;${name}.war&quot;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">webxml</span><span>=</span><span class="attribute-value">&quot;${web.dir}/WEB-INF/web.xml&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">fileset</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;${web.dir}&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">include</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;**/*.*&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">fileset</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">war</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">copy</span><span>&nbsp;</span><span class="attribute">todir</span><span>=</span><span class="attribute-value">&quot;${deploy.path}&quot;</span><span>&nbsp;</span><span class="attribute">preservelastmodified</span><span>=</span><span class="attribute-value">&quot;true&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">fileset</span><span>&nbsp;</span><span class="attribute">dir</span><span>=</span><span class="attribute-value">&quot;.&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">include</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;*.war&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span> </li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">fileset</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag"><span class="tag-name">copy</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span> </span></li>
    <li class=""><span></span><span class="tag"><span class="tag-name">target</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span> </li>
    <li class=""><span></span><span class="tag"><span class="tag-name">project</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span> </span></li>
</ol>
</div>
</div>
<span><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag"><span class="tag">
<p style="MARGIN-BOTTOM: 0in">&nbsp;</p>
<p style="MARGIN-BOTTOM: 0in"><strong>第四步&mdash;&mdash;测试</strong></p>
<p style="MARGIN-BOTTOM: 0in">在WEB-INF下建个lib文件，运行上面的ant脚本，就可以看到tomcat的webapps目录下多了一个<font face="Arial">springapp.war，启动或重启tomcat，浏览<font face="Arial"><a href="http://127.0.0.1:8080/springapp/">http://127.0.0.1:8080/springapp/</a>，就看到index.jsp的内容了。</font></font></p>
<p style="MARGIN-BOTTOM: 0in">（算了，第五步以后写在另一个地方，写了那么多都没提交上去，白写了，郁闷）。</p>
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>