renxiao2003 发表于 2011-12-21 08:44

Seasar2入门(一)

<P><FONT style="BACKGROUND-COLOR: #ffffff">Seasar2(S2Container),简单的说,是比Spring一样提供DI功能的框架,但比Sping轻量级。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">比理论来说本人更喜欢实际操作和调试,接下来,就让我们开始Seasar2之旅吧。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">首先,先下载和安装JDK,Eclipse,Tomcat</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">JDK 下载:<a href="http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html" target="_blank">http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html</A> 下载JDK 6 Update 22 </FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">Eclipse 下载:<a href="http://www.eclipse.org/downloads/" target="_blank">http://www.eclipse.org/downloads/</A> 下载Eclipse IDE for Java EE Developers</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">Tomcat 下载:<a href="http://tomcat.apache.org/download-60.cgi" target="_blank">http://tomcat.apache.org/download-60.cgi</A> 下载32-bit Windows zip</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">接下来,下载Seasar2(S2Container)</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff"><a href="http://s2container.seasar.org/2.4/ja/downloads.html" target="_blank">http://s2container.seasar.org/2.4/ja/downloads.html</A> 下载S2Container</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">把下载后的S2Container解压缩,主要关注下2个文件夹</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">「lib」文件夹:包含S2Container以及相关库。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">「doc」文件夹:S2Container的相关文档。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">接下来,开始用S2Container开发。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">使用Eclipse新建项目,「File」⇒「New」⇒「Dynamic Web Project」,项目名叫“seasar”。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">&nbsp; </FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">把下面jar包拷贝到lib目录下,并加入到Build Path里。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">(1)使用S2Container必须的文件</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">s2-framework-2.4.42.jar</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">commons-logging-1.1.1.jar</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">javassist-3.4.ga.jar</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">ognl-2.6.9-patch-20090427.jar</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">(2)使用S2AOP必须的文件</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">aopalliance-1.0.jar</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">(3)使用Java EE服务器以外的Servlet容器(比如Tomcat)时必须的文件</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">geronimo-jta_1.1_spec-1.0.jar</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">新建Bean类(DataBean.java)</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">view plaincopy to clipboardprint?<BR>01.package jp.seasar.framework;&nbsp;&nbsp; <BR>02.&nbsp; <BR>03.import java.util.Date;&nbsp;&nbsp; <BR>04.&nbsp; <BR>05.public class DataBean {&nbsp;&nbsp; <BR>06.&nbsp;&nbsp;&nbsp; private String title;&nbsp;&nbsp; <BR>07.&nbsp;&nbsp;&nbsp; private java.util.Date time;&nbsp;&nbsp; <BR>08.&nbsp;&nbsp;&nbsp; private String memo;&nbsp;&nbsp; <BR>09.&nbsp; <BR>10.&nbsp;&nbsp;&nbsp; public DataBean() {&nbsp;&nbsp; <BR>11.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>12.&nbsp; <BR>13.&nbsp;&nbsp;&nbsp; public DataBean(String title, Date time, String memo) {&nbsp;&nbsp; <BR>14.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.title = title;&nbsp;&nbsp; <BR>15.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.time = time;&nbsp;&nbsp; <BR>16.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.memo = memo;&nbsp;&nbsp; <BR>17.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>18.&nbsp; <BR>19.&nbsp;&nbsp;&nbsp; public String getTitle() {&nbsp;&nbsp; <BR>20.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return title;&nbsp;&nbsp; <BR>21.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>22.&nbsp; <BR>23.&nbsp;&nbsp;&nbsp; public void setTitle(String title) {&nbsp;&nbsp; <BR>24.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.title = title;&nbsp;&nbsp; <BR>25.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>26.&nbsp; <BR>27.&nbsp;&nbsp;&nbsp; public java.util.Date getTime() {&nbsp;&nbsp; <BR>28.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return time;&nbsp;&nbsp; <BR>29.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>30.&nbsp; <BR>31.&nbsp;&nbsp;&nbsp; public void setTime(java.util.Date time) {&nbsp;&nbsp; <BR>32.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.time = time;&nbsp;&nbsp; <BR>33.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>34.&nbsp; <BR>35.&nbsp;&nbsp;&nbsp; public String getMemo() {&nbsp;&nbsp; <BR>36.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return memo;&nbsp;&nbsp; <BR>37.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>38.&nbsp; <BR>39.&nbsp;&nbsp;&nbsp; public void setMemo(String memo) {&nbsp;&nbsp; <BR>40.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.memo = memo;&nbsp;&nbsp; <BR>41.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>42.&nbsp; <BR>43.&nbsp;&nbsp;&nbsp; @Override&nbsp; <BR>44.&nbsp;&nbsp;&nbsp; public String toString() {&nbsp;&nbsp; <BR>45.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "Title:" + title + ",Date:" + time + ",Memo:" + memo;&nbsp;&nbsp; <BR>46.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>47.&nbsp; <BR>48.}&nbsp; <BR>&nbsp;</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">新建管理Data的接口(TestBean.java)</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">view plaincopy to clipboardprint?<BR>01.package jp.seasar.framework;&nbsp;&nbsp; <BR>02.&nbsp; <BR>03.import java.util.ArrayList;&nbsp;&nbsp; <BR>04.&nbsp; <BR>05.public interface TestBean {&nbsp;&nbsp; <BR>06.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>07.&nbsp;&nbsp;&nbsp; public java.util.ArrayList&lt;DataBean&gt; getDatalist();&nbsp;&nbsp; <BR>08.&nbsp; <BR>09.&nbsp;&nbsp;&nbsp; public void setDatalist(ArrayList&lt;DataBean&gt; list);&nbsp;&nbsp; <BR>10.&nbsp; <BR>11.&nbsp;&nbsp;&nbsp; public void addData(String title, java.util.Date time, String memo);&nbsp;&nbsp; <BR>12.&nbsp; <BR>13.&nbsp;&nbsp;&nbsp; public void removeData(int i);&nbsp;&nbsp; <BR>14.&nbsp; <BR>15.&nbsp;&nbsp;&nbsp; public String toString();&nbsp;&nbsp; <BR>16.}&nbsp; <BR>&nbsp;</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">新建管理Data的实现类 </FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">&nbsp;<BR>view plaincopy to clipboardprint?<BR>01.package jp.seasar.framework;&nbsp;&nbsp; <BR>02.&nbsp; <BR>03.import java.util.ArrayList;&nbsp;&nbsp; <BR>04.import java.util.Date;&nbsp;&nbsp; <BR>05.&nbsp; <BR>06.public class TestBeanImpl implements TestBean {&nbsp;&nbsp; <BR>07.&nbsp; <BR>08.&nbsp;&nbsp;&nbsp; private ArrayList&lt;DataBean&gt; datalist;&nbsp;&nbsp; <BR>09.&nbsp; <BR>10.&nbsp;&nbsp;&nbsp; public TestBeanImpl() {&nbsp;&nbsp; <BR>11.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; datalist = new ArrayList&lt;DataBean&gt;();&nbsp;&nbsp; <BR>12.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>13.&nbsp; <BR>14.&nbsp;&nbsp;&nbsp; @Override&nbsp; <BR>15.&nbsp;&nbsp;&nbsp; public ArrayList&lt;DataBean&gt; getDatalist() {&nbsp;&nbsp; <BR>16.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return datalist;&nbsp;&nbsp; <BR>17.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>18.&nbsp; <BR>19.&nbsp;&nbsp;&nbsp; @Override&nbsp; <BR>20.&nbsp;&nbsp;&nbsp; public void setDatalist(ArrayList&lt;DataBean&gt; list) {&nbsp;&nbsp; <BR>21.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; datalist = list;&nbsp;&nbsp; <BR>22.&nbsp; <BR>23.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>24.&nbsp; <BR>25.&nbsp;&nbsp;&nbsp; @Override&nbsp; <BR>26.&nbsp;&nbsp;&nbsp; public void addData(String title, Date time, String memo) {&nbsp;&nbsp; <BR>27.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; datalist.add(new DataBean(title, time, memo));&nbsp;&nbsp; <BR>28.&nbsp; <BR>29.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>30.&nbsp; <BR>31.&nbsp;&nbsp;&nbsp; @Override&nbsp; <BR>32.&nbsp;&nbsp;&nbsp; public void removeData(int i) {&nbsp;&nbsp; <BR>33.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; datalist.remove(i);&nbsp;&nbsp; <BR>34.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>35.&nbsp; <BR>36.&nbsp;&nbsp;&nbsp; @Override&nbsp; <BR>37.&nbsp;&nbsp;&nbsp; public String toString() {&nbsp;&nbsp; <BR>38.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String result = "&lt;table border=\"1\"&gt;";&nbsp;&nbsp; <BR>39.&nbsp; <BR>40.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (DataBean bean : datalist) {&nbsp;&nbsp; <BR>41.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result += "&lt;tr&gt;";&nbsp;&nbsp; <BR>42.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result += "&lt;td&gt;" + bean.getTitle() + "&lt;/td&gt;";&nbsp;&nbsp; <BR>43.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result += "&lt;td&gt;" + bean.getTime().toString() + "&lt;/td&gt;";&nbsp;&nbsp; <BR>44.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result += "&lt;td&gt;" + bean.getMemo() + "&lt;/td&gt;";&nbsp;&nbsp; <BR>45.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result += "&lt;/tr&gt;";&nbsp;&nbsp; <BR>46.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>47.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result += "&lt;/table&gt;";&nbsp;&nbsp; <BR>48.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return result;&nbsp;&nbsp; <BR>49.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>50.&nbsp; <BR>51.}&nbsp; <BR>&nbsp;</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">&nbsp;新建S2Container的配置文件(app.dicon)</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">&nbsp;<BR>view plaincopy to clipboardprint?<BR>01.&lt;?xml version="1.0" encoding="UTF-8"?&gt;&nbsp;&nbsp; <BR>02.&lt;!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"&nbsp; <BR>03.&nbsp;&nbsp;&nbsp; "<a href="http://www.seasar.org/dtd/components24.dtd" target="_blank">http://www.seasar.org/dtd/components24.dtd</A>"&gt;&nbsp;&nbsp; <BR>04.&lt;components&gt;&nbsp;&nbsp; <BR>05.&nbsp;&nbsp;&nbsp; &lt;component name="mybean" class="jp.seasar.framework.TestBeanImpl" /&gt;&nbsp;&nbsp; <BR>06.&lt;/components&gt;&nbsp; <BR>&nbsp;</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">新建Servlet(Servlet1.java)</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">view plaincopy to clipboardprint?<BR>01.package jp.seasar.framework;&nbsp;&nbsp; <BR>02.&nbsp; <BR>03.import java.io.IOException;&nbsp;&nbsp; <BR>04.&nbsp; <BR>05.import javax.servlet.ServletException;&nbsp;&nbsp; <BR>06.import javax.servlet.annotation.WebServlet;&nbsp;&nbsp; <BR>07.import javax.servlet.http.HttpServlet;&nbsp;&nbsp; <BR>08.import javax.servlet.http.HttpServletRequest;&nbsp;&nbsp; <BR>09.import javax.servlet.http.HttpServletResponse;&nbsp;&nbsp; <BR>10.&nbsp; <BR>11.import org.seasar.framework.container.S2Container;&nbsp;&nbsp; <BR>12.import org.seasar.framework.container.factory.S2ContainerFactory;&nbsp;&nbsp; <BR>13.&nbsp; <BR><A href='mailto:14.@WebServlet("/serv1'>14.@WebServlet("/serv1</A>")&nbsp;&nbsp; <BR>15.public class Servlet1 extends HttpServlet {&nbsp;&nbsp; <BR>16.&nbsp; <BR>17.&nbsp;&nbsp;&nbsp; private static final long serialVersionUID = 1L;&nbsp;&nbsp; <BR>18.&nbsp; <BR>19.&nbsp;&nbsp;&nbsp; @Override&nbsp; <BR>20.&nbsp;&nbsp;&nbsp; protected void doGet(HttpServletRequest req, HttpServletResponse resp)&nbsp;&nbsp; <BR>21.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {&nbsp;&nbsp; <BR>22.&nbsp; <BR>23.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S2Container container = S2ContainerFactory.create("app.dicon");&nbsp;&nbsp; <BR>24.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; container.init();&nbsp;&nbsp; <BR>25.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TestBeanImpl bean = (TestBeanImpl) container.getComponent("mybean");&nbsp;&nbsp; <BR>26.&nbsp; <BR>27.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bean.addData("1", new java.util.Date(), "This is test.");&nbsp;&nbsp; <BR>28.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bean.addData("2", new java.util.Date(), "这是测试。");&nbsp;&nbsp; <BR>29.&nbsp; <BR>30.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resp.setContentType("text/html; charset=UTF-8");&nbsp;&nbsp; <BR>31.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resp.setCharacterEncoding("UTF-8");&nbsp;&nbsp; <BR>32.&nbsp; <BR>33.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; java.io.PrintWriter out = resp.getWriter();&nbsp;&nbsp; <BR>34.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print("&lt;html&gt;&lt;head&gt;&lt;/head&gt;");&nbsp;&nbsp; <BR>35.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print("&lt;body&gt;");&nbsp;&nbsp; <BR>36.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print("&lt;h5&gt;");&nbsp;&nbsp; <BR>37.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print(bean.toString());&nbsp;&nbsp; <BR>38.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print("&lt;/h5&gt;");&nbsp;&nbsp; <BR>39.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.print("&lt;/body&gt;&lt;/html&gt;");&nbsp;&nbsp; <BR>40.&nbsp; <BR>41.&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <BR>42.&nbsp; <BR>43.}&nbsp; <BR>&nbsp;</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">配置web.xml</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">view plaincopy to clipboardprint?<BR>01.&lt;?xml version="1.0" encoding="UTF-8"?&gt;&nbsp;&nbsp; <BR>02.&lt;web-app xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</A>" xmlns="<a href="http://java.sun.com/xml/ns/javaee" target="_blank">http://java.sun.com/xml/ns/javaee</A>" xmlns:web="<a href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" target="_blank">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd</A>" xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/javaee" target="_blank">http://java.sun.com/xml/ns/javaee</A> <a href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" target="_blank">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd</A>" id="WebApp_ID" version="2.5"&gt;&nbsp;&nbsp; <BR>03.&nbsp; &lt;display-name&gt;seasar2&lt;/display-name&gt;&nbsp;&nbsp; <BR>04.&nbsp; &lt;servlet&gt;&nbsp;&nbsp; <BR>05.&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;serv1&lt;/servlet-name&gt;&nbsp;&nbsp; <BR>06.&nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;jp.seasar.framework.Servlet1&lt;/servlet-class&gt;&nbsp;&nbsp; <BR>07.&nbsp; &lt;/servlet&gt;&nbsp;&nbsp; <BR>08.&nbsp; &lt;servlet-mapping&gt;&nbsp;&nbsp; <BR>09.&nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;serv1&lt;/servlet-name&gt;&nbsp;&nbsp; <BR>10.&nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/serv1&lt;/url-pattern&gt;&nbsp;&nbsp; <BR>11.&nbsp; &lt;/servlet-mapping&gt;&nbsp;&nbsp; <BR>12.&nbsp; &lt;welcome-file-list&gt;&nbsp;&nbsp; <BR>13.&nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.html&lt;/welcome-file&gt;&nbsp;&nbsp; <BR>14.&nbsp; &lt;/welcome-file-list&gt;&nbsp;&nbsp; <BR>15.&lt;/web-app&gt;&nbsp; <BR>&nbsp;</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">编译发布到Tomcat</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">==============================================</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">本文没有写完,还需要修改,不明之处,还请谅解。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff"></FONT>&nbsp;</P>
<P><FONT style="BACKGROUND-COLOR: #ffffff">本文来自CSDN博客,转载请标明出处:<a href="http://blog.csdn.net/engchina/archive/2010/11/25/6035304.aspx" target="_blank">http://blog.csdn.net/engchina/archive/2010/11/25/6035304.aspx</A></FONT></P>
页: [1]
查看完整版本: Seasar2入门(一)