沒有做不到,只有想不到

          常用鏈接

          統(tǒng)計

          最新評論

          struts2(2.0.9)(學(xué)習(xí)一)HelloWorld篇

          本文參考struts-2.0.9-all\struts-2.0.9\docs\docs\hello-world.html,并根據(jù)筆者在學(xué)習(xí)過程中的實踐增加了部分內(nèi)容。

           當(dāng)你提交一個HTML表單到這個框架中的時候,輸入并不是被發(fā)送到服務(wù)頁,而是被發(fā)送到你提供的Java類,這些類被稱為Action。在這些Action執(zhí)行完后,選擇某一個資源來呈現(xiàn)返回結(jié)果,這個資源一般是頁面,但也可以是PDF文件,或者是Excel文件,亦或是Java applet窗口。

           假設(shè)你想要創(chuàng)建一個“Hello World”的例子來呈現(xiàn)歡迎信息,在你準(zhǔn)備好開發(fā)環(huán)境后,為了創(chuàng)建一個“Hello World”的例子,你需要做如下三件事情:

          1.       創(chuàng)建一個jsp頁面來呈現(xiàn)歡迎信息;

          2.       創(chuàng)建一個Action類來創(chuàng)建信息;

          3.       在配置文件中配置action和頁面的映射關(guān)系。

          注意:為了創(chuàng)建這個組件,我們將工作流分成幾乎無人不曉的三部分:視圖、模型和控制器。分離這三部分的原因是當(dāng)系統(tǒng)變得越來月復(fù)雜的時候,我們能夠更好的管理。

          一.             準(zhǔn)備工作

           建立web工程,其中工程名為tutorial,在WebRoot下引入struts2lib下的如下4個包:

           commons-logging-1.1.jar

           freemarker-2.3.8.jar

           ognl-2.6.11.jar

           struts2-core-2.0.9.jar

           xwork-2.0.3.jar

          web.xml文件中增加struts2FilterDispatcher,修改后的web.xml如下:

          <?xml version="1.0" encoding="UTF-8"?>

          <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
              
          <display-name>tutorial</display-name>
              
          <filter>
                  
          <filter-name>struts2</filter-name>
                  
          <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
              
          </filter>

              
          <filter-mapping>
                  
          <filter-name>struts2</filter-name>
                  
          <url-pattern>/*</url-pattern>
              
          </filter-mapping>

              
          <welcome-file-list>
                  
          <welcome-file>index.html</welcome-file>
              
          </welcome-file-list>
          </web-app>

          二.             代碼

           首先,我們需要一個jsp頁面來呈現(xiàn)信息,HelloWorld.jsp頁面代碼如下所示:

          <%@ taglib prefix="s" uri="/struts-tags" %>
          <html>
              
          <head>
                  
          <title>Hello World!</title>
              
          </head>
              
          <body>
                  
          <h2><s:property value="message" /></h2>
              
          </body>
          </html>

          接著,我們需要一個Action類來創(chuàng)建信息,代碼如下:

          package tutorial;
          import com.opensymphony.xwork2.ActionSupport;
          public class HelloWorld extends ActionSupport {
              
          public static final String MESSAGE = "Struts is up and running ";
              
          public String execute() throws Exception {
                  setMessage(MESSAGE);
                  
          return SUCCESS;
              }

              
          private String message;
              
          public void setMessage(String message){
                  
          this.message = message;
              }

              
          public String getMessage() {
                  
          return message;
              }

          }

          第三步,我們需要在配置文件中進行相應(yīng)配置來將兩者聯(lián)系起來。讓我們編輯src下的struts.xml文件,該文件內(nèi)容如下:

          <!DOCTYPE struts PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
              "http://struts.apache.org/dtds/struts-2.0.dtd"
          >
          <struts>
              
          <package name="tutorial" extends="struts-default">
                  
          <action name="HelloWorld" class="tutorial.HelloWorld">
                      
          <result>/HelloWorld.jsp</result>
                  
          </action>
                  
          <!-- Add your actions here -->
              
          </package>
          </struts>

          代碼已經(jīng)完成,讓我們來嘗試運行它。部署該應(yīng)用程序并打開http://localhost:8080/tutorial/HelloWorld.action,我們可以看到標(biāo)題欄為:Hello World,并且顯示“Struts is up and running!”的頁面呈現(xiàn)在我們面前。

          三.             代碼是如何工作的?

           你的瀏覽器向Web服務(wù)器發(fā)送了的http://localhost:8080/tutorial/HelloWorld.action注:tutorial為部署Tomcat中的的項目名稱URL請求后,服務(wù)器做了如下工作:

          1.       容器接收到了Web服務(wù)器對資源HelloWorld.action的請求,根據(jù)web.xml中的配置,服務(wù)器將包含有.action后綴的請求轉(zhuǎn)到org.apache.struts2.dispatcher.FilterDispatcher類進行處理。這個FilterDispatcher是框架的一個進入點;

          2.       框架在struts.xml配置文件中找到名為HelloWorldaction對應(yīng)的類。框架初始化該Action并且執(zhí)行該Action類的execute方法;

          3.       execute方法將信息放入message變量中,并返回成功。框架檢查配置以查看當(dāng)返回成功時對應(yīng)的頁面。框架告訴容器來獲得請求返回的結(jié)果頁面HelloWorld.jsp;

          4.       HelloWorld.jsp執(zhí)行完后,<s:property value="message" />標(biāo)簽調(diào)用HelloWorldAction類中的getMessage方法來獲得message的值,并將合并了值的頁面呈現(xiàn)給用戶;

          5.       一個純粹的HTML頁面顯示在用戶的瀏覽器上。

          四.             測試Action

           測試Action很簡單,以下是上述HelloWorldAction類的測試類的代碼:

          package tutorial;
          import junit.framework.TestCase;
          import com.opensymphony.xwork2.Action;
          import com.opensymphony.xwork2.ActionSupport;
          public class HelloWorldTest extends TestCase {
           
          public void testHelloWorld() throws Exception {
              HelloWorld hello_world 
          = new HelloWorld();
              String result 
          = hello_world.execute();
              assertTrue(
          "Expected a success result!",
                ActionSupport.SUCCESS.equals(result));
              assertTrue(
          "Expected the default message!",
                HelloWorld.MESSAGE.equals(hello_world.getMessage()));
              }

          }

          五.             需要記住的東西

           本框架利用Action來處理HTML的表單以及其余請求。Action返回一個結(jié)果的名字字符串,例如SUCCESSERROR以及INPUT等,從struts.xml中獲取映射信息。一個給定的結(jié)果字符串將選擇一個頁面或其他資源(圖片或PDF)來返回給用戶。

           當(dāng)一個jsp被載入的時候,通常有一些動態(tài)變化的元素需要Action來載入。為了更加容易的顯示動態(tài)數(shù)據(jù),本框架提供了一些可以跟HTML配合使用的標(biāo)簽。

          六.             問題匯總

           對于出現(xiàn)啟動失敗,例如Cannot locate the chosen ObjectFactory implementation: spring等錯誤的朋友,請仔細(xì)檢查你引入的包。關(guān)于需引入的包,請參見第一節(jié)(準(zhǔn)備工作)。也希望遇到其余問題的朋友留言或發(fā)Email給我,在此進行匯總。

          posted on 2007-08-20 09:23 井底之蛙 閱讀(292) 評論(0)  編輯  收藏 所屬分類: struts2學(xué)習(xí),入門,研究,配置


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 广东省| 万山特区| 泗阳县| 水城县| 青冈县| 黎城县| 都昌县| 漯河市| 商南县| 克东县| 济源市| 龙川县| 保山市| 吐鲁番市| 宁城县| 调兵山市| 洪泽县| 龙井市| 山东省| 井冈山市| 宁波市| 丰宁| 丽江市| 光泽县| 蒲城县| 台江县| 朝阳县| 彭州市| 新巴尔虎左旗| 雅安市| 右玉县| 德安县| 合山市| 苏尼特左旗| 通道| 桂林市| 怀来县| 伊春市| 连云港市| 崇仁县| 平顶山市|