Struts2教學
Struts2快速入門
Struts2 MVC架構
Struts2 是什麼?
Struts2 環境配置
Struts2 體系結構
Struts2 Hello World 實例
Struts2 配置文件
Struts2 Action/動作
Struts2 攔截器
Struts2 結果和結果類型
Struts2 值棧/OGNL
Struts2 文件上傳
Struts2 MySQL數據庫訪問
Struts2 發送郵件Email
Struts2 驗證框架
Struts2 基於XML校驗
Struts2 本地化/國際化(i18n)
Struts2 類型轉換
Struts2 主題和模板
Struts2 異常處理
Struts2 註釋
Struts2 註釋類型
Struts2 控件標籤
Struts2 iterator標籤
Struts2 if/else標籤
Struts2 merge標籤
Struts2 append標籤
Struts2 generator標籤
Struts2 數據標籤
Struts2 action標籤
Struts2 include標籤
Struts2 bean 標籤
Struts2 date 標籤
Struts2 param 標籤
Struts2 property 標籤
Struts2 set 標籤
Struts2 text 標籤
Struts2 url標籤
Struts2 表單標籤
Struts2 Ajax 標籤
Struts2和Spring集成
Struts2和Tiles集成
Struts2和Hibernate集成
Struts 2 hello world (XML版本)
Struts2註解示例
Struts2 @ResultPath註釋示例
Struts2 include(包含)多個配置文件
Struts2命名空間配置和解釋
Struts2開發者模式
如何刪除Struts2動作的後綴擴展名
使用Struts2動作
Struts2的ActionError&ActionMessage示例
Struts2模型驅動實例
Struts2映射攔截動作
Struts2重寫攔截器參數
Struts2攔截器棧的例子
Struts2 execAndWait攔截器例子
Struts2 <s:textfield>文本示例
Struts2 <s:password>密碼示例
Struts2 <s:hidden>隱藏值例子
Struts2 <s:textarea>文本域實例
Struts2 <s:radio>單選按鈕例子
Struts2單選預選按鈕值
Struts2 <s:checkbox>複選框例子
Struts2設置多個複選框缺省值
Struts2 <s:checkboxlist>多個複選框例子
Struts2 <s:select>下拉框例子
Struts2自動選擇下拉框的值
Struts2 <s:combobox>組合框的例子
Struts2 <s:head>示例
Struts2文件上傳例子
Struts2上傳多個文件例子
Struts2 <s:doubleselect>示例
Struts2 <s:updownselect>示例
Struts2 <s:optiontransferselect>示例
Struts2 <sx:datetimepicker>示例
Struts2 <sx:autocompleter>自動提示例子
Struts2 autocompleter+JSON例子
Struts2 <s:iterator>迭代器標籤示例
Struts2 if,elseif,else標籤示例
struts2 <s:append>標籤示例
Struts2 <s:generator>標籤示例
Struts2 <s:merge>標籤示例
Struts2 <s:sort>標籤示例
Struts2 <s:subset>標籤示例
Struts2 <s:a>標籤示例
Struts2 <s:action>標籤示例
Struts2 <s:bean>標籤示例
Struts2 <s:date>標籤示例
Struts2 <s:debug>標籤示例
Struts2 <s:include>標籤示例
Struts2 <s:i18n>標籤示例
Struts2 <s:param>標籤示例
Struts2 <s:property>標籤實例
Struts2 <s:push>標籤示例
Struts2 <s:set>標籤示例
Struts2 <s:texttag>標籤示例
Struts2 <s:url>標籤示例
Struts2資源包使用示例
Struts2本地化和國際化
Struts2 key鍵屬性示例
Struts2中文本地化問題
如何配置Struts2全局資源包
Struts2+Spring集成實例
Struts2+Quartz2調度集成實例
Struts2+Hibernate使用Full Hibernate Plugin集成
Struts2+Hibernate集成實例
Struts2+Spring+Hibernate集成實例
Struts2+Log4j集成
Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什麼不同?
Struts2獲取HttpServletRequest實例
Struts2獲取HttpServletResponse實例
如何獲取ServletContext對象
Struts2配置Action類的靜態參數
Struts2下載文件實例
Struts2和JSON實例

