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.devMode 為 true,是因為我們正工作在程式開發環境中,我們需要看到一些有用的日誌資訊。然後,我們定義了一個名為 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() 方法返回的。