<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>javafever</title>
    <description></description>
    <link>http://javafever.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>Mule入门</title>
        <author>javafever</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javafever.javaeye.com">javafever</a>&nbsp;
          链接：<a href="http://javafever.javaeye.com/blog/121791" style="color:red;">http://javafever.javaeye.com/blog/121791</a>&nbsp;
          发表时间: 2007年09月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <address>近段时间工作一直很忙，今年在公司搞的东西太多了，WebService、C#、LDAP、Windows消息机制、iReport、JetSpeed、BEA ALUI、SSO、ESB，老板完全就是想累死我，不过我倒是乐在其中。虽然每样东西都只是很肤浅的了解了一下，但是还是希望把学到的东西整理出来，奉献给想到入门的朋友，多少能起到点抛砖引玉的作用吧。<br />
该文档主要参照Mule1.3.3中的example。<br />
</address>
<h1 class="cjk" align="center"><font face="Arial, sans-serif"><font size="6">Mule</font></font><font size="6"><span lang="zh-CN">入门文档</span></font></h1>
<h2 class="cjk">零、前提</h2>
<p lang="zh-CN" style="text-indent: 1cm;">在按照本文进行操作之前，假设您的系统已经具备以下前提：</p>
<ul>
    <li>
    <p lang="zh-CN">已经安装了<font face="Times New Roman, serif">Sun</font>公司的<font face="Times New Roman, serif">JDK1.4</font>或<font face="Times New Roman, serif">JDK5.0</font>版本，推荐使用<font face="Times New Roman, serif">JDK5.0</font>。</p>
    </li>
    <li>
    <p lang="zh-CN">正确设置了<font face="Times New Roman, serif">JAVA_HOME</font>环境变量到<font face="Times New Roman, serif">JDK</font>目录（注意不是<font face="Times New Roman, serif">JRE</font>目录）。</p>
    </li>
    <li>
    <p lang="zh-CN">确保<font face="Times New Roman, serif">%JAVA_HOME%\bin</font>路径在系统寻找路径中。</p>
    </li>
    <li>
    <p lang="zh-CN">安装有<font face="Times New Roman, serif">Eclipse3.2</font>或以上版本的开发环境。</p>
    </li>
    <li>
    <p lang="zh-CN">安装有<font face="Times New Roman, serif">Apache 	Tomcat 5.0</font>或以上版本，推荐使用<font face="Times New Roman, serif">5.5</font>。文档假设<font face="Times New Roman, serif">Tomcat</font>的安装目录为<font face="Times New Roman, serif">%TOMCAT_HOME%</font>。</p>
    </li>
</ul>
<h2 class="cjk">一、下载与安装</h2>
<p style="text-indent: 1cm;">到<font face="Times New Roman, serif">Mule</font>的官方网站（<font face="Times New Roman, serif"><a href="http://mule.mulesource.org/display/MULE/Download">http://mule.mulesource.org/display/MULE/Download</a></font>）上下载<font face="Times New Roman, serif">Mule</font>的最新稳定版，目前是<font face="Times New Roman, serif">1.3.3</font>（<font face="Times New Roman, serif">http://www.mulesource.com/ccount/click.php?id=17</font>），也可以使用社区版的<font face="Times New Roman, serif">1.4.1</font>（<font face="Times New Roman, serif">http://www.mulesource.com/ccount/click.php?id=33</font>）。<span lang="zh-CN">本文档以</span><font face="Times New Roman, serif">1.3.3</font><span lang="zh-CN">版为例，</span><font face="Times New Roman, serif">1.4.1</font><span lang="zh-CN">请参照文档自行修改。</span></p>
<p lang="zh-CN" style="text-indent: 1cm;">下载后得到一个<font face="Times New Roman, serif">ZIP</font>格式的压缩文件<font face="Times New Roman, serif">mule-1.3.3.zip</font>，将该文件解压至任一目录，假设为<font face="Times New Roman, serif">C:\mule-1.3.3</font>，本文档以环境变量<font face="Times New Roman, serif">MULE_HOME</font>表示该目录。</p>
<h2 class="cjk">二、运行<font face="Arial, sans-serif">Echo</font>示例</h2>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">Mule</font>自带了很多示例，从最简单的<font face="Times New Roman, serif">echo</font>示例到一个比较完整的贷款中介服务<font face="Times New Roman, serif">loanbroker</font>。每个示例程序都分为<font face="Times New Roman, serif">ant</font>和<font face="Times New Roman, serif">maven</font>两个版本，它们分别位于 <font face="Times New Roman, serif">%MULE_HOME%\examples\ant</font>和 <font face="Times New Roman, serif">%MULE_HOME%\examples\maven</font>目录下。文档将以<font face="Times New Roman, serif">ant</font>版本为例说明如何运行<font face="Times New Roman, serif">echo</font>示例。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">1</font>、到<font face="Times New Roman, serif">apache</font>官方网站的<font face="Times New Roman, serif">ant</font>项目下载页（<font face="Times New Roman, serif"><a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a></font>）上下载<font face="Times New Roman, serif">ant1.7.0</font>（<font face="Times New Roman, serif">http://apache.mirror.phpchina.com/ant/binaries/apache-ant-1.7.0-bin.zip</font>），下载后将文件解压到任一目录（假设为<font face="Times New Roman, serif">C:\apache-ant-1.7.0</font>，文档中表示为<font face="Times New Roman, serif">ANT_HOME</font>环境变量）。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">2</font>、设置环境变量<font face="Times New Roman, serif">ANT_HOME</font>到<font face="Times New Roman, serif">ant</font>的解压目录，如：</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">ANT_HOME=<a href="file:///C:/apache-ant-1.7.0">C:\apache-ant-1.7.0</a></font></p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">3</font>、将<font face="Times New Roman, serif">%ANT_HOME%\bin</font>加入到系统寻找路径中，如：</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">PATH=%ANT_HOME%\bin;%PATH%</font></p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">4</font>、启动命令行窗口，进入<font face="Times New Roman, serif">%MULE_HOME%\examples\ant\echo</font>目录，执行下面命令：</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">echo.bat</font></p>
<p lang="zh-CN" style="text-indent: 1cm;">示例程序会先显示一个<font face="Times New Roman, serif">License</font>信息，输出一些日志记录，最终出现以下信息：</p>
<dl><dd>
<table cellspacing="0" border="1" bordercolor="#000000" cellpadding="4" width="100%">
    <col width="256*" />
    <tbody>
        <tr>
            <td valign="top" bgcolor="#000000" width="100%">
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">INFO 				 2007-08-29 16:54:44,062 [WrapperSimpleAppMain] 				org.mule.MuleManager:</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">**********************************************************************</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">* 				Mule ESB and Integration Platform version Not Set                 				 *</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">* 				Not Set                                                           				 *</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">* 				For more information go to http://mule.mulesource.org             				 *</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">* 				                                                                  				 *</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">* 				Server started: 2007</span></font></font><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">年</font></font><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">8</font></font></span><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">月</font></font><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">29</font></font></span><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">日 				星期三 下午</font></font><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">04</font></font></span><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">时</font></font><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">54</font></font></span><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">分</font></font><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">42</font></font></span><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">秒 				</font></font><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">CST 				         *</font></font></span></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">* 				Server ID: Mule_Echo_Sample                                       				 *</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">* 				JDK: 1.5.0_11 (mixed mode, sharing)                               				 *</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">* 				OS: Windows XP - Service Pack 2 (5.1, x86)                        				 *</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">* 				Host: zengfl (192.168.25.71)                                      				 *</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">* 				                                                                  				 *</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">* 				Agents Running:                                                   				 *</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">* 				  Mule Admin: accepting connections on tcp://localhost:60504      				 *</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">**********************************************************************</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">INFO 				 2007-08-29 16:54:44,062 [WrapperSimpleAppMain] 				org.mule.MuleServer: Mule S</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">erver 				initialized.</span></font></font></font></p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<br />
            <br />
            </p>
            <p lang="zh-CN" style="margin-left: 0.01cm; margin-right: 0.01cm; text-indent: 0.16cm;"> 				<font color="#ffffff"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><span style="background: transparent none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">Please 				enter something:</span></font></font></font></p>
            </td>
        </tr>
    </tbody>
