<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>andyjames</title>
    <description></description>
    <link>http://andyjames.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>Struts2 Map嵌套List实现</title>
        <author>andyjames</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyjames.javaeye.com">andyjames</a>&nbsp;
          链接：<a href="http://andyjames.javaeye.com/blog/195663" style="color:red;">http://andyjames.javaeye.com/blog/195663</a>&nbsp;
          发表时间: 2008年05月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>最近一直在研究struts2,看了sturts2和博客的相关文章，学习了Struts2 Map嵌套List实现，下面是是示例演示：</p>
<p>要求：一个业务线对应一个目录树 <br /><br /><br /><img src="http://hiphotos.baidu.com/vsandjava/pic/item/dff40e248f54383ad507425b.jpg" height="218" alt="" width="162" /></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span>过程</span><span><span style="font-family: Times New Roman;">: </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span><span style="font-family: Times New Roman;">1.</span></span><span>页面前一个</span><span><span style="font-family: Times New Roman;">Action</span></span><span>中实现</span><span><span style="font-family: Times New Roman;">ServletRequestAware</span></span><span>接口</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span><span style="font-family: Times New Roman;">2.</span></span><span>在</span><span><span style="font-family: Times New Roman;">Action</span></span><span>中将</span><span>s</span><span><span style="font-family: Times New Roman;">erviceTypesCategories </span></span><span>放入</span><span><span style="font-family: Times New Roman;">request</span></span><span>中</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span><span style="font-size: small; font-family: Times New Roman;">private Map&lt;String, List&lt;Category&gt;&gt; serviceTypesCategories = new HashMap&lt;String, List&lt;Category&gt;&gt;();</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span><span style="font-size: small; font-family: Times New Roman;">request.setAttribute("serviceTypesCategories", serviceTypesCategories);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span><span style="font-family: Times New Roman;">3.JSP</span></span><span>页面代码</span></span></p>
<p><span style="color: #ff00ff;">&lt;s:iterator value="%{serviceTypesCategories.keySet()}" id="serviceTypeString" &gt;<br />&lt;s:set name="serviceTypeRequest" scope="request" value="#serviceTypeString"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;s:text name="preferential_servicestype"/&gt;:&lt;s:property value="serviceTypeString"/&gt;&lt;</span>br&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;%<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Map&lt;String, List&lt;Category&gt;&gt; serviceTypesCategories = (Map&lt;String, List&lt;Category&gt;&gt;) request<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .getAttribute("serviceTypesCategories");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String servicetype = (String) request.getAttribute("serviceTypeRequest");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PreferentialCheckTreeUtil util = new PreferentialCheckTreeUtil();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;Category&gt; myCategories = serviceTypesCategories.get(servicetype);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;Category&gt; rootCategories = new ArrayList&lt;Category&gt;();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(" &lt;script language=\"JavaScript\"&gt;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("var check" + treeIndex + " = new CheckTree('check" + treeIndex + "');");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;/script&gt;");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println(" &lt;ul id=\"tree-check" + treeIndex + "\" class=\"checktree\"&gt;");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Category category : myCategories) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (category.getLevel() == 1) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rootCategories.add(category);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; final PrintWriter mcpsOut = response.getWriter();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Category rootCategory : rootCategories) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // out.println(rootCategory.getName());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //判定是否是当前层的最后一个节点<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (rootCategory.getId() == rootCategories.get(rootCategories.size() - 1).getId()) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; util.printCategoryWithCheck(rootCategory, out, true);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; util.printCategoryWithCheck(rootCategory, out, false);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.println("&lt;/ul&gt;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; treeIndex++;<br />&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<br />&lt;/s:iterator&gt;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span>注意：这里使用了</span><span><span style="font-family: Times New Roman;">&lt;S:SET/&gt;</span></span><span>标签，并且设置</span><span><span style="font-family: Times New Roman;">scope</span></span><span>为</span><span><span style="font-family: Times New Roman;">request,</span></span><span>如果不放入</span><span><span style="font-family: Times New Roman;">request</span></span><span>中，会出现页面偶尔显示不出来的情况</span><span><span style="font-family: Times New Roman;">,</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span>原因是</span><span><span style="font-family: Times New Roman;">: &lt;s:iterator value="%{serviceTypesCategories.<span style="color: #ff00ff;">keySet()</span>}" id="<span style="color: #3366ff;">serviceTypeString</span>" &gt;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span>默将</span><span style="color: #3366ff;"><span style="font-family: Times New Roman;">serviceTypeString</span></span><span style="color: #3366ff;">放入</span><span style="color: #3366ff;"><span style="font-family: Times New Roman;">stack context</span></span><span style="color: #3366ff;">中，并非</span><span style="color: #3366ff;"><span style="font-family: Times New Roman;">reqeust</span></span><span style="color: #3366ff;">中</span><span style="color: #3366ff;"><span style="font-family: Times New Roman;">.</span></span></span></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://andyjames.javaeye.com/blog/195663#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 22 May 2008 14:57:18 +0800</pubDate>
        <link>http://andyjames.javaeye.com/blog/195663</link>
        <guid>http://andyjames.javaeye.com/blog/195663</guid>
      </item>
      <item>
        <title>Javascript 函数快速查询手册</title>
        <author>andyjames</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyjames.javaeye.com">andyjames</a>&nbsp;
          链接：<a href="http://andyjames.javaeye.com/blog/195653" style="color:red;">http://andyjames.javaeye.com/blog/195653</a>&nbsp;
          发表时间: 2008年05月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Javascript 函数快速查询手册
          <br/>
          <span style="color:red;">
            <a href="http://andyjames.javaeye.com/blog/195653#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 22 May 2008 14:39:22 +0800</pubDate>
        <link>http://andyjames.javaeye.com/blog/195653</link>
        <guid>http://andyjames.javaeye.com/blog/195653</guid>
      </item>
      <item>
        <title>jsp2.0官方学习</title>
        <author>andyjames</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyjames.javaeye.com">andyjames</a>&nbsp;
          链接：<a href="http://andyjames.javaeye.com/blog/195146" style="color:red;">http://andyjames.javaeye.com/blog/195146</a>&nbsp;
          发表时间: 2008年05月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          jspjspjsp
          <br/>
          <span style="color:red;">
            <a href="http://andyjames.javaeye.com/blog/195146#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 21 May 2008 11:01:00 +0800</pubDate>
        <link>http://andyjames.javaeye.com/blog/195146</link>
        <guid>http://andyjames.javaeye.com/blog/195146</guid>
      </item>
      <item>
        <title>struts2示例学习1-HelloWorld</title>
        <author>andyjames</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyjames.javaeye.com">andyjames</a>&nbsp;
          链接：<a href="http://andyjames.javaeye.com/blog/195125" style="color:red;">http://andyjames.javaeye.com/blog/195125</a>&nbsp;
          发表时间: 2008年05月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: small; font-family: 宋体;"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是Struts2的第二篇入门学习，从helloworld入手学习，使用了MVC的设置模式，下面是详细介绍和示例：</strong></span><span><strong><br /><br /></strong><span style="font-size: small; font-family: 宋体;">&nbsp;&nbsp;&nbsp; 当提交一个Html的Form给Struts2框架时，数据不再是提交给服务器端的某一个JSP页面，而是提交给一个Action类。而框架根据配置文件把与该Action类对应的页面（这个页面可以是JSP页面，也可以是PDF、Excel或Applet）返回给客户端。</span></span></p>
