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

Struts 2 hello world (XML版本)

在這個例子中,我們將學習如何在Struts 2中創建一個Hello World例子。

使用以下庫或工具:

  • MyEclipse 10
  • Struts 2.1

整個工程結構如下圖所示:

Struts

1. 創建一個Web項目工程

啓動打開 MyEclipse,創建一個Web工程名稱爲:struts2-xml-demo,選擇 File -> New -> Web Project ,如下圖所示:

Struts

在這個項目上添加 struts2 的支持,右鍵點擊 struts2-xml-demo 工程,選擇 MyEclipse -> Add Struts Capabilities,在彈出的對話框中選擇 Strut 2.1,如下圖所示:

Struts

2. JSP視圖文件

這是一個JSP登錄頁面,它使用Struts2標籤來顯示用戶名,密碼輸入框和提交按鈕。

Fie : login.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

Struts 2 Hello World Example

<s:form action="Welcome">
    <s:textfield name="username" label="Username" />
    <s:password name="password" label="Password" />
    <s:submit />
</s:form>

文件: welcome_user.jsp – 一個JSP視圖用來頁面顯示歡迎信息給用戶。

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

Struts 2 Hello World 示例

<h2>
    Hello
    <s:property value="username" />
</h2>

對 Struts1 和 Struts2 有非常相似的UI標籤語法,只是在命名HTML元素,例如,術語有一點不同:

Struts 1

<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html:form action="Welcome">
<html:text property="username"/>

Struts 2

<%@ taglib prefix="s" uri="/struts-tags" %>
<s:form action="Welcome">
<s:textfield name="username" label="Username"/>

5. 動作,所有的業務邏輯放在這裏

一個簡單的 Struts2 的 Action 類,它裏面聲明的所有業務邏輯。

File : WelcomeUserAction.java

package com.yiibai.user.action;

/**
*
* @author yiibai.com
*
*/
public class WelcomeUserAction {

private String username;

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

// all struts logic here
public String execute() {

    return "SUCCESS";

}

}

在Struts2中,Action類實現任何接口或擴展任何類不是必需的,但它需要創建一個execute()方法來實現所有的業務邏輯,並返回一個字符串值,告訴用戶重定向到哪裏。

注意
您可能會看到一些用戶實現 com.opensymphony.xwork2.Action 類, 但它是完全可選的(不是必須的),因爲com.opensymphony.xwork2.Action只是提供一些方便的常量。

Struts1中的Action類需要擴展org.apache.struts.action.Action。 但是,Struts 2的Action類是可選的,但是仍然允許執行com.opensymphony.xwork2.Action的一些方便的常量,或者擴展com.opensymphony.xwork2.ActionSupport 對於一些常見的默認動作執行的功能。

5. Struts配置文件

Strut配置文件是用來連接所有的東西在一起。 XML文件名必須是 「struts.xml」。在這個實例中,它位於 

File : struts.xml






/login.jsp


/welcome_user.jsp


聲明包和包含動作類,動作類是不言自明的,但你仍可能會感興趣下面的新標籤:

1. package name=」user」
就在包名,並不真正去關心它。

2. namespace=」/User」
它用於匹配「/User」URL模式。

注意
實際上,Struts2的命名空間相當於Struts的1多個功能模塊

3. extends=」struts-default」
這意味着該包是擴展了struts-default 包組件和攔截器,這是在struts-default.xml中文件中聲明的,位於struts2-core.jar 文件的根目錄。

6. web.xml

配置Web應用程序部署描述符(web.xml)文件Struts2的集成到Web項目。

File web.xml





index.jsp


struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter



struts2
\
.action
*

7. 運行測試結果

在Struts2中,可以直接使用.action後綴訪問操作類。如下URL:

http://localhost:8080/struts2-xml-demo/User/Login.action

Struts

提交後到 http://localhost:8080/Struts2Example/User/Welcome.action 顯示如下:

Struts