<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 297,  comments - 1618,  trackbacks - 0
      說明:本文翻譯自struts-2.0.8-all\struts-2.0.8\docs\docs\hello-world.html,并根據筆者在學習過程中的實踐增加了部分內容。

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

     假設你想要創建一個“Hello World”的例子來呈現歡迎信息,在你準備好開發環境后,為了創建一個“Hello World”的例子,你需要做如下三件事情:

    1.       創建一個jsp頁面來呈現歡迎信息;

    2.       創建一個Action類來創建信息;

    3.       在配置文件中配置action和頁面的映射關系。

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

    一.             準備工作

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

     commons-logging-1.1.jar

     freemarker-2.3.8.jar

     ognl-2.6.11.jar

     struts2-core-2.0.8.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頁面來呈現信息,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類來創建信息,代碼如下:

    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;
        }

    }

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

    <!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>

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

    三.             代碼是如何工作的?

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

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

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

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

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

    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返回一個結果的名字字符串,例如SUCCESSERROR以及INPUT等,從struts.xml中獲取映射信息。一個給定的結果字符串將選擇一個頁面或其他資源(圖片或PDF)來返回給用戶。

     當一個jsp被載入的時候,通常有一些動態變化的元素需要Action來載入。為了更加容易的顯示動態數據,本框架提供了一些可以跟HTML配合使用的標簽。

    六.             問題匯總

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

     下一篇:基礎篇:使用Struts2的標簽
     上一篇:基礎篇:序言

    posted on 2007-07-27 00:01 阿蜜果 閱讀(4138) 評論(21)  編輯  收藏 所屬分類: Struts2


    FeedBack:
    # re: Struts2學習進階(二)——Hello World篇
    2007-07-27 08:30 | vagrant
    記得上次看到寫的關于spring的aop,今天又看到關于struts2,好強......學習中  回復  更多評論
      
    # re: Struts2學習進階(二)——Hello World篇
    2007-07-27 08:36 | chenge
    不錯!  回復  更多評論
      
    # re: Struts2學習進階(二)——Hello World篇
    2007-07-27 08:57 | Tortoise
    技術強。e文也牛。厲害!  回復  更多評論
      
    # re: Struts2學習進階(二)——Hello World篇
    2007-07-27 09:35 | sterning
    加油.支持  回復  更多評論
      
    # re: Struts2學習進階(二)——Hello World篇
    2007-07-27 09:43 | cresposhi
    厲害厲害
    up  回復  更多評論
      
    # re: Struts2學習進階(二)——Hello World篇
    2007-07-27 11:00 | kenzhang
    寫的很詳細,看的很明白。支持!  回復  更多評論
      
    # re: Struts2學習進階(二)——Hello World篇
    2007-07-27 11:56 | Hmilyld
    不錯,支持下.
    等待下一篇.:)  回復  更多評論
      
    # re: Struts2學習進階(二)——Hello World篇[未登錄]
    2007-07-27 12:54 | beansoft
    友情支持一下.  回復  更多評論
      
    # re: Struts2學習進階(二)——Hello World篇[未登錄]
    2007-07-27 21:12 | -274°C
    好文章,好人。  回復  更多評論
      
    # re: Struts2學習進階(二)——Hello World篇
    2007-07-28 11:14 | Blake
    期待下文  回復  更多評論
      
    # re: Struts2學習進階(二)——Hello World篇
    2007-08-01 11:49 | kittow
    好貼,學到了,頂一下  回復  更多評論
      
    # re: Struts2學習進階(基礎篇二)——Hello World
    2007-08-12 22:34 | 夏日火雞
    PLMM
    你好厲害
    小生佩服  回復  更多評論
      
    # re: Struts2學習進階(基礎篇二)——Hello World
    2007-08-21 14:34 | liulin
    我運行了你的例子 ,怎么不行啊。  回復  更多評論
      
    # re: Struts2學習進階(基礎篇二)——Hello World
    2007-08-21 21:20 | 阿蜜果
    @liulin
    可以的,我等下把那個工程的源碼發到你郵箱吧。你核對一下什么地方弄錯了  回復  更多評論
      
    # re: Struts2學習進階(基礎篇二)——Hello World
    2007-08-23 17:44 | liulin
    好的。謝謝啊!!!  回復  更多評論
      
    # re: Struts2學習進階(基礎篇二)——Hello World
    2007-08-24 10:19 | liulin
    嚴重: Error filterStart
    2007-8-24 10:00:27 org.apache.catalina.core.StandardContext start
    嚴重: Context startup failed due to previous errors
    你發我的好象不是那個HelloWorld 的例子 ,但是這個列子也報了這個錯誤。不好意思,問一下。  回復  更多評論
      
    # re: Struts2學習進階(基礎篇二)——Hello World
    2007-08-26 23:26 | 大佑
    我做你那個範例~HelloWorld.jsp運行不了~
      回復  更多評論
      
    # re: Struts2學習進階(基礎篇二)——Hello World[未登錄]
    2007-08-27 09:03 | 阿蜜果
    @ liulin
    不好意思,上次發錯了,剛才又發了一次helloworld的例子,請查收!
    @大佑
    你一個運行不了,我無法給你確定答復,要不留下郵箱,我將那個hello world工程發給你。  回復  更多評論
      
    # re: Struts2學習進階(基礎篇二)——Hello World
    2007-10-08 19:38 | beijixuem
    我也想要代碼
    郵箱地址:dragonmxg@163.com
    謝謝了!  回復  更多評論
      
    # re: Struts2學習進階(基礎篇二)——Hello World
    2007-10-09 08:51 | 阿蜜果
    @beijixuem
    已經發了,請查收!  回復  更多評論
      
    # re: Struts2學習進階(基礎篇二)——Hello World
    2009-08-14 10:48 | pnpe
    我的也要出錯
    org.apache.catalina.core.StandardContext start
    嚴重: Error filterStart
    org.apache.catalina.core.StandardContext start
    嚴重: Context [/helloworld] startup failed due to previous errors

    麻煩你也發給我哈吧 謝謝!
    pnpe@163.com  回復  更多評論
      
    <2007年7月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

          生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
          我的作品:
          玩轉Axure RP  (2015年12月出版)
          

          Power Designer系統分析與建模實戰  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    關注blog

    積分與排名

    • 積分 - 2294312
    • 排名 - 3

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品免费无遮挡无码永久视频 | 亚洲色图综合在线| 亚洲综合在线一区二区三区 | 免费无遮挡无码永久视频| 色拍自拍亚洲综合图区| 成年女人免费视频播放77777 | 国产免费一区二区三区免费视频| 亚洲成熟xxxxx电影| 女性自慰aⅴ片高清免费| 精品久久久久久亚洲精品| 国产极品粉嫩泬免费观看| 91免费福利视频| 亚洲VA成无码人在线观看天堂| 中文字幕免费在线看线人动作大片 | 猫咪免费观看人成网站在线| 久久精品国产亚洲av四虎| 精品久久免费视频| 自拍偷自拍亚洲精品播放| 亚洲Av无码乱码在线观看性色| 三年片在线观看免费观看大全一| 国产精品亚洲专区无码唯爱网| 亚洲精品福利视频| mm1313亚洲精品无码又大又粗| CAOPORM国产精品视频免费| 亚洲免费黄色网址| 亚洲区小说区图片区QVOD| 日韩特黄特色大片免费视频| 女人裸身j部免费视频无遮挡| 亚洲春色在线观看| 午夜无遮挡羞羞漫画免费| 久久青草精品38国产免费| 免费播放国产性色生活片| 在线综合亚洲中文精品| 亚洲AV成人片色在线观看高潮| mm1313亚洲精品国产| 妞干网免费视频在线观看| 在线人成精品免费视频| 中出五十路免费视频| 免费一级毛suv好看的国产网站 | 3344在线看片免费| 免费一级特黄特色大片|