<p><span style="font-size: small; font-family: 宋体;">写一个Struts2的HelloWorld ， 我们需要做三件事：</span></p>
<p><span style="font-size: small; font-family: 宋体;">1. 创建一个显示信息的JSP文件</span></p>
<p><span style="font-size: small; font-family: 宋体;">2. 创建一个生成信息的Action类</span></p>
<p><span style="font-size: small; font-family: 宋体;">3. 建立JSP页面和Action的mapping（映射）<br /><br /></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><strong>创建HelloWorld.jsp文件&nbsp;<br /></strong>&nbsp;</span></span></span></p>
<div style="scrollbar-highlight-color: buttonhighlight; overflow: auto; width: 500px;">
<pre><div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">%...@ taglib </span><span style="color: #ff0000;">prefix</span><span style="color: #0000ff;">="s"</span><span style="color: #ff0000;"> uri</span><span style="color: #0000ff;">="/struts-tags"</span><span style="color: #ff0000;"> %</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
</span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Hello World!</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">h2</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">s:property </span><span style="color: #ff0000;">value</span><span style="color: #0000ff;">="message"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">h2</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
</span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
</span></div>
</pre>
</div>
<p><br /><span style="font-size: small; font-family: 宋体;">HelloWorld.jsp存放在war目录下面 </span></p>
<p><span><span style="font-size: small;"><span style="font-family: 宋体;"><strong>创建Action类HelloWorld.java<br /></strong>&nbsp;<br /></span></span></span></p>
<div style="scrollbar-highlight-color: buttonhighlight; overflow: auto; width: 500px;">
<pre><div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #000000;">package tutorial;
import com.opensymphony.xwork2.ActionSupport;
</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span></span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #000000;"> HelloWorld extends ActionSupport ...{
</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> final String MESSAGE </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">Struts is up and running ...</span><span style="color: #000000;">"</span></span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #000000;">;
</span><span style="color: #0000ff;">public</span></span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #000000;"> String execute() throws Exception ...{
setMessage(MESSAGE);
</span><span style="color: #0000ff;">return</span></span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #000000;"> SUCCESS;
}
</span><span style="color: #0000ff;">private</span></span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #000000;"> String message;
</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span></span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #000000;"> setMessage(String message)...{
</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.message </span><span style="color: #000000;">=</span></span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #000000;"> message;
}
</span><span style="color: #0000ff;">public</span></span></span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #000000;"> String getMessage() ...{
</span><span style="color: #0000ff;">return</span></span></span></span><span style="color: #000000;"><span style="font-size: small; font-family: 宋体;"> message;
}
}</span></span></div>
</pre>
</div>
<p><span style="font-size: small; font-family: 宋体;">HelloWorld.java存放在src/tutorial下面<br /><strong>在struts.xml建立映射</strong><br /><br /></span></p>
<div style="scrollbar-highlight-color: buttonhighlight; overflow: auto; width: 500px;">
<pre><div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--><span style="color: #0000ff;"><span style="font-size: small; font-family: 宋体;">&lt;!</span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #ff00ff;">DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
</span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">struts</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">package </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="tutorial"</span><span style="color: #ff0000;"> extends</span><span style="color: #0000ff;">="struts-default"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">action </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="HelloWorld"</span><span style="color: #ff0000;"> class</span><span style="color: #0000ff;">="tutorial.HelloWorld"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">            </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">result</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">/HelloWorld.jsp</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">result</span><span style="color: #0000ff;">&gt;</span></span></span></span><span><span style="color: #000000;">
</span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">action</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #008000;">&lt;!--</span><span style="color: #008000;"> Add your actions here </span><span style="color: #008000;">--&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">package</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
</span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">struts</span><span style="color: #0000ff;">&gt;</span></span></span></span></div>
</pre>
</div>
<p><span><span style="font-size: small;"><span style="font-family: 宋体;">&nbsp;<br />&nbsp;&nbsp;&nbsp; 此文件存放在classes下面，同时还要建一个struts.properties的属性文件放在这个目录下，这个文件可以是空的，什么都不写<br /><strong>创建web.xml</strong></span></span></span></p>
<div style="scrollbar-highlight-color: buttonhighlight; overflow: auto; width: 500px;">
<pre><div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000ff;">?&gt;</span></span></span></span><span><span style="color: #000000;">
</span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">web-app</span><span style="color: #0000ff;">&gt;</span></span></span></span><span><span style="color: #000000;">
</span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">display-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Struts2 Hello World!</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">display-name</span><span style="color: #0000ff;">&gt;</span></span></span></span><span><span style="color: #000000;">
</span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span></span></span></span><span><span style="color: #000000;">
</span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">struts2</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span></span></span></span><span><span style="color: #000000;">
</span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">org.apache.struts2.dispatcher.FilterDispatcher</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">&gt;</span></span></span></span><span><span style="color: #000000;">
</span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span></span></span></span><span><span style="color: #000000;">
</span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">&gt;</span></span></span></span><span><span style="color: #000000;">
</span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">struts2</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span></span></span></span><span><span style="color: #000000;">
</span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">/*</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span></span></span></span><span><span style="color: #000000;">
</span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">&gt;</span></span></span></span><span><span style="color: #000000;">
</span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">web-app</span><span style="color: #0000ff;">&gt;</span></span></span></span></div>
</pre>
</div>
<p><span style="font-size: small; font-family: 宋体;">&nbsp;<br />web.xml毫无疑问放在WEB-INF下</span></p>
<p><span style="font-size: small; font-family: 宋体;">&nbsp;<br /><strong>创建build.xml</strong><br /></span></p>
<div style="scrollbar-highlight-color: buttonhighlight; overflow: auto; width: 500px;">
<pre><div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
<a href="http://www.CodeHighlighter.com/" target="_blank">http://www.CodeHighlighter.com/</a>
--><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml version="1.0"</span><span style="color: #0000ff;">?&gt;</span></span></span></span><span style="color: #000000;">
</span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">project </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="struts2app"</span><span style="color: #ff0000;"> basedir</span><span style="color: #0000ff;">="."</span><span style="color: #ff0000;"> default</span><span style="color: #0000ff;">="usage"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property </span><span style="color: #ff0000;">file</span><span style="color: #0000ff;">="build.properties"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="src.dir"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="src"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="web.dir"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="war"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="build.dir"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="${web.dir}/WEB-INF/classes"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="name"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="struts2app"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">path </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="master-classpath"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">fileset </span><span style="color: #ff0000;">dir</span><span style="color: #0000ff;">="${web.dir}/WEB-INF/lib"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">            </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">include </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="*.jar"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">fileset</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #008000;">&lt;!--</span><span style="color: #008000;"> We need the servlet API classes:        </span><span style="color: #008000;">--&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">   for Tomcat 4.1 use servlet.jar        </span><span style="color: #008000;">--&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">   for Tomcat 5.0 use servlet-api.jar    </span><span style="color: #008000;">--&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">   for Other app server - check the docs </span><span style="color: #008000;">--&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">fileset </span><span style="color: #ff0000;">dir</span><span style="color: #0000ff;">="${appserver.home}/common/lib"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">            </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">include </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="servlet*.jar"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">fileset</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">pathelement </span><span style="color: #ff0000;">path</span><span style="color: #0000ff;">="${build.dir}"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">path</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">target </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="usage"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">echo </span><span style="color: #ff0000;">message</span><span style="color: #0000ff;">=""</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">echo </span><span style="color: #ff0000;">message</span><span style="color: #0000ff;">="${name} build file"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">echo </span><span style="color: #ff0000;">message</span><span style="color: #0000ff;">="-----------------------------------"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">echo </span><span style="color: #ff0000;">message</span><span style="color: #0000ff;">=""</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">echo </span><span style="color: #ff0000;">message</span><span style="color: #0000ff;">="Available targets are:"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">echo </span><span style="color: #ff0000;">message</span><span style="color: #0000ff;">=""</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">echo </span><span style="color: #ff0000;">message</span><span style="color: #0000ff;">="build     --&gt; Build the application"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">echo </span><span style="color: #ff0000;">message</span><span style="color: #0000ff;">="deploy    --&gt; Deploy application as directory"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">echo </span><span style="color: #ff0000;">message</span><span style="color: #0000ff;">=""</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">target</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">target </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="build"</span><span style="color: #ff0000;"> description</span><span style="color: #0000ff;">="Compile main source tree java files"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">mkdir </span><span style="color: #ff0000;">dir</span><span style="color: #0000ff;">="${build.dir}"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">javac </span><span style="color: #ff0000;">destdir</span><span style="color: #0000ff;">="${build.dir}"</span><span style="color: #ff0000;"> target</span><span style="color: #0000ff;">="1.3"</span><span style="color: #ff0000;"> debug</span><span style="color: #0000ff;">="true"</span></span></span></span><span style="color: #ff0000;">
<span style="font-size: small; font-family: 宋体;">               deprecation</span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">="false"</span><span style="color: #ff0000;"> optimize</span><span style="color: #0000ff;">="false"</span><span style="color: #ff0000;"> failonerror</span><span style="color: #0000ff;">="true"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">            </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">src </span><span style="color: #ff0000;">path</span><span style="color: #0000ff;">="${src.dir}"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">            </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">classpath </span><span style="color: #ff0000;">refid</span><span style="color: #0000ff;">="master-classpath"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">javac</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">target</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">target </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="deploy"</span><span style="color: #ff0000;"> depends</span><span style="color: #0000ff;">="build"</span><span style="color: #ff0000;"> description</span><span style="color: #0000ff;">="Deploy application"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">copy </span><span style="color: #ff0000;">todir</span><span style="color: #0000ff;">="${deploy.path}/${name}"</span><span style="color: #ff0000;"> preservelastmodified</span><span style="color: #0000ff;">="true"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">            </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">fileset </span><span style="color: #ff0000;">dir</span><span style="color: #0000ff;">="${web.dir}"</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">                </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">include </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="**/*.*"</span><span style="color: #0000ff;">/&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">            </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">fileset</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">        </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">copy</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
<span style="font-size: small; font-family: 宋体;">    </span></span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">target</span><span style="color: #0000ff;">&gt;</span></span></span></span><span style="color: #000000;">
</span><span><span style="font-size: small;"><span style="font-family: 宋体;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">project</span><span style="color: #0000ff;">&gt;</span></span></span></span></div>
</pre>
</div>
<p><span style="font-size: small; font-family: 宋体;">&nbsp;<br />build.xml放在struts2app目录下，再在这个目录下建一个build.properties文件，内容如下:</span></p>
<p><span style="font-size: small; font-family: 宋体;">按照build.properties配置你的tomcat位置。在struts2app目录下运行ant build ，ant deploy ，程序就发布到tomcat的webapps下</span></p>
<p><span style="font-size: small; font-family: 宋体;"># Ant properties for building the springapp<br />appserver.home=d:/tomcat5.5<br />deploy.path=${appserver.home}/webapps</span></p>
<p><span style="font-size: small; font-family: 宋体;">tomcat.manager.url=http://localhost:8080/manager<br />tomcat.manager.username=admin<br />tomcat.manager.password=admin<br />&nbsp;</span></p>
<p><span style="font-size: small; font-family: 宋体;">运行<br />现在，启动tomcat，访问</span><a href="http://localhost:8080/tutorial/HelloWorld.action"><span style="font-size: small; font-family: 宋体;">http://localhost:8080/tutorial/HelloWorld.action</span></a><span style="font-size: small; font-family: 宋体;">，能看到页面的title为"Hello World!" ，页面上显示"Struts is up and running!".</span></p>
<p><span style="font-size: small; font-family: 宋体;">它们怎么运行的<br />1、struts2容器收到HelloWorld.action请求，从web.xml获取设置，org.apache.struts2.dispatcher.FilterDispatcher是所有应用（包括*.action）的入口点。<br />2、&nbsp;struts2在struts.xml中找到HelloWorld类（Action），并调用它的execute方法。<br />3、&nbsp;execute方法给message变量赋值，并返回SUCCESS，struts2收到SUCCESS标志，按照映射关系，把HelloWorld.jsp返回客户端。<br />4、&nbsp;&nbsp;当HelloWorld.jsp开始运行，&lt;s:property value="message" /&gt;会调用HelloWorld类getMessage方法，把结果显示在页面上。</span></p>
          <br/>
          <span style="color:red;">
            <a href="http://andyjames.javaeye.com/blog/195125#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 21 May 2008 10:39:16 +0800</pubDate>
        <link>http://andyjames.javaeye.com/blog/195125</link>
        <guid>http://andyjames.javaeye.com/blog/195125</guid>
      </item>
      <item>
        <title>struts2示例学习2-快速起步</title>
        <author>andyjames</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyjames.javaeye.com">andyjames</a>&nbsp;
          链接：<a href="http://andyjames.javaeye.com/blog/193302" style="color:red;">http://andyjames.javaeye.com/blog/193302</a>&nbsp;
          发表时间: 2008年05月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>这几天去sturs官网学习了一下，把示例翻译了一下，在这里和大家一起分享一下 <br />strutsdemo学习网站 <br />ttp://struts.apache.org/2.x/docs/simple-setup.html <br /><br />Struts2学习笔记-part1: 快速起步 <br /><br />准备工作: <br />下载struts2: http://apache.mirror.phpchina.com/struts/binaries/struts-2.0.11.1-all.zip <br />准备Tomcat5.x <br /><br />建立一个Java Web项目,提取最少运行Struts2应用的包集合(摘自Struts官方文档): <br />Install the Minimum Set of Libraries and Configuration Files <br />The following files are a minium requirement for your application. <br />Filename Description <br />struts2-core.jar Framework library itself, found in distribution root directory <br />xwork.jar XWork 2 library on which Struts 2 is built (version 2.0 or later) <br />ognl.jar Object Graph Navigation Language (OGNL), the expression language used throughout the framework <br />freemarker.jar All UI tag templates are written in Freemarker (also a good option for your own views) <br />commons-logging.jar Commons logging, which the framework uses to support transparently logging to either Log4J or JDK 1.4+ <br />web.xml Java web application configuration file that defines the filters (and other components) for your web application <br />struts.xml Framework configuration file that defines the actions, results, and interceptors for your application <br /><br />If any Struts 2 Plugins are included, then other JARs may be needed too. For example, the optional Spring Plugin requires the Spring JARs to be present. <br /><br /><br />目标:实现一个简单的用户登录. <br /><br />下面是实现源码: <br /><br />一、先实现登录页面 <br />&lt;%-- <br />登录页面 <br />User: leizhimin <br />Date: 2008-3-14 <br />Time: 15:45:52 <br />To change this template use File | Settings | File Templates. <br />--%&gt; <br />&lt;%@ page contentType="text/html;charset=GBK" language="java" %&gt; <br />&lt;html&gt; <br />&lt;head&gt;&lt;title&gt;登录页面&lt;/title&gt;&lt;/head&gt; <br /><br />&lt;body&gt; <br />&lt;form action="Login.action" method="post"&gt; <br />&lt;table align="center"&gt; <br />&lt;caption&gt;&lt;h3&gt;用户登录&lt;/h3&gt;&lt;/caption&gt; <br />&lt;tr&gt; <br />&lt;td&gt;用户名:&lt;input type="text" name="username"/&gt;&lt;/td&gt; <br />&lt;/tr&gt; <br />&lt;tr&gt; <br />&lt;td&gt;密 码:&lt;input type="text" name="password"/&gt;&lt;/td&gt; <br />&lt;/tr&gt; <br />&lt;tr align="center"&gt; <br />&lt;td align="center"&gt; <br />&lt;input type="submit" value="登录"/&gt; <br />&lt;input type="reset" value="重填"/&gt; <br />&lt;/td&gt; <br />&lt;/tr&gt; <br />&lt;/table&gt; <br />&lt;/form&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br />二、实现处理页面的Action <br /><br />package stu; <br /><br />/** <br />* 处理用户请求的Action <br />* File: LoginAction.java <br />* User: leizhimin <br />* Date: 2008-3-14 15:59:07 <br />*/ <br />public class LoginAction { <br />private String username; <br />private String password; <br /><br />/** <br />* 处理用户请求的execute方法 <br />* 因为Struts2的拦截机制,他们负责解析用户的请求参数,并将请求参数赋给Action对应的属性 <br />* <br />* @return 当用户名为aaa并且密码为123时,返回success,否则,返回error. <br />* @throws Exception <br />*/ <br />public String execute() throws Exception { <br />//当用户名为aaa并且密码为123时,返回success,否则,返回error. <br />if (getUsername().equals("aaa") &amp;&amp; getPassword().equals("123")) { <br />return "success"; <br />} else { <br />return "error"; <br />} <br />} <br /><br />public String getPassword() { <br />return password; <br />} <br /><br />public void setPassword(String password) { <br />this.password = password; <br />} <br /><br />public String getUsername() { <br />return username; <br />} <br /><br />public void setUsername(String username) { <br />this.username = username; <br />} <br />} <br /><br />三、配置Web.xml <br /><br />&lt;?xml version="1.0" encoding="GBK"?&gt; <br /><br />&lt;web-app version="2.4" <br />xmlns="http://java.sun.com/xml/ns/j2ee" <br />xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <br />xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt; <br /><br />&lt;display-name&gt;Struts Blank&lt;/display-name&gt; <br />&lt;!--定义Struts2的FilterDispatcher的Filter--&gt; <br />&lt;filter&gt; <br />&lt;!--定义核心Filter的名字--&gt; <br />&lt;filter-name&gt;struts2&lt;/filter-name&gt; <br />&lt;!--定义核心Filter的实现类--&gt; <br />&lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher&lt;/filter-class&gt; <br />&lt;/filter&gt; <br />&lt;!--FilterDispatcher用来初始化Struts2并且处理所有的Web请求--&gt; <br />&lt;filter-mapping&gt; <br />&lt;filter-name&gt;struts2&lt;/filter-name&gt; <br />&lt;url-pattern&gt;/*&lt;/url-pattern&gt; <br />&lt;/filter-mapping&gt; <br /><br />&lt;welcome-file-list&gt; <br />&lt;welcome-file&gt;/login.jsp&lt;/welcome-file&gt; <br />&lt;/welcome-file-list&gt; <br />&lt;/web-app&gt; <br /><br />四、配置Action处理结果和资源资源之间的映射关系 <br />注意：此文件打包后位于WEB-INF/classes/目录下面，或者放入classpath。 <br /><br />&lt;?xml version="1.0" encoding="GBK"?&gt; <br /><br />&lt;web-app version="2.4" <br />xmlns="http://java.sun.com/xml/ns/j2ee" <br />xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <br />xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt; <br /><br />&lt;display-name&gt;Struts Blank&lt;/display-name&gt; <br />&lt;!--定义Struts2的FilterDispatcher的Filter--&gt; <br />&lt;filter&gt; <br />&lt;!--定义核心Filter的名字--&gt; <br />&lt;filter-name&gt;struts2&lt;/filter-name&gt; <br />&lt;!--定义核心Filter的实现类--&gt; <br />&lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher&lt;/filter-class&gt; <br />&lt;/filter&gt; <br />&lt;!--FilterDispatcher用来初始化Struts2并且处理所有的Web请求--&gt; <br />&lt;filter-mapping&gt; <br />&lt;filter-name&gt;struts2&lt;/filter-name&gt; <br />&lt;url-pattern&gt;/*&lt;/url-pattern&gt; <br />&lt;/filter-mapping&gt; <br /><br />&lt;welcome-file-list&gt; <br />&lt;welcome-file&gt;/login.jsp&lt;/welcome-file&gt; <br />&lt;/welcome-file-list&gt; <br />&lt;/web-app&gt; <br /><br />五、增加登录成功和失败页面 <br /><br />&lt;%@ page contentType="text/html;charset=GBK" language="java" %&gt; <br />&lt;html&gt; <br />&lt;head&gt;&lt;title&gt;登录成功页面&lt;/title&gt;&lt;/head&gt; <br />&lt;body&gt; <br />登录成功! <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br />&lt;%@ page contentType="text/html;charset=GBK" language="java" %&gt; <br />&lt;html&gt; <br />&lt;head&gt;&lt;title&gt;登录失败&lt;/title&gt;&lt;/head&gt; <br />&lt;body&gt; <br />登录失败! <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br />六、打包并部署到tomcat，运行如下图： <br /><img src="http://lavasoft.blog.51cto.com/attachment/200803/200803141205485299506.png" alt="" /></p>