</table>
</dd></dl>
<p lang="zh-CN" style="text-indent: 1cm;"><br />
</p>
<p lang="zh-CN" style="text-indent: 1cm;">表示示例程序运行成功，随便输入一些字符，这些字符被回显出来的同时，回显的处理日志信息也被显示出来。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font color="#ff3366">注意，在执行这个步骤时，请确信您能访问互联网，否则，示例程序无法运行。</font></p>
<h2 class="cjk">三、一个简单的<font face="Arial, sans-serif">Mule Java Application</font></h2>
<p lang="zh-CN" style="text-indent: 1cm;">下面，以一个类似<font face="Times New Roman, serif">Echo</font>的<font face="Times New Roman, serif">Java Application</font>为例说明如何使用<font face="Times New Roman, serif">Mule</font>来建立应用。后面会说明如何在<font face="Times New Roman, serif">Web</font>应用程序中集成<font face="Times New Roman, serif">Mule</font>。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">1</font>、在<font face="Times New Roman, serif">Eclipse</font>中建立一个<font face="Times New Roman, serif">Java Application</font>，为<font face="Times New Roman, serif">Application</font>命令为<font face="Times New Roman, serif">MuleAppTest</font>。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">2</font>、在<font face="Times New Roman, serif">Package Explorer</font>视图中，选中刚刚建立的<font face="Times New Roman, serif">MuleAppTest</font>项目，按下<font face="Times New Roman, serif">Alt+Enter</font>键打开该项目的属性设置对话框，找到<font face="Times New Roman, serif">Java Build Path</font>菜单，打开右边的<font face="Times New Roman, serif">Libraries</font>标签页。<br />
</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">3</font>、点击&ldquo;<font face="Times New Roman, serif">Add External JARs...&rdquo;</font>按钮，将 <font face="Times New Roman, serif">%MULE_HOME%\lib\mule </font>目录和 <font face="Times New Roman, serif">%MULE_HOME%\lib\opt </font>目录下的所有<font face="Times New Roman, serif">jar</font>文件添加到项目的库路径中（<font face="Times New Roman, serif">%MULE_HOME%\bin\opt</font>目录下的<font face="Times New Roman, serif">jar</font>文件并不是必须的，您可以根据需要选择您要加入的包，本文实际上只使用了与<font face="Times New Roman, serif">Web Service</font>相关的一些库文件）。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">4</font>、在源码目录（<font face="Times New Roman, serif">src</font>）下建立一个<font face="Times New Roman, serif">EchoService</font>接口及其实现类<font face="Times New Roman, serif">EchoServiceImpl</font>。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">EchoService.java</font></p>
<dl><dd>
<table cellspacing="0" border="1" bordercolor="#000000" cellpadding="4" width="100%">
    <col width="256*" />
    <tbody>
        <tr>
            <td valign="top" width="100%">
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><strong><font color="#7f0055">package</font></strong><font color="#000000"> 				com.san.mule;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><strong><font color="#7f0055">public</font></strong><font color="#000000"> 				</font><strong><font color="#7f0055">interface</font></strong><font color="#000000"> 				EchoService {</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">	</font><strong><font color="#7f0055">&nbsp;&nbsp;&nbsp; public</font></strong><font color="#000000"> 				String echo(String s);</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#000000"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">	</font></font></font></p>
            <p align="left"><font color="#000000"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">}</font></font></font></p>
            </td>
        </tr>
    </tbody>
</table>
</dd></dl>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">EchoServiceImpl.java</font></p>
<dl><dd>
<table cellspacing="0" border="1" bordercolor="#000000" cellpadding="4" width="100%">
    <col width="256*" />
    <tbody>
        <tr>
            <td valign="top" width="100%">
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><strong><font color="#7f0055">package</font></strong><font color="#000000"> 				com.san.mule;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><strong><font color="#7f0055">public</font></strong><font color="#000000"> 				</font><strong><font color="#7f0055">class</font></strong><font color="#000000"> 				EchoServiceImpl </font><strong><font color="#7f0055">implements</font></strong><font color="#000000"> 				EchoService {</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">	</font><strong><font color="#7f0055">&nbsp;&nbsp;&nbsp; public</font></strong><font color="#000000"> 				String echo(String s) {</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">		</font><strong><font color="#7f0055">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return</font></strong><font color="#000000"> 				s;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#000000"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">&nbsp;&nbsp;&nbsp; }</font></font></font></p>
            <p align="left"><font color="#000000"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">}</font></font></font></p>
            </td>
        </tr>
    </tbody>
</table>
</dd></dl>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">5</font>、在源码目录（<font face="Times New Roman, serif">src</font>）下建立一个<font face="Times New Roman, serif">mule-config.xml</font>文件，为<font face="Times New Roman, serif">Mule</font>配置入口端点，并将这个端点发布成一个基于<font face="Times New Roman, serif">axis</font>的<font face="Times New Roman, serif">Web</font>服务。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">mule-config.xml</font></p>
<dl><dd>
<table cellspacing="0" border="1" bordercolor="#000000" cellpadding="4" width="100%">
    <col width="256*" />
    <tbody>
        <tr>
            <td valign="top" width="100%">
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#008080">&lt;?</font><font color="#3f7f7f">xml 				</font><font color="#7f007f">version</font><font color="#000000">=</font><font color="#2a00ff">&quot;1.0&quot; 				</font><font color="#7f007f">encoding</font><font color="#000000">=</font><font color="#2a00ff">&quot;UTF-8&quot;</font><font color="#008080">?&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#008080">&lt;!</font><font color="#3f7f7f">DOCTYPE 				</font><font color="#000080">mule-configuration </font><font color="#808080">PUBLIC 				</font><font color="#000080">&quot;-//MuleSource //DTD 				mule-configuration XML V1.0//EN&quot;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#000080">   				                             				</font><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#3f7f5f">&quot;http://mule.mulesource.org/dtds/mule-configuration.dtd&quot;</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#008080">&lt;</font><font color="#3f7f7f">mule-configuration 				</font><font color="#7f007f">id</font><font color="#000000">=</font><font color="#2a00ff">&quot;mule-test&quot; 				</font><font color="#7f007f">version</font><font color="#000000">=</font><font color="#2a00ff">&quot;1.0&quot;</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">	</font><font color="#008080">&lt;</font><font color="#3f7f7f">model 				</font><font color="#7f007f">name</font><font color="#000000">=</font><font color="#2a00ff">&quot;echoService&quot;</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">		</font><font color="#008080">&lt;</font><font color="#3f7f7f">mule-descriptor 				</font><font color="#7f007f">name</font><font color="#000000">=</font><font color="#2a00ff">&quot;echoService&quot;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#2a00ff">			</font><font color="#7f007f">implementation</font><font color="#000000">=</font><font color="#2a00ff">&quot;com.san.mule.EchoServiceImpl&quot;</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">			</font><font color="#008080">&lt;</font><font color="#3f7f7f">inbound-router</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">				</font><font color="#008080">&lt;</font><font color="#3f7f7f">endpoint</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#3f7f7f">					</font><font color="#7f007f">address</font><font color="#000000">=</font><font color="#2a00ff">&quot;axis:http://localhost:8181/services&quot;</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">				</font><font color="#008080">&lt;/</font><font color="#3f7f7f">endpoint</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">			</font><font color="#008080">&lt;/</font><font color="#3f7f7f">inbound-router</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">			</font><font color="#008080">&lt;</font><font color="#3f7f7f">properties</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">				</font><font color="#008080">&lt;</font><font color="#3f7f7f">list 				</font><font color="#7f007f">name</font><font color="#000000">=</font><font color="#2a00ff">&quot;serviceInterfaces&quot;</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">					</font><font color="#008080">&lt;</font><font color="#3f7f7f">entry 				</font><font color="#7f007f">value</font><font color="#000000">=</font><font color="#2a00ff">&quot;com.san.mule.EchoService&quot; 				</font><font color="#008080">/&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">				</font><font color="#008080">&lt;/</font><font color="#3f7f7f">list</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">			</font><font color="#008080">&lt;/</font><font color="#3f7f7f">properties</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">		</font><font color="#008080">&lt;/</font><font color="#3f7f7f">mule-descriptor</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">	</font><font color="#008080">&lt;/</font><font color="#3f7f7f">model</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left"><font face="Times New Roman, serif"><font size="1" style="font-size: 8pt;"><font face="Courier New, monospace"><font color="#008080">&lt;/</font><font color="#3f7f7f">mule-configuration</font><font color="#008080">&gt;</font></font></font></font></p>
            </td>
        </tr>
    </tbody>
</table>
</dd></dl>
<p lang="zh-CN" style="text-indent: 1cm;"><br />
<br />
</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">6</font>、建立一个<font face="Times New Roman, serif">Mule</font>的<font face="Times New Roman, serif">Application</font>示例。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">MuleAppTest.java</font></p>
<dl><dd>
<table cellspacing="0" border="1" bordercolor="#000000" cellpadding="4" width="100%">
    <col width="256*" />
    <tbody>
        <tr>
            <td valign="top" width="100%">
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><strong><font color="#7f0055">package</font></strong><font color="#000000"> 				com.san.mule;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><strong><font color="#7f0055">import</font></strong><font color="#000000"> 				org.mule.config.ConfigurationException;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><strong><font color="#7f0055">import</font></strong><font color="#000000"> 				org.mule.config.builders.MuleXmlConfigurationBuilder;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><strong><font color="#7f0055">import</font></strong><font color="#000000"> 				org.mule.umo.manager.UMOManager;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><strong><font color="#7f0055">public</font></strong><font color="#000000"> 				</font><strong><font color="#7f0055">class</font></strong><font color="#000000"> 				MuleAppTest {</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#000000"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">	</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">	</font><strong><font color="#7f0055">public</font></strong><font color="#000000"> 				</font><strong><font color="#7f0055">static</font></strong><font color="#000000"> 				</font><strong><font color="#7f0055">void</font></strong><font color="#000000"> 				main(String[] args) </font><strong><font color="#7f0055">throws</font></strong><font color="#000000"> 				ConfigurationException {</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#000000"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">		</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">		MuleXmlConfigurationBuilder 				builder = </font><strong><font color="#7f0055">new</font></strong><font color="#000000"> 				MuleXmlConfigurationBuilder();</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;"><font color="#000000">		UMOManager 				manager = builder.configure(</font><font color="#2a00ff">&quot;mule-config.xml&quot;</font><font color="#000000">);</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#000000"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">		</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#000000"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">	}</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left"><font color="#000000"><font face="Courier New, monospace"><font size="1" style="font-size: 8pt;">}</font></font></font></p>
            </td>
        </tr>
    </tbody>
</table>
</dd></dl>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">7</font>、在<font face="Times New Roman, serif">MuleAppTest.java</font>点击右键，选择<font face="Times New Roman, serif">Run As</font>菜单中的<font face="Times New Roman, serif">Java Application</font>运行<font face="Times New Roman, serif">MuleAppTest</font>类。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">8</font>、打开浏览器，访问<font face="Times New Roman, serif">http://localhost:8181/services/echoService?wsdl</font>，即可看见服务的描述信息。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">9</font>、我们来运行一下这个<font face="Times New Roman, serif">Web</font>服务，看是否能正确运行，在浏览器地址栏中输入：</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif"><a href="http://localhost:8181/services/echoService?method=echo&amp;param=zengfl">http://localhost:8181/services/echoService?method=echo&amp;param=zengfl</a></font></p>
<h2 class="cjk">四、在<font face="Arial, sans-serif">Web Application</font>中集成<font face="Arial, sans-serif">Mule</font></h2>
<p lang="zh-CN" style="text-indent: 1cm;">继续前面的项目，我们将<font face="Times New Roman, serif">Mule</font>集成到<font face="Times New Roman, serif">Tomcat</font>的一个<font face="Times New Roman, serif">Web Application</font>中，并使用一个<font face="Times New Roman, serif">JSP</font>页面来访问<font face="Times New Roman, serif">Mule</font>组件。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">1</font>、在项目中建立<font face="Times New Roman, serif">Web Application</font>的相关目录<font face="Times New Roman, serif">WEB-INF</font>、<font face="Times New Roman, serif">WEB-INF\lib</font>和<font face="Times New Roman, serif">WEB-INF\classes</font>。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">2</font>、将<font face="Times New Roman, serif">%MULE_HOME%\lib\mule</font>目录和<font face="Times New Roman, serif">%MULE_HOME%\lib\opt</font>目录下的所有文件复制到项目的<font face="Times New Roman, serif">WEB-INF\lib</font>目录下。</p>
<p lang="zh-CN" style="text-indent: 1cm;">将<font face="Times New Roman, serif">%MULE_HOME%\lib\user\activation.jar</font>和<font face="Times New Roman, serif">%MULE_HOME%\lib\user\mail.jar</font>两个文件复制到项目的<font face="Times New Roman, serif">WEB-INF\lib</font>目录下。（注意，如果你没有找到这两个文件，那是因为你没有成功运行第二节中的测试程序。）</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">3</font>、将项目的<font face="Times New Roman, serif">output folder</font>设置成项目的<font face="Times New Roman, serif">WEB-INF/classes</font>目录。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">4</font>、将项目<font face="Times New Roman, serif">src</font>目录下的<font face="Times New Roman, serif">mule-config.xml</font>文件复制到项目的<font face="Times New Roman, serif">WEB-INF</font>目录下。</p>
<p lang="zh-CN" style="text-indent: 1cm;">注意，当你把项目的<font face="Times New Roman, serif">output folder</font>设置成<font face="Times New Roman, serif">WEB-INF/classes</font>时，该目录会从<font face="Times New Roman, serif">Package Explorer</font>中消失，这是正常现在，你可以在<font face="Times New Roman, serif">Navigator</font>视图中找到这个目录。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">5</font>、建立<font face="Times New Roman, serif">WEB-INF\web.xml</font>文件。</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">web.xml</font></p>
<div align="right">
<table cellspacing="0" border="1" bordercolor="#000000" height="857" cellpadding="4" width="631">
    <col width="597" />
    <tbody>
        <tr>
            <td valign="top" width="597">
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;?</font><font color="#3f7f7f">xml 				</font><font color="#7f007f">version</font><font color="#000000">=</font><font color="#2a00ff">&quot;1.0&quot; 				</font><font color="#7f007f">encoding</font><font color="#000000">=</font><font color="#2a00ff">&quot;UTF-8&quot;</font><font color="#008080">?&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;!</font><font color="#3f7f7f">DOCTYPE 				</font><font color="#000080">web-app </font><font color="#808080">PUBLIC 				</font><font color="#000080">&quot;-//Sun Microsystems, Inc.//DTD 				Web Application 2.3//EN&quot; 				</font><font color="#3f7f5f">&quot;http://java.sun.com/dtd/web-app_2_3.dtd&quot;</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;</font><font color="#3f7f7f">web-app</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><font color="#008080">&lt;</font><font color="#3f7f7f">display-name</font><font color="#008080">&gt;</font><font color="#000000">Mule</font><font color="#008080">&lt;/</font><font color="#3f7f7f">display-name</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><font color="#008080">&lt;</font><font color="#3f7f7f">description</font><font color="#008080">&gt;</font><font color="#000000">Mule 				Demo</font><font color="#008080">&lt;/</font><font color="#3f7f7f">description</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><font color="#008080">&lt;</font><font color="#3f7f7f">context-param</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		</font><font color="#008080">&lt;</font><font color="#3f7f7f">param-name</font><font color="#008080">&gt;</font><font color="#000000">org.mule.config</font><font color="#008080">&lt;/</font><font color="#3f7f7f">param-name</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		</font><font color="#008080">&lt;</font><font color="#3f7f7f">param-value</font><font color="#008080">&gt;</font><font color="#000000">/WEB-INF/mule-config.xml,</font><font color="#008080">&lt;/</font><font color="#3f7f7f">param-value</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><font color="#008080">&lt;/</font><font color="#3f7f7f">context-param</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><font color="#008080">&lt;</font><font color="#3f7f7f">listener</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		</font><font color="#008080">&lt;</font><font color="#3f7f7f">listener-class</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#000000"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;">			org.mule.config.builders.MuleXmlBuilderContextListener</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		</font><font color="#008080">&lt;/</font><font color="#3f7f7f">listener-class</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><font color="#008080">&lt;/</font><font color="#3f7f7f">listener</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><font color="#008080">&lt;</font><font color="#3f7f7f">servlet</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		</font><font color="#008080">&lt;</font><font color="#3f7f7f">servlet-name</font><font color="#008080">&gt;</font><font color="#000000">muleServlet</font><font color="#008080">&lt;/</font><font color="#3f7f7f">servlet-name</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		</font><font color="#008080">&lt;</font><font color="#3f7f7f">servlet-class</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#000000"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;">			org.mule.providers.http.servlet.MuleReceiverServlet</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		</font><font color="#008080">&lt;/</font><font color="#3f7f7f">servlet-class</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		</font><font color="#008080">&lt;</font><font color="#3f7f7f">load-on-startup 				</font><font color="#008080">/&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><font color="#008080">&lt;/</font><font color="#3f7f7f">servlet</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><font color="#008080">&lt;</font><font color="#3f7f7f">servlet-mapping</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		</font><font color="#008080">&lt;</font><font color="#3f7f7f">servlet-name</font><font color="#008080">&gt;</font><font color="#000000">muleServlet</font><font color="#008080">&lt;/</font><font color="#3f7f7f">servlet-name</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		</font><font color="#008080">&lt;</font><font color="#3f7f7f">url-pattern</font><font color="#008080">&gt;</font><font color="#000000">/services/*</font><font color="#008080">&lt;/</font><font color="#3f7f7f">url-pattern</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><font color="#008080">&lt;/</font><font color="#3f7f7f">servlet-mapping</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left"><font face="Times New Roman, serif"><font size="2" style="font-size: 9pt;"><font face="Courier New, monospace"><font color="#008080">&lt;/</font><font color="#3f7f7f">web-app</font><font color="#008080">&gt;</font></font></font></font></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">6</font>、建立一个测试页面<font face="Times New Roman, serif">echo.jsp</font></p>
<div align="right">
<table cellspacing="0" border="1" bordercolor="#000000" height="923" cellpadding="4" width="630">
    <col width="598" />
    <tbody>
        <tr>
            <td valign="top" width="598">
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#bf5f3f">&lt;%@ 				</font><font color="#3f7f7f">page </font><font color="#7f007f">language</font><font color="#000000">=</font><font color="#2a00ff">&quot;java&quot; 				</font><font color="#7f007f">contentType</font><font color="#000000">=</font><font color="#2a00ff">&quot;text/html; 				charset=UTF-8&quot;</font><font color="#bf5f3f">%&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#bf5f3f">&lt;%@ 				</font><font color="#3f7f7f">page 				</font><font color="#7f007f">import</font><font color="#000000">=</font><font color="#2a00ff">&quot;org.mule.extras.client.MuleClient&quot; 				</font><font color="#bf5f3f">%&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#bf5f3f">&lt;%@ 				</font><font color="#3f7f7f">page 				</font><font color="#7f007f">import</font><font color="#000000">=</font><font color="#2a00ff">&quot;org.mule.umo.UMOMessage&quot; 				</font><font color="#bf5f3f">%&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;</font><font color="#3f7f7f">html</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;</font><font color="#3f7f7f">head</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;</font><font color="#3f7f7f">title</font><font color="#008080">&gt;Mule 				Web Application Test&lt;/</font><font color="#3f7f7f">title</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;/</font><font color="#3f7f7f">head</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;</font><font color="#3f7f7f">body</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#bf5f3f"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;">&lt;%</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	String 				s = request.getParameter(</font><font color="#2a00ff">&quot;name&quot;</font><font color="#000000">);</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><strong><font color="#7f0055">if</font></strong><font color="#000000"> 				(s != </font><strong><font color="#7f0055">null</font></strong><font color="#000000">) 				{</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		MuleClient 				client = </font><strong><font color="#7f0055">new</font></strong><font color="#000000"> 				MuleClient();</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#000000"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;">		UMOMessage 				message = client.send(</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">				</font><font color="#2a00ff">&quot;axis:http://localhost:8181/services/echoService?method=echo&quot;</font><font color="#000000">,</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">				s, 				</font><strong><font color="#7f0055">null</font></strong><font color="#000000">);</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#bf5f3f"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;">%&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;</font><font color="#3f7f7f">h3</font><font color="#008080">&gt;</font><font color="#bf5f3f">&lt;%=</font><font color="#000000">message.getPayload()</font><font color="#bf5f3f">%&gt;</font><font color="#008080">&lt;/</font><font color="#3f7f7f">h3</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#bf5f3f"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;">&lt;%</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#000000"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;">}</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#bf5f3f"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;">%&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font color="#000000"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><span lang="zh-CN">你的名字</span></font></font><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;">:</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;</font><font color="#3f7f7f">form 				</font><font color="#7f007f">method</font><font color="#000000">=</font><font color="#2a00ff">&quot;POST&quot; 				</font><font color="#7f007f">name</font><font color="#000000">=</font><font color="#2a00ff">&quot;submitEcho&quot; 				</font><font color="#7f007f">action</font><font color="#000000">=</font><font color="#2a00ff">&quot;&quot;</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;</font><font color="#3f7f7f">table</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><font color="#008080">&lt;</font><font color="#3f7f7f">tr</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		</font><font color="#008080">&lt;</font><font color="#3f7f7f">td</font><font color="#008080">&gt;&lt;</font><font color="#3f7f7f">input 				</font><font color="#7f007f">type</font><font color="#000000">=</font><font color="#2a00ff">&quot;text&quot; 				</font><font color="#7f007f">name</font><font color="#000000">=</font><font color="#2a00ff">&quot;name&quot; 				</font><font color="#008080">/&gt;&lt;/</font><font color="#3f7f7f">td</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">		</font><font color="#008080">&lt;</font><font color="#3f7f7f">td</font><font color="#008080">&gt;&lt;</font><font color="#3f7f7f">input 				</font><font color="#7f007f">type</font><font color="#000000">=</font><font color="#2a00ff">&quot;submit&quot; 				</font><font color="#7f007f">name</font><font color="#000000">=</font><font color="#2a00ff">&quot;Go&quot; 				</font><font color="#7f007f">value</font><font color="#000000">=</font><font color="#2a00ff">&quot; 				</font></font></font><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#2a00ff"><span lang="zh-CN">确定</span> 				</font></font></font><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#2a00ff">&quot; 				</font><font color="#008080">/&gt;&lt;/</font><font color="#3f7f7f">td</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#000000">	</font><font color="#008080">&lt;/</font><font color="#3f7f7f">tr</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;/</font><font color="#3f7f7f">table</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;/</font><font color="#3f7f7f">form</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;</font><font color="#3f7f7f">p</font><font color="#008080">/&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><font face="Courier New, monospace"><font size="2" style="font-size: 9pt;"><font color="#008080">&lt;/</font><font color="#3f7f7f">body</font><font color="#008080">&gt;</font></font></font></p>
            <p align="left" style="margin-bottom: 0cm;"><br />
            </p>
            <p align="left"><font face="Times New Roman, serif"><font size="2" style="font-size: 9pt;"><font face="Courier New, monospace"><font color="#008080">&lt;/</font><font color="#3f7f7f">html</font><font color="#008080">&gt;</font></font></font></font></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif">7</font>、将项目部署到<font face="Times New Roman, serif">%TOMCAT_HOME%\webapp</font>目录下，启动<font face="Times New Roman, serif">Tomcat</font>，访问</p>
<p lang="zh-CN" style="text-indent: 1cm;"><font face="Times New Roman, serif"><a href="http://localhost:8080/MuleAppTest/echo.jsp">http://localhost:8080/MuleAppTest/echo.jsp</a></font></p>
<p lang="zh-CN" style="text-indent: 1cm;">输入你的名字测试一下，<font face="Times New Roman, serif">OK</font>。</p>
          <br/>
          <span style="color:red;">
            <a href="http://javafever.javaeye.com/blog/121791#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>Fri, 07 Sep 2007 23:47:24 +0800</pubDate>
        <link>http://javafever.javaeye.com/blog/121791</link>
        <guid>http://javafever.javaeye.com/blog/121791</guid>
      </item>
      <item>
        <title>struts2笔记：与spring2集成</title>
        <author>javafever</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javafever.javaeye.com">javafever</a>&nbsp;
          链接：<a href="http://javafever.javaeye.com/blog/56019" style="color:red;">http://javafever.javaeye.com/blog/56019</a>&nbsp;
          发表时间: 2007年02月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          春节大假结束了，又该开始学习了。春节期间发生了一些高兴的事，其中之一便是apache终于发布了struts2的正式版：struts2.0.6GA，所以我也该从webwork迁移至struts2。<br />
struts2基本上就是webwork的翻版，所以迁移过程倒是很简单，只需要修改下配置文件和一些包名就可以了。如果在Eclipse、Netbeans这些集成开发工具的帮助下，记不清包名也很容易找到想要的类的，呵呵。<br />
<br />
在Eclipse下建立一个Dynamic Web Application。<br />
<br />
从struts2.0.6的lib目录中复制下面的库文件到WEB-INF/lib目录下：<br />
commons-logging-1.1.jar<br />
freemarker-2.3.8.jar<br />
ognl-2.6.9.jar<br />
struts-api-2.0.6.jar<br />
struts-core-2.0.6.jar<br />
struts-spring-plugin-2.0.6.jar<br />
xwork-2.0.0.jar<br />
<br />
从spring中lib目录中复制下面的库文件到WEB-INF/lib目录下：<br />
spring.jar<br />
<br />
修改web.xml，增加一个struts的分派器filter，映射所有的url-pattern，再增加一个spring的ContextLoaderListener监听器。修改后的内容如下：<br />
<!--l version="1.0" encoding="UTF-8-->
<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">&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">web-app</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;WebApp_ID&quot;</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;2.4&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://java.sun.com/xml/ns/j2ee&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&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="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">xsi:schemaLocation</span><span>=</span><span class="attribute-value">&quot;http://java.sun.com/xml/ns/j2ee&nbsp;http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot;</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">display-name</span><span class="tag">&gt;</span><span>struts2tutorial</span><span class="tag">&lt;/</span><span class="tag-name">display-name</span><span class="tag">&gt;</span><span>&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="tag">&lt;</span><span class="tag-name">filter</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">filter-name</span><span class="tag">&gt;</span><span>struts2</span><span class="tag">&lt;/</span><span class="tag-name">filter-name</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">filter-class</span><span class="tag">&gt;</span><span>org.apache.struts2.dispatcher.FilterDispatcher</span><span class="tag">&lt;/</span><span class="tag-name">filter-class</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">filter</span><span class="tag">&gt;</span><span>&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="tag">&lt;</span><span class="tag-name">filter-mapping</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">filter-name</span><span class="tag">&gt;</span><span>struts2</span><span class="tag">&lt;/</span><span class="tag-name">filter-name</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">url-pattern</span><span class="tag">&gt;</span><span>*.action</span><span class="tag">&lt;/</span><span class="tag-name">url-pattern</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">filter-mapping</span><span class="tag">&gt;</span><span>&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="tag">&lt;</span><span class="tag-name">welcome-file-list</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">welcome-file</span><span class="tag">&gt;</span><span>index.jsp</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=""><span>&nbsp;&nbsp;&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="alt"><span>&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">listener</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">listener-class</span><span class="tag">&gt;</span><span>org.springframework.web.context.ContextLoaderListener</span><span class="tag">&lt;/</span><span class="tag-name">listener-class</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">listener</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;/</span><span class="tag-name">web-app</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
<br />
写一个简单的Action，HelloWorld：<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">package</span><span>&nbsp;tutorial; &nbsp;&nbsp;</span></span></li>
    <li class=""><span></span><span class="keyword">import</span><span>&nbsp;com.opensymphony.xwork2.ActionSupport; &nbsp;&nbsp;</span></li>
    <li class="alt"><span></span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;HelloWorld&nbsp;</span><span class="keyword">extends</span><span>&nbsp;ActionSupport&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">static</span><span>&nbsp;</span><span class="keyword">final</span><span>&nbsp;String&nbsp;MESSAGE&nbsp;=&nbsp;</span><span class="string">&quot;Struts&nbsp;is&nbsp;up&nbsp;and&nbsp;running&nbsp;...&quot;</span><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;String&nbsp;execute()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setMessage(MESSAGE); &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;SUCCESS; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&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;String&nbsp;message; &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;</span><span class="keyword">void</span><span>&nbsp;setMessage(String&nbsp;message){ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">this</span><span>.message&nbsp;=&nbsp;message; &nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&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">public</span><span>&nbsp;String&nbsp;getMessage()&nbsp;{ &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;message; &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>
<br />
<br />
在源文件路径下（项目的src目录）增加struts.xml配置action。这个文件是集成spring的关键所在，这里面描述有如何将spring2集成到struts2的相关信息：<br />
<!--CTYPE struts PUBLIC<br-->
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span>&lt;!DOCTYPE&nbsp;struts&nbsp;PUBLIC &nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&quot;-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;2.0//EN&quot; &nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&quot;http://struts.apache.org/dtds/struts-2.0.dtd&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">struts</span><span class="tag">&gt;</span></li>
    <li class=""><span class="tag">&nbsp;&nbsp;&nbsp; &lt;!-- 下面这句表明对象是由spring负责产生的.加上这句后,struts会产生让spring负责</span></li>
    <li class=""><span class="tag">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 产生bean,如果spring不能产生bean,则由struts自己产生.也可以在struts.properties</span></li>
    <li class=""><span class="tag">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件内定义这个属性.--&gt;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">constant</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;objectFactory&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;spring&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">constant</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">package</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;struts2tutoial&quot;</span><span>&nbsp;</span><span class="attribute">extends</span><span>=</span><span class="attribute-value">&quot;struts-default&quot;</span><span>&nbsp;</span><span class="attribute">namespace</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- 注意,现在action的class属性不再是类的名字了,而是在spring中的bean的id</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 详细信息请看下面的spring的bean配置文件applicationContext.xml&nbsp;--&gt;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="tag">&lt;</span><span class="tag-name">action</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;HelloWorld&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;helloWorld&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;</span><span class="tag">&lt;</span><span class="tag-name">result</span><span class="tag">&gt;</span><span>/helloWorld.jsp</span><span class="tag">&lt;/</span><span class="tag-name">result</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">action</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="comments">&lt;!--&nbsp;Add&nbsp;your&nbsp;actions&nbsp;here&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">package</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;/</span><span class="tag-name">struts</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
<br />
在WEB-INF/目录下增加spring的bean配置文件applicationContext.xml：<br />
<!--l version="1.0" encoding="UTF-8-->
<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">&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>&lt;!DOCTYPE&nbsp;beans&nbsp;PUBLIC&nbsp;&quot;-//SPRING//DTD&nbsp;BEAN&nbsp;2.0//EN&quot;&nbsp;&quot;http://www.springframework.org/dtd/spring-beans-2.0.dtd&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">beans</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;</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;helloWorld&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;tutorial.HelloWorld&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">bean</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">beans</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
配置很简单，只有一个bean。<br />
<br />
最后，在WebContent目录下增加helloWorld.jsp：<br />
<!--taglib prefix="s" uri="/struts-tags"-->
<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">&lt;</span><span>%@&nbsp;taglib&nbsp;</span><span class="attribute">prefix</span><span>=</span><span class="attribute-value">&quot;s&quot;</span><span>&nbsp;</span><span class="attribute">uri</span><span>=</span><span class="attribute-value">&quot;/struts-tags&quot;</span><span>&nbsp;%</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">html</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">head</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">title</span><span class="tag">&gt;</span><span>Hello&nbsp;World!</span><span class="tag">&lt;/</span><span class="tag-name">title</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">head</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">body</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">h2</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">s:property</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;message&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">h2</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">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">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://javafever.javaeye.com/blog/56019#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>Mon, 26 Feb 2007 23:08:00 +0800</pubDate>
        <link>http://javafever.javaeye.com/blog/56019</link>
        <guid>http://javafever.javaeye.com/blog/56019</guid>
      </item>
      <item>
        <title>WebWork2.2学习笔记（三）Interceptor</title>
        <author>javafever</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javafever.javaeye.com">javafever</a>&nbsp;
          链接：<a href="http://javafever.javaeye.com/blog/49291" style="color:red;">http://javafever.javaeye.com/blog/49291</a>&nbsp;
          发表时间: 2007年01月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          WebWork的核心是Xwork，而Xwork的核心可能就是Interceptor了。上周我在学习Action的时候已经接触到了Interceptor的概念，Interceptor的作用就是在执行Action前后进行拦截，使用户有机会执行其他操作。<br />
<br />
在Xwork中，AOP是通过Action、ActionInvocation和Interceptor这三个接口完成的。WebWork通过Action代理类ActionProxy来执行Action的execute方法，而该方法则调用ActionInvocation的invokeAction方法具体执行Action中的方法。在DefaultActionInvocation的invoke方法中可以看到拦截器的执行逻辑，代码如下：<br />
<br />
public String invoke() throws Exception {<br />
&nbsp;&nbsp;&nbsp; ......<br />
&nbsp;&nbsp;&nbsp; if (interceptors.hasNext()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InterceptorMapping interceptor = (InterceptorMapping) interceptors.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resultCode = interceptor.getInterceptor().intercept(this);<br />
&nbsp;&nbsp;&nbsp; } else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resultCode = invokeActionOnly();<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; ......<br />
}<br />
<br />
看看上周的那个DefaultWorkflowInterceptor是如何工作的：<br />
&nbsp;&nbsp;&nbsp; protected String doIntercept(ActionInvocation invocation) throws Exception {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; // 取得要拦截的Action对象<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Object action = invocation.getAction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (action instanceof Validateable) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /*<br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; * 如果action是Validateable接口的一个实例，则执行接口的validate方法，这个方法可能是检查用户<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  * 输入的合法性，如果有错误，可能往errors里增加错误信息。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Validateable validateable = (Validateable) action;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (_log.isDebugEnabled()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _log.debug(&quot;Invoking validate() on action &quot;+validateable);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PrefixMethodInvocationUtil.invokePrefixMethod(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; invocation, <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; new String[] { VALIDATE_PREFIX, ALT_VALIDATE_PREFIX });<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception e) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // If any exception occurred while doing reflection, we want <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // validate() to be executed<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _log.warn(&quot;an exception occured while executing the prefix method&quot;, e);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (alwaysInvokeValidate) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; validateable.validate();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  /*<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  * 如果action是ValidationAware的实例，则检查action中是否包含错误信息，如果有，则返回<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  * INPUT的Result代码，并且整个Action就终止。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  */<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (action instanceof ValidationAware) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ValidationAware validationAwareAction = (ValidationAware) action;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (validationAwareAction.hasErrors()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (_log.isDebugEnabled()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _log.debug(&quot;Errors on action &quot;+validationAwareAction+&quot;, returning result name 'input'&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Action.INPUT;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp; /*<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  * 输入合法，执行action的功能。<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  */<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return invocation.invoke();<br />
&nbsp;&nbsp;&nbsp; }
          <br/>
          <span style="color:red;">
            <a href="http://javafever.javaeye.com/blog/49291#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>Mon, 22 Jan 2007 22:28:30 +0800</pubDate>
        <link>http://javafever.javaeye.com/blog/49291</link>
        <guid>http://javafever.javaeye.com/blog/49291</guid>
      </item>
      <item>
        <title>WebWork2.2笔记（二）ActionSupport及其他基础知识</title>
        <author>javafever</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javafever.javaeye.com">javafever</a>&nbsp;
          链接：<a href="http://javafever.javaeye.com/blog/46962" style="color:red;">http://javafever.javaeye.com/blog/46962</a>&nbsp;
          发表时间: 2007年01月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          绝大多数情况下，WebWork不是直接实现com.opensymphony.xwork.Action接口，而是扩展com.opensymphony.xwork.ActionSupport类。ActionSupport实现了除Action以外的其他几个接口，主要的几个接口是：<br />
com.opensymphony.xwork.Validateable<br />
com.opensymphony.xwork.Validateaware<br />
com.opensymphony.xwork.TextProvider<br />
com.opensymphony.xwork.LocaleProvider<br />
这些接口主要是提供给WebWork的拦截器使用的，接口配合拦截器可以实现AOP功能。比如Validateable接口和Validateaware接口配合DefailtWorkflowInterceptor就可以实现对用户输入进行检验的功能，当用户调用Action时，首先执行Validateable接口定义的validate()方法，如果在这个方法中用户使用接口Validateaware中的方法设置了错误信息，则DefaultWorkflowInterceptor会自动终止Action的执行，并产生一个INPUT的result，只有没有任何错误信息才会执行Action的剩余部分。<br />
<br />
前面我们定义的xwork.xml配置文件中包含了一句：<include file="webwork-default.xml">，这个webwork-default.xml包含在webwork的jar包中。webwork-default.xml预建了很多常用的result-type、interceptor和interceptor-stack。其中interceptor和interceptor-stack用于定义webwork将要使用那些拦截器。interceptor定义一个拦截器，而interceptor定义一组拦截器。如果一个Action使用一组拦截器，则这些拦截器将以其定义的顺序执行，可见，interceptor-stack中拦截器的顺序时很重要的。<br />
<br />
在webwork-default.xml中有如下定义：<br />
<interceptor name="workflow" class="com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor"><br />
......<br />
而名为validationWorkflowStack和completeStack这两个预建的interceptor-stack则包含了workflow这个interceptor。<br />
<br />
下面做一个检查用户输入的练习，如果用户没有输入内容，则让用户重新输入，并且提示错误信息。<br />
<br />
web.xml<br />
与上次的相同。<br />
<br />
xwork.xml<br />
</interceptor></include>
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span></span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&quot;http://www.opensymphony.com/xwork/xwork-1.1.1.dtd&quot;<span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">xwork</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">include</span><span>&nbsp;</span><span class="attribute">file</span><span>=</span><span class="attribute-value">&quot;webwork-default.xml&quot;</span><span>&nbsp;</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 class="tag">&lt;</span><span class="tag-name">package</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;default&quot;</span><span>&nbsp;</span><span class="attribute">extends</span><span>=</span><span class="attribute-value">&quot;webwork-default&quot;</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;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">default-interceptor-ref</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;validationWorkflowStack&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">action</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;alidateInput&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;example.ValidateInputAction&quot;</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;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">result</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;success&quot;</span><span class="tag">&gt;</span><span>success.jsp</span><span class="tag"><!--</span--><span class="tag-name">result</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">result</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;input&quot;</span><span class="tag">&gt;</span><span>input.jsp</span><span class="tag"><!--</span--><span class="tag-name">result</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 class="tag"><!--</span--><span class="tag-name">action</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag"><!--</span--><span class="tag-name">package</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span><span class="tag"><!--</span--><span class="tag-name">xwork</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
</ol>
</div>
<br />
input.jsp<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span class="tag">&lt;</span><span>%@taglib&nbsp;</span><span class="attribute">prefix</span><span>=</span><span class="attribute-value">&quot;ww&quot;</span><span>&nbsp;</span><span class="attribute">uri</span><span>=</span><span class="attribute-value">&quot;/webwork&quot;</span><span>%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><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="alt"><span><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>Input&nbsp;Something</span><span class="tag"><!--</span--><span class="tag-name">title</span><span class="tag">&gt;</span><span class="tag"><!--</span--><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></span></li>
    <li class=""><span><span class="tag">&lt;</span><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 class="tag">&lt;</span><span class="tag-name">ww:form</span><span>&nbsp;</span><span class="attribute">action</span><span>=</span><span class="attribute-value">&quot;alidateInput.action&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">ww:textfield</span><span>&nbsp;</span><span class="attribute">label</span><span>=</span><span class="attribute-value">&quot;Input&nbsp;something:&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;something&quot;</span><span class="tag">&gt;</span><span class="tag"><!--</span--><span class="tag-name">ww:textfield</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">ww:submit</span><span class="tag">&gt;</span><span class="tag"><!--</span--><span class="tag-name">ww:submit</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span><span class="tag"><!--</span--><span class="tag-name">ww:form</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="tag"><!--</span--><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span><span class="tag"><!--</span--><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
</ol>
</div>
<br />
success.jsp<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span class="tag">&lt;</span><span>%@taglib&nbsp;</span><span class="attribute">prefix</span><span>=</span><span class="attribute-value">&quot;ww&quot;</span><span>&nbsp;</span><span class="attribute">uri</span><span>=</span><span class="attribute-value">&quot;/webwork&quot;</span><span>%</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><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="alt"><span><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>Success!</span><span class="tag"><!--</span--><span class="tag-name">title</span><span class="tag">&gt;</span><span class="tag"><!--</span--><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">ww:property</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;something&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag"><!--</span--><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span><span class="tag"><!--</span--><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://javafever.javaeye.com/blog/46962#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>Sun, 14 Jan 2007 23:26:23 +0800</pubDate>
        <link>http://javafever.javaeye.com/blog/46962</link>
        <guid>http://javafever.javaeye.com/blog/46962</guid>
      </item>
      <item>
        <title>WebWork2.2笔记（一）入门</title>
        <author>javafever</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://javafever.javaeye.com">javafever</a>&nbsp;
          链接：<a href="http://javafever.javaeye.com/blog/46832" style="color:red;">http://javafever.javaeye.com/blog/46832</a>&nbsp;
          发表时间: 2007年01月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1、在Eclipse WTP中创建一个Dynamic Web Project，命名为ww2example1，Target Runtime选择配置好的Apache Tomcat 5.5。Project Facets页选择Web Module Version为2.4（其实就是Servlet版本），Java Version为5.0。WebDoclet不选。路径设置使用默认值。<br />
<br />
2、将WebWork2.2.4的库文件拷贝到项目的WebContent/WEB-INF/lib目录下。拷贝的jar文件在webwork目录和子目录lib下，这个入门程序只需要lib子目录下的default子目录中的jar文件和webwork目录下的webwork-2.2.4.jar文件。<br />
<br />
3、修改WebContent/WEB-INF/web.xml文件，增加WebWork需要的Filter。修改后的web.xml文件内容为：<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span class="tag"><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 class="tag">&lt;</span><span class="tag-name">web-app</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;WebApp_ID&quot;</span><span>&nbsp;</span><span class="attribute">version</span><span>=</span><span class="attribute-value">&quot;2.4&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://java.sun.com/xml/ns/j2ee&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<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></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">xsi:schemaLocation</span><span>=</span><span class="attribute-value">&quot;http://java.sun.com/xml/ns/j2ee&nbsp;http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">display-name</span><span class="tag">&gt;</span><span>ww2example1</span><span class="tag"><!--</span--><span class="tag-name">display-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">filter</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">filter-name</span><span class="tag">&gt;</span><span>webwork</span><span class="tag"><!--</span--><span class="tag-name">filter-name</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 class="tag">&lt;</span><span class="tag-name">filter-class</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;&nbsp;&nbsp;com.opensymphony.webwork.dispatcher.FilterDispatcher&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag"><!--</span--><span class="tag-name">filter-class</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag"><!--</span--><span class="tag-name">filter</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">filter-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">filter-name</span><span class="tag">&gt;</span><span>webwork</span><span class="tag"><!--</span--><span class="tag-name">filter-name</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 class="tag">&lt;</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>/*</span><span class="tag"><!--</span--><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag"><!--</span--><span class="tag-name">filter-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">welcome-file-list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">welcome-file</span><span class="tag">&gt;</span><span>index.jsp</span><span class="tag"><!--</span--><span class="tag-name">welcome-file</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag"><!--</span--><span class="tag-name">welcome-file-list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class="alt"><span><span class="tag"><!--</span--><span class="tag-name">web-app</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
</ol>
</div>
<br />
编写一个Action：example.FirstAction，扩展com.opensymphony.xwork.Action接口，这个Action什么都不做，execute方法只是直接返回SUCCESS常量。代码如下：<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span class="keyword">package</span><span>&nbsp;example;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">import</span><span>&nbsp;com.opensymphony.xwork.Action;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;FirstAction&nbsp;</span><span class="keyword">implements</span><span>&nbsp;Action&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;String&nbsp;execute()&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;SUCCESS;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
在工程的源码路径（src）中建立一个xwork.xml文件。这个文件主要用来定义Action和Interceptor，本练习的xwork.xml文件内容如下：<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span></span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&quot;http://www.opensymphony.com/xwork/xwork-1.1.1.dtd&quot;<span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">xwork</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">include</span><span>&nbsp;</span><span class="attribute">file</span><span>=</span><span class="attribute-value">&quot;webwork-default.xml&quot;</span><span>&nbsp;</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 class="tag">&lt;</span><span class="tag-name">package</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;default&quot;</span><span>&nbsp;</span><span class="attribute">extends</span><span>=</span><span class="attribute-value">&quot;webwork-default&quot;</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;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">default-action-ref</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;welcome&quot;</span><span>&nbsp;</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;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">action</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;welcome&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;example.FirstAction&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">result</span><span class="tag">&gt;</span><span>/welcome.jsp</span><span class="tag"><!--</span--><span class="tag-name">result</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 class="tag"><!--</span--><span class="tag-name">action</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag"><!--</span--><span class="tag-name">package</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
    <li class=""><span><span class="tag"><!--</span--><span class="tag-name">xwork</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></span></li>
</ol>
</div>
<br />
在项目的WebContent目录下建立一个welcome.jsp页面，内容如下：<br />
<div class="code_title">xml 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-xml" start="1">
    <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><span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>Welcome&nbsp;to&nbsp;WebWork</span><span class="tag">&lt;/</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">h3</span><span class="tag">&gt;</span><span>Welcome&nbsp;to&nbsp;WebWork!</span><span class="tag">&lt;/</span><span class="tag-name">h3</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
在Eclipse中启动 ApacheTomcat5.5，打开浏览器，在地址栏输入：<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span>http:</span><span class="comment">//localhost:8080/ww2example1/welcome.action</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
出现期望的运行结果。<br />
<br />
OK，第一个WebWork例子运行成功。
          <br/>
          <span style="color:red;">
            <a href="http://javafever.javaeye.com/blog/46832#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>Sat, 13 Jan 2007 19:52:00 +0800</pubDate>
        <link>http://javafever.javaeye.com/blog/46832</link>
        <guid>http://javafever.javaeye.com/blog/46832</guid>
      </item>
  </channel>
</rss>