Struts2 Hello World 實例

前面我們已經學習了Struts2 的架構,當點擊一個超鏈接或提交一個HTML表單在Struts2 的 Web應用程序,輸入所收集被髮送到一個Java類稱爲操作控制器。當動作執行後,結果選擇了一個資源來呈現響應。資源通常是一個JSP,但它也可以是一個PDF文件,Excel電子表格,或一個Java applet 窗口。

假設已經建立開發環境。現在讓我們繼續爲第一個 「Hello World」 的 struts2 項目構建。這個項目的目的是建立一個Web應用程序,它收集用戶的姓名,並顯示「Hello World」 用戶名。我們將創建任何Struts2項目的四個組成部分:

SN

組件和說明

1

Action
Create an action class which will contain complete business logic and conrol the interaction between the user, the model, and the view.

2

Interceptors
Create interceptors if required, or use existing interceptors. This is part of Controller.

3

View
Create a JSPs to interact with the user to take input and to present the final messages.

4

Configuration Files
Create configuration files to couple the Action, View and Controllers. These files are struts.xml, web.xml, struts.properties.

我打算使用Eclipse IDE,所以所有必需的組件將創建一個動態Web項目下。所以,讓我們開始創建動態Web項目。

創建動態Web項目:

啓動Eclipse,然後再 File > New > Dynamic Web Project 輸入工程名稱爲 HelloWorldStruts2 並設置屏幕中給出其餘的選項:

Hello

選擇在接下來的畫面中的所有默認選項和最後檢查 Generate Web.xml deployment descriptor 選項. 這將創建一個動態Web項目在Eclipse。現在去 Windows > Show View > Project Explorer, 會看到項目窗口的東西如下:

Hello

現在複製下列文件從struts 2 lib 文件夾 C:struts-2.2.3lib 到工程 WEB-INFlib 文件夾,要做到這一點,你可以簡單地將以下的所有文件拖放複製到WEB-INF lib文件夾。

  • commons-fileupload-x.y.z.jar

  • commons-io-x.y.z.jar

  • commons-language-x.y.jar

  • commons-logging-x.y.z.jar

  • commons-logging-api-x.y.jar

  • freemarker-x.y.z.jar

  • javassist-.xy.z.GA

  • ognl-x.y.z.jar

  • struts2-core-x.y.z.jar

  • xwork-core.x.y.z.jar

創建動作類:

Action類是 Struts2 應用程序的關鍵,我們實現的大部分動作類中的業務邏輯。因此,讓我們創建一個Java文件HelloWorldAction.java Java Resources > src 在下面給出的內容包名 com.yiibai.struts2 。

Action類響應用戶操作,當用戶點擊一個URL。 Action類中的方法中的一個或多個被執行並返回一個字符串結果。基於結果的值,一個特定的JSP頁面的呈現方式。