<p><img src="http://lavasoft.blog.51cto.com/attachment/200803/200803141205485323976.png" height="286" alt="" width="457" /><br /><br />参考资料： <br />http://struts.apache.org/2.x/docs/simple-setup.html <br />struts权威指南 <br /><br />本文出自"andyjames"博客，转载请与作者联系！谢谢！</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://andyjames.javaeye.com/blog/193302#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 May 2008 15:15:01 +0800</pubDate>
        <link>http://andyjames.javaeye.com/blog/193302</link>
        <guid>http://andyjames.javaeye.com/blog/193302</guid>
      </item>
      <item>
        <title>JSP连接SQLServer数据库特别要注意一个小问题得到解决</title>
        <author>andyjames</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://andyjames.javaeye.com">andyjames</a>&nbsp;
          链接：<a href="http://andyjames.javaeye.com/blog/193288" style="color:red;">http://andyjames.javaeye.com/blog/193288</a>&nbsp;
          发表时间: 2008年05月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天终于帮朋友解决了一个小问题，这个问题意见困恼她N久了，心里还有点小小的成就，希望更多的朋友少走弯路，技术上的问题大家都可以一起交流。<br />    下面把问题陈述如下：<br />    在jsp连接sqlserver的时候，如果sqlserver没有安装成功(第一种情况)，或者sqlserver安装成功没有打sp4补丁(第二种情况)的话，一般会出现严重的sqlexception，jsp和数据库进行连接时都会出错:<br />   第一种遇到的情况和解决方案：安装SQL Server2000的时候，安装程序提示我安装程序被挂起，让我重新启动电脑，但我即便是重新启动了再次安装，SQL Server2000的安装程序依旧提示我这个错误。<br />看来重起并不能解除被挂起的安装程序。 查阅了资料，得知要解决这个问题需要删除注册表HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager下的PendingFileRenameOperations子键。删除后才可以重新安装成功。<br />    第二种遇到的情况和解决方案：<br />    JSP连接Sqlserver数据库出现的BUG：<br />    org.apache.jasper.JasperException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.<br />    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512)<br />    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)<br />    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)<br />     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)<br />     javax.servlet.http.HttpServlet.service(HttpServlet.java:802)<br /><br />    第一种解决方案：<br />    首先:你要确定你装好了JDK1.4以上JAVA版本.以及TOMCAT5.5以上版本.然后安装SQL SERVER 2000.打上好SP4的补丁.然后再安装Microsoft SQL Server 2000 Driver for JDBC SP3以上版本. <br /><br />   其次:将Microsoft SQL Server 2000 Driver for JDBC 里面的Lib目录下的三个.jar文件拷贝到TOMCAT\common\lib里面. <br /><br />   最后:设置CLASSPATH和PATH路径.CLASSPATH 路径:.;Java_HOME\lib\dt.jar;.;Java_HOME\lib\servletapi.jar;JAVA_HOME\lib\tools.jar;CATALINA_HOME\common\lib\servlet.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar; <br />PATH路径:%JAVA_HOME%\bin;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar; <br />其中JAVA_HOME路径:C:\Program Files\Java\jdk1.5.0_11 <br />CATALINA_HOME路径:C:\Tomcat 5.5 <br /> <br />   第二种解决方案：<br />   1、 服务器正常启动检查是不是使用1433   端口 <br />   2、查看防火墙是不是屏蔽1433端口了 <br />   3、CMD-NETSTAT   -AN   检查下你的1433端口是不是开启   没有的话   打SQL   SERVER   的补丁   SP3   OR   SP4   基本都是补丁问题 <br />   附：<br />     1、下载Microsoft SQL Server 2000 Service Pack 3a并安装，SQL请选用混和安装模式！！！<br />http://www.microsoft.com/downloads/details.aspx?FamilyId=90DCD52C-0488-4E46-AFBF-ACACE5369FA3&displaylang=zh-cn<br /><br />2、下载SQL Server 2000 Driver for JDBC Service Pack 3<br />http://www.microsoft.com/downloads/details.aspx?FamilyId=07287B11-0502-461A-B138-2AA54BFDC03A&displaylang=en<br /><br />3、运行时关闭防火墙<br /> <br />上面的情况都检查完毕后，重启web服务器，可以了。感觉真爽！
          <br/>
          <span style="color:red;">
            <a href="http://andyjames.javaeye.com/blog/193288#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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 15 May 2008 14:53:15 +0800</pubDate>
        <link>http://andyjames.javaeye.com/blog/193288</link>
        <guid>http://andyjames.javaeye.com/blog/193288</guid>
      </item>
  </channel>
</rss>