1. 程式人生 > >Struts2 Hello Word

Struts2 Hello Word

任何的 Struts 2 專案,我們將必須建立四個元件

序號 元件 & 描述
1 動作<br/>建立一個包含完整的業務邏輯和控制使用者,模型和檢視之間的互動的動作類。
2 攔截器<br/>如果需要,則建立攔截器,或者使用已存在的攔截器。這是控制器的部分。
3 檢視<br/>建立一個與使用者互動的 JSP,它接受輸入並且顯示最後的資訊。
4 配置檔案<br/>建立連線動作,檢視和控制器的配置檔案。這些檔案是 struts.xml,web.xml,struts.properties。

1. 建立專案

1.1 Eclipse 下建立專案

啟動你的 Eclipse,然後使用 File > New > Dynamic Web Project,並且輸入專案名稱為 HelloWorldStruts2  

2. 匯入Struts2核心jar包

包名 包說明
commons-fileupload-x.x.x.jar Struts檔案的上傳和下載
commons-io-x.x.x.jar 檔案讀取
commons-lang-x.x.x.jar 為java.lang包提供擴充套件
commons-logging-x.y.z.jar  
commons-logging-api-x.y.jar  
freemarker-x.x.x.jar FreeMarker是一個模板引擎,一個基於模板生成文字輸出的通用工具
ognl-x.x.x.jar 支援ognl表示式
javassist-x.x.x.jar 分析、編輯和建立JAVA位元組碼的類庫
struts2-core-x.x.x.jar Struts2的核心包
xwork-core-x.x.x.jar xwork的核心包
asm-*.jar 類似javassits
log4j-1.2.17.jar 日誌類庫

3. 在web.xml配置Strust2核心控制器filter

下一步是建立一個** web.xml** 檔案,它是一個任何對 Struts 2 請求的入口點。Struts2 應用程式的入口點將是一個在部署描述符(web.xml)中定義的過濾器。因此,我們將在 web.xml 中定義一個 oforg.apache.struts2.dispatcher.FilterDispatcher 類。 web.xml 檔案需要在 WebContent的WEB-INF 資料夾下建立。當你建立專案時,Eclipse 已經建立了初始的 web.xml 檔案。所以,我們只需要修改它,如下所示:

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

4. 建立struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
​
</struts>

5. 編寫控制器Action

Action 類是 Struts 2 應用程式的關鍵,並且我們在 action 類中實現大部分的業務邏輯。所以讓我們在 Java Resources > src 下的包名 com.javaee.struts2.action 中建立一個java 檔案 HelloWorldAction.java ==Action 類的要求==

  • 方法是public的

  • 返回值為String型別

public class HelloWorldAction{
   private String msg;
   
    public String execute() throws Exception {
        msg = "Hello Word Strust2 !!!";
        return "success";
    }
    public String getMsg() {
      return name;
    }
    public void setMsg(String name) {
      this.name = name;
    }
}

當用戶點選一個 URL 時,Action 類響應使用者動作。執行一個或多個 Action 類中的方法並且返回一個字串結果。基於結果的值,將呈現一個指定的 JSP 頁面。

6. 在struts.xml配置檔案中註冊Action

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <!--
        package:包,用於對Action進行封裝
        name:包名,根元素下可以有多個包,彼此不能重名
        extends:繼承,用於指定繼承的包,相當於將繼承包下的配置資訊複製到當前包
        namespace:名稱空間,用於規定Action的訪問路徑,必須"/"開頭    -->
    <package name="HelloWord" namespace="/" extends="struts-default">
        <!--action:業務控制器,用於註冊業務控制器元件
            name:action名稱,用於規定Action的訪問路徑
            class:業務控制器元件,用於指定業務控制器對應的類
            method:方法,用於指定訪問當前action時要呼叫的方法
        -->
        <action name="hello" class="com.javaee.struts2.action.HelloAction" method="execute">
            <!--result:輸出元件,用於轉發、重定向、直接輸出
                name:名稱,一個action下可以有多個result,彼此不能重名
                預設值轉發,元素內設定轉發的頁面
            -->
            <result name="success">
                /hello.jsp
            </result>
        </action>
    </package>
</struts>

關於上述配置檔案有幾點需要注意。在這裡我們設定常量 struts.devModetrue,是因為我們正工作在程式開發環境中,我們需要看到一些有用的日誌資訊。然後,我們定義了一個名為 helloworld 的包。當你想要把你的動作分成一組時,建立一個包是有用的。在我們的例子中,我們命名我們的動作為 “hello”,它對應著 URL /hello.action 和通過 HelloWorldAction.class 進行備份。當 URL /hello.action 呼叫時,HelloWorldAction.class 的執行方法是執行的方法。如果執行方法的結果返回 “success”,然後我們把 HelloWorld.jsp 呈現給使用者。

7. 建立JSP頁面

我們需要一個 JSP 提交最後的資訊,當一個預定義的動作發生時,這個頁面會被 Struts 2 框架呼叫,這種對映將被定義在 struts.xml 檔案中。所以讓我們在 Eclipse 專案的 WebContent 資料夾中建立下面的 jsp 檔案 HelloWorld.jsp。為了做到這個,在專案資源管理器的 WebContent 資料夾上單擊右鍵,選擇 New >JSP File。

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
    ${msg }
    <hr />
    <s:property value="msg" />
</body>
</html>

標籤庫指令告訴 Servlet 容器這個頁面將使用 Struts 2 的標籤,而且這些標籤將在 s 之前。 s:property 標籤顯示動作類屬性 "msg> 的值,它是由 HelloWorldAction 類的 getMsg() 方法返回的。