package com.yiibai.struts2; public class HelloWorldAction{ private String name; public String execute() throws Exception { return "success"; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

這是一個非常簡單的類,一個名爲「name」屬性。我們有標準的「name」屬性的getter和setter方法​​,並返回字符串「success」的執行方法。 

Struts2框架將創建一個對象HelloWorldAction類並調用執行方法在響應用戶的動作。把業務邏輯裏面的execute方法,最後返回的字符串常量。簡單地說爲每個網址,必須執行一個動作類,要麼就可以直接使用這個類的名稱作爲操作名,也可以使用struts.xml文件如下所示映射到一些其他的名字。

創建視圖

我們需要一個JSP提交最後的消息,這個頁面會被稱爲Struts2框架一個預定義的動作時,會發生這種映射將被定義在struts.xml文件。因此,讓我們一起創造在Eclipse項目在WebContent文件夾下面的jsp文件helloWorld.jsp。要做到這一點,右鍵單擊WebContent文件夾在項目資源管理器,選擇New >JSP File。 .

<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> Hello World Hello World, <s:property value="name"/>

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

創建主頁:

我們還需要在WebContent文件夾中創建的index.jsp。該文件將作爲初始動作URL,用戶可以在其中點擊告訴Struts 2框架調用 HelloWorldAction類定義的方法呈現 helloWorld.jsp 視圖。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> Hello World

Hello World From Struts2

<form action="hello"> <label for="name">Please enter your name
<input type="text" name="name"/> <input type="submit" value="Say Hello"/>

Hello 動作定義在上面的視圖文件將被映射到HelloWorldAction類和其執行方法使用struts.xml文件。當用戶點擊「提交」按鈕,將導致Struts2框架運行的執行方法定義的在其中,HelloWorldAction類根據返回值的方法,將相應的視圖選擇和渲染作爲響應。

配置文件

我們需要一個映射,以配合網址,HelloWorldAction類(模型),和的helloWorld.jsp的(視圖)。映射講述了Struts 2框架類將響應用戶的操作(URL),這個類的方法將被執行,查看渲染基於字符串結果,該方法返回。

因此,讓我們創建一個名爲struts.xml中。由於Struts2 要求struts.xml中存在類「文件夾中。因此,創建struts.xml文件的WebContent/ WEB-INF/classes文件夾下。 Eclipse不創建「classes」文件夾,所以需要自己做。要做到這一點,在項目資源管理器的WEB-INF文件夾上點擊右鍵並選擇New > Folder。struts.xml中應該像這樣:

<constant name="struts.devMode" value="true" /> <package name="helloworld" extends="struts-default"> <action name="hello" class="com.yiibai.struts2.HelloWorldAction" method="execute"> <result name="success">/HelloWorld.jsp

上面的配置文件的幾句話。在這裏,我們設置爲 true常量struts.devMode,因爲我們正在程序開發環境,我們需要看到一些有用的日誌消息。然後,我們定義了一個名爲HelloWorld 包。創建一個包是有用的,當想一起進行分組動作。在我們的例子中,我們將我們的行動命名爲「hello」,這是相應的URL /hello.action 和備份HelloWorldAction.class。執行HelloWorldAction.class方法是運行時URL /hello.action 調用的方法。如果執行方法的結果返回「success」,然後我們把用戶到 helloWorld.jsp。

下一步是創建一個web.xml文件,這是一個Struts2的任何請求的入口點。Struts2應用程序的入口點,將是一個部署描述符(web.xml)中定義的過濾器。因此,我們將定義在web.xml中條目oforg.apache.struts2.dispatcher.FilterDispatcher類。 web.xml文件中需要創建的WEB-INF文件夾下的WebContent下。已經建立的Eclipse的web.xml文件時爲創建項目。所以,讓我們只需要修改如下:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app\_2\_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app\_3\_0.xsd" id="WebApp_ID" version="3.0"> Struts 2 index.jsp struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*

我們已經指定index.jsp的歡迎文件。然後,我們已經配置Struts2的過濾器上運行的所有URL(即任何URL匹配模式/ *)

啓用詳細日誌:

可以啓用完整的日誌記錄功能,而Struts 2的WEB-INF/classes下文件夾創建logging.properties文件。保持在屬性文件中的以下兩行:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler

默認logging.properties指定ConsoleHandler的路由記錄到stdout,也是一個文件處理器。處理程序的日誌級別閾值可以設置使用 SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST 或 ALL.

就是這樣。我們已經準備好使用Struts 2框架來運行我們的Hello World應用程序。

執行應用程序

右鍵點擊項目名稱,並單擊 Export > WAR File文件創建一個WAR文件。然後部署在Tomcat 的 webapps目錄下這個WAR。最後,啓動Tomcat 服務器和嘗試訪問URL http://localhost:8080/HelloWorldStruts2/index.jsp。這會給出以下畫面:

Hello

輸入一個值「Struts2」,並提交頁面。應該看到頁面如下:

Hello

注意,可以定義索引struts.xml文件中的動作,在這種情況下,可以調用索引頁http://localhost:8080/HelloWorldStruts2/index.action。下面檢查如何定義指數作爲一個動作:

<constant name="struts.devMode" value="true" /> <package name="helloworld" extends="struts-default"> <action name="index"> <result >/index.jsp <action name="hello" class="com.yiibai.struts2.HelloWorldAction" method="execute"> <result name="success">/HelloWorld.jsp