開始玩Struts - 入門級


index

  1. 建立 JDK 環境
  2. 建立 Tomcat 環境
  3. 下載 Struts
  4. 建立目錄結構
  5. 準備相關的 library
  6. 建立 web.xml 檔
  7. 建立 struts-config.xml 檔
  8. 建立 Bean 檔
  9. 建立 JSP 檔
  10. 測試
  11. 測試程式的Action流向圖
  12. 下載範例程式 tset.zip
  13. 相關網站

建立 JDK 環境

  1. 下載 jdk 1.3.1.10 : http://java.sun.com/j2se/1.3/download.html

  2. 執行 j2sdk-1_3_1_10-windows-i586.exe 進行安裝,並選擇安裝路徑為 : C:\Java\jdk1.3.1_10


建立 Tomcat 環境

  1. 下載 Tomcat 4.1.30 : http://mir2.ovh.net/ftp.apache.org/dist/jakarta/tomcat-4/v4.1.30/bin/jakarta-tomcat-4.1.30.zip

  2. unzip壓縮檔,並放置於 C:\Java\jakarta-tomcat-4.1.30

  3. 用文書編輯軟體,建立 C:\Java\jakarta-tomcat-4.1.30\conf\worker.properties

    由於本檔設定值很多,請從這裡下載 worker.properties 檔即可使用。
    若要使用其他版本的 Tomcat 或 JDK,請修改如下兩個設定值:
    workers.tomcat_home=C:\Java\jakarta-tomcat-4.1.30
    workers.java_home=C:\Java\jdk1.3.1_10
    注意:太舊的 Tomcat 版本並不支援 Struts/Tags 方式。

  4. 用文書編輯軟體,建立 C:\Java\Tomcat.bat ,其內容如下:

    cd \Java\jakarta-tomcat-4.1.30\bin
    set CATALINA_HOME=C:\Java\jakarta-tomcat-4.1.30
    set JAVA_HOME=C:\Java\jdk1.3.1_10
    startup

下載 Struts

  1. 下載 Struts 1.1 : http://archive.apache.org/dist/struts/struts-1.1/

  2. 更多下載檔案 : http://archive.apache.org/

建立目錄結構

  1. 建立一個測試用的目錄 test\ ,放置於 C:\Java\jakarta-tomcat-4.1.30\webapps\ ,其目錄結構如下:
    webapps\
      |
      +--- test\
             |
             +--- WEB-INF\
                     |
                     +--- classes\
                     |
                     +--- lib\
                     |
                     +--- src\

準備相關的 library

  1. 複製以下 libs,放置於 C:\Java\jakarta-tomcat-4.1.30\webapps\test\WEB-INF\lib\
    這些 libs 可以在 C:\Java\jakarta-struts-1.1\lib 或是 C:\Java\jakarta-struts-1.1\contrib\struts-el\lib 找到
    commons-beanutils.jar
    commons-collections.jar
    commons-digester.jar
    commons-fileupload.jar
    commons-lang.jar
    commons-logging.jar
    commons-validator.jar
    jakarta-oro.jar
    jstl.jar
    standard.jar
    struts-el.jar
    struts-legacy.jar
    struts.jar

建立 web.xml 檔

  1. 用文書編輯軟體,建立 C:\Java\jakarta-tomcat-4.1.30\webapps\test\WEB-INF\web.xml ,其內容如下:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app PUBLIC
          "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
          "http://java.sun.com/dtd/web-app_2_3.dtd">
    
    <web-app>
       <display-name>My Struts</display-name>
    
       <servlet>
          <servlet-name>action</servlet-name>
          <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
          <init-param>
             <param-name>application</param-name>
             <param-value>MyMessage</param-value>
          </init-param>
          <init-param>
             <param-name>config</param-name>
             <param-value>/WEB-INF/struts-config.xml</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
       </servlet>
    
       <servlet-mapping>
          <servlet-name>action</servlet-name>
          <url-pattern>/do/*</url-pattern>
       </servlet-mapping>
    </web-app>
  2. 主要設定值,說明如下:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app PUBLIC
          "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
          "http://java.sun.com/dtd/web-app_2_3.dtd">
    
    <web-app>
       <display-name>My Struts</display-name>
    
       <servlet>
          <servlet-name>action</servlet-name> <!-- 定義 Action Servlet -->
          <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
          <init-param>
             <param-name>application</param-name>
             <param-value>MyMessage</param-value>
          </init-param>
          <init-param>
             <param-name>config</param-name> <!-- 定義 Struts Config 檔 -->
             <param-value>/WEB-INF/struts-config.xml</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
       </servlet>
    
       <servlet-mapping>
          <servlet-name>action</servlet-name> <!-- 定義網頁中 action 的使用 -->
          <url-pattern>/do/*</url-pattern> <!-- 由於定義了 /do/* ,因此不能自己使用一個名為 do\ 的子目錄 -->
       </servlet-mapping>
    </web-app>

建立 struts-config.xml 檔

  1. 用文書編輯軟體,建立 C:\Java\jakarta-tomcat-4.1.30\webapps\test\WEB-INF\struts-config.xml ,其內容如下:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
    
    <struts-config>
       <action-mappings>
          <action
              path="/a_page1"
              forward="/page2.jsp"/>
    
          <action
              path="/a_page2"
              type="MyClass"
              name="MyForm"
              scope="request">
             <forward
                 name="proccess_finish"
                 path="/page2.jsp"/>
          </action>
    
       </action-mappings>
    </struts-config>
  2. 主要設定值,說明如下:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
    
    <struts-config>
       <!-- 定義網頁中所有使用的 action -->
       <action-mappings>
          <action
              path="/a_page1" <!-- 對應到網頁的連結動作,例如 <a href="do/a_page1"> 或 <form action="do/a_page1"> -->
              forward="/page2.jsp"/> <!-- forward要連結的地方 -->
    
          <action
              path="/a_page2" <!-- 對應到網頁的連結動作,例如 <a href="do/a_page2"> 或 <form action="do/a_page2"> -->
              type="MyClass" <!-- 對應bean檔,例如 WEB-INF\classes\MyClass.class -->
              name="MyForm" <!-- 網頁上Form的名稱,例如 <form name="MyForm"> -->
              scope="request"> <!-- 網頁上Form的各Field,送到那個物件,例如常用的 request, 或 session, application, page -->
             <forward
                 name="proccess_finish" <!-- forward動作的名稱,一般是由bean的forward物件送來,例如 mapping.findForward("proccess_finish") -->
                 path="/page2.jsp"/> <!-- forward要連結的地方 -->
          </action>
    
       </action-mappings>
    </struts-config>

建立 Bean 檔

  1. 用文書編輯軟體,建立 C:\Java\jakarta-tomcat-4.1.30\webapps\test\WEB-INF\src\MyClass.java ,其內容如下:
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.commons.beanutils.BeanUtils;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public final class MyClass extends Action {
       public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
          /*-- forward的名稱,對應到 struts-config.xml 中名為 forward name="proccess_finish" 的設定 */
          return (mapping.findForward("proccess_finish"));
       }
    }
  2. 使用 javac MyClass.java 得到 MyClass.class,並放置於 C:\Java\jakarta-tomcat-4.1.30\webapps\test\WEB-INF\classes\

建立 JSP 檔

  1. 用文書編輯軟體,建立 C:\Java\jakarta-tomcat-4.1.30\webapps\page1.jsp ,其內容如下:
    <html>
    <body>
    <h1>My Struts: page1.jsp</h1>
    <a href="do/a_page1">do/a_page1</a><br>
    <a href="do/a_page2">do/a_page2</a><br>
    </body>
    </html>
  2. 用文書編輯軟體,建立 C:\Java\jakarta-tomcat-4.1.30\webapps\page2.jsp ,其內容如下:
    <html>
    <body>
    <h1>My Struts: page2.jsp</h1>
    </body>
    </html>

測試

  1. 點擊 C:\Java\Tomcat.bat 以啟動 Tomcat,此時會蹦出一個 Tomcat 服務視窗。

  2. 開啟瀏覽器,並輸入 http://localhost:8080/test/page1.jsp 進行網址測試。

  3. 點擊 page1.jsp 上的兩個 url,若都順利連結 page2.jsp ,即表示測試成功。

  4. 若有異動 WEB-INF\ 目錄下的檔案,包含 *.xml, *.class 等檔案,則必須關閉 Tomcat 服務視窗,再點擊 C:\Java\Tomcat.bat 重啟 Tomcat 。


測試程式的Action流向圖

  1. 以下圖案表示 page1.jsp 中,Action: /a_page1 的流向:

    表示 page1.jsp 中,Action: /a_page1 的流向

  2. 以下圖案表示 page1.jsp 中,Action: /a_page2 的流向:

    表示 page1.jsp 中,Action: /a_page2 的流向


下載範例程式 tset.zip

  1. 本 test.zip 含上述 *.jsp, *.class, *.xml, 等檔案,並已收錄成一個名為 test\ 目錄。
  2. 因 jar 檔眾多且檔案大,因此本 test.zip 不含 test\WEB-INF\lib\ 目錄下的 library,請自行從 jakarta-struts-1.1.zip 中取得。
  3. Download: test.zip

相關網站

http://www.matrix.org.cn/subject/struts/website_forum.htm
http://www.huihoo.com/java/struts/7.html
http://www.cn-java.com/target/news.php?news_id=2840
http://www.hot.net.tw/book/014/NE20191.htm
http://jakarta.apache.org/struts/index.html
http://jakarta.apache.org/struts/userGuide/index.html

作者:Dana(Dana), cowwu@ms15.hinet.net, 2004/02/27
本文章公開於個人網站 http://www.dana.idv.tw
Home Copyright © Shu-Chen Wu