1. 程式人生 > >Struts2註解配置之@Action(二)

Struts2註解配置之@Action(二)

當註解配置能夠簡化繁雜的xml,你是否想過也要使用註解?

最近對原有專案的框架使用的Struts2進行升級。很早以前就想嘗試註解的方式進行配置。但是由於專案穩定性和改配置方式可能帶來的問題一直沒有進行。但是這不妨礙我們程式設計師求知的心。哈哈~~~~。

言歸正傳,開始Struts2最常用的幾個註解的學習吧。

@Action
  • 使用@Action註解改變Convention plug約定的action與url之間的對映關係。

廢話少說程式碼說事兒。

package com.example.actions;

import org.apache.struts2.convention.annotation.Action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorld2 extends ActionSupport {


	@Action("/different/url")
	public String execute() {

		return SUCCESS;
	}
}

本例中在String execute()方法上使用了@Action("/different/url"),它改變了Action 與Action URL之間的對映關係,而這種改變並不是“OverWrite”而是在原來約定的基礎上增加了另外一種呼叫方式。

原本在沒有@Action("/different/url")註解的情況下,我們可以在瀏覽器中輸入:http://應用伺服器ip:埠/應用/hello-world2,即可訪問到com.example.actions.HelloWorld2,並最終顯示http://應用伺服器ip:埠/應用/hello-world2.jsp頁面。(當然這裡也可能是html等頁面)。

@Action("/different/url")註解的情況下

,除了上述的訪問方式外,我們還可以在瀏覽器中輸入:http://應用伺服器ip:埠/應用

/different/url,也可訪問到com.example.actions.HelloWorld2,但最終顯示http://應用伺服器ip:埠/應用/different/url.jsp頁面。

  • 使用@Action註解解決一個ACTION中的一個方法,響應多個不同的URL.
實際專案開發過程中有很大的機率碰到Action的處理相同,但是最終跳轉的頁面不同的情況。將@Actions和@Action組合起來用即可解決這樣的需求。

還是先上程式碼

package com.example.actions;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorld3 extends ActionSupport {

	private String message;

	public String getMessage() {
		return message;
	}

	@Actions( { @Action("/one/url"), @Action("/another/url") })
	public String execute() {
		message = "經過HelloWorld3的處理";
		return SUCCESS;
	}
}

本例中在String execute()方法上使用了@Actions和@Action註解。其中@Actions註解包含@Action("/one/url")和@Action("/another/url")註解。這樣的註解除了可以通過http://應用伺服器ip:埠/應用/hello-world3訪問com.example.actions.HelloWorld3,並最終顯示http://應用伺服器ip:埠/應用/hello-world3.jsp之外,還有兩種訪問方式:

即:

通過http://應用伺服器ip:埠/應用/one/url,訪問com.example.actions.HelloWorld3,並最終顯示http://應用伺服器ip:埠/應用/one/url.jsp

通過http://應用伺服器ip:埠/應用/another/url,訪問com.example.actions.HelloWorld3,並最終顯示http://應用伺服器ip:埠/應用/another/url.jsp
這樣就達到了一個ACTION中的一個方法,響應多個不同的URL的效果。

  • 使用@Action註解解決一個ACTION中的多個方法,其中每個方法響應不同的URL.
這是實際專案開發過程中最常用的。
再上一個程式碼示例:
package com.example.actions;

import org.apache.struts2.convention.annotation.Action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorld4 extends ActionSupport {

	private String message;

	public String getMessage() {
		return message;
	}

	@Action("/H4/url")
	public String execute() {
		message = "HelloWorld4 execute()!";
		return SUCCESS;

	}

	@Action("url")
	public String doSomething() {
		message = "HelloWorld4 doSomething()!";
		return SUCCESS;
	}
}

本例中在String execute()方法上使用了@Action("H4/url")註解。在StringdoSomething()方法中使用了@Action("url")。前者可以通過http://應用伺服器ip:埠/應用/H4/url訪問com.example.actions.HelloWorld4中的execute()方法,並最終顯示http://應用伺服器ip:埠/應用/H4/url.jsp。後者是通過http://應用伺服器ip:埠/應用/url來訪問com.example.actions.HelloWorld4中的doSomething()方法,並最終顯示http://應用伺服器ip:埠/應用/url.jsp

這個例子裡面需要注意的是@Action("/H4/url")和@Action("url")的不同,在“url”前並沒有“/”這意味著"url"是基於HelloWorld4的名稱空間的。假設HelloWorld4所在的包是com.example.actions.aaa,那麼,只有通過http://應用伺服器ip:埠/應用/aaa/url才可以訪問到com.example.actions.aaa.HelloWorld4,並最終顯示http://應用伺服器ip:埠/應用/aaa/url.jsp而“/H4/url”是基於“/”名稱空間的。

日後再繼續學習@Results和@Result。

相關推薦

Struts2註解配置@Action

當註解配置能夠簡化繁雜的xml,你是否想過也要使用註解? 最近對原有專案的框架使用的Struts2進行升級。很早以前就想嘗試註解的方式進行配置。但是由於專案穩定性和改配置方式可能帶來的問題一直沒有進行。但是這不妨礙我們程式設計師求知的心。哈哈~~~~。 言歸正傳,開始Str

mybatis源碼-解析配置文件解析的流程

close ria 操作 exp 記得 resource build reset sed 1. 簡介 在之前的文章《mybatis 初步使用(IDEA的Maven項目, 超詳細)》中, 講解了mybatis的初步使用, 並總結了以下mybatis的執行流程: 通過 Re

大資料Spark--- RDD,RDD變換,RDD的Action,解決spark的資料傾斜問題,spark整合hadoop的HA

一、Spark叢集執行 ------------------------------------------------------- 1.local //本地模式 2.standalone //獨立模式 3.yarn //yarn模式

Struts2 學習:2.2 完成簡單的統計使用者線上人數小功能

實時更新使用者線上人數(通過將使用者人數資料放入application的域屬性裡實現) 使用者登入後,顯示使用者名稱和當前線上人數+1 使用者登出後,當前線上人數-1 程式碼 1.前臺請求頁面

Struts2 學習:2.4 Struts2(2.5.14.1版本)中的萬用字元匹配問題

struts.xml 配置檔案中萬用字元的匹配 可以匹配action節點中的class屬性,method屬性,result子節點的name屬性,甚至是result子節點的路徑內容 因為2.5.x版本

深入學習mysql表的操作

uniq order fault change incr 相關 約束 設置 type 1、表:是數據庫中的存儲數據的基本單位,一個表包含若幹個字段和值 2、創建表:   CREATE TABLE 表名稱 (   字段名1  數據庫類型1  [約束條件1],   字段名2  

自動化運維saltstackstates介紹及使用

配置文件 如何 states master 根目錄 一、什麽是Salt States?Salt States是Salt模塊的擴展,主系統使用的狀態系統叫SLS系統,SLS代表Saltstack State,Salt是一些狀態文件,其中包含有關如何配置Salt子節點的信息,這些狀態被存放在一

Spring MVC 的 研發

eight 對象 files tin servlet映射 資源 研發 領域 延遲 二、web.xml的簡單配置介紹1 1、啟動Web項目時,容器回去讀web.xml配置文件裏的兩個節點<context-param>和<listener

Java面向對象編程繼承

抽象方法 oid 修飾 屬於 ... 方法的參數 要求 ring 覆蓋 在上一篇博客中,我們已經了解繼承的基本概念和語法,那麽今天我們就來聊一聊有關於繼承的其他東西。 讓我們來了解一下什麽是方法重載(overload)和方法覆蓋(override) 方法重載(overloa

《Java從入門到放棄》入門篇:Struts2的常用驗證方式

java struts action validate 數據驗證 前一回,我們講完了“直接在功能方法中寫驗證代碼”這種驗證方式,接下來,我們繼續搞定後續的三種方式。二、重寫validate方法(註意這個方法會驗證該類中所有的方法) 使用重寫驗證方法的好處就是,又可以少寫一句代碼了!!

SIPp常用腳本UAS

invite pcm option 響應 etime aud 服務器 esp contact 看名字就能猜出來,這是作為SIP消息服務端的存在,啟動uas,等著接受SIP消息並且給出響應。 一、uas.xml <?xml version="2.0" encoding

Java學習流程控制語句

循環 cas 學習之路 將不 乘法表 length 跳出循環 spa int if、if…else…語句 if (true) { System.out.println("為真時執行");

次元碼農的成長json到底有什麽用途

頁面 asc 語法 處理 交互 分隔 規則 stl 成長之路 寫的有問題請指出 一、什麽是json 1json指的是javaScript的表示方法 2JSON是輕量級的文本數據交換格式 3 Json是獨立語言 4 json具有自我描述性 更易理解 二、語法規則 1對

Hibernate框架一對多關系

true pre conn 關系 編寫 none isp exce dia 在下列案例中:   客戶是一;聯系人是多;客戶可以擁有多個聯系人;一個聯系人只有一個客戶   1、編寫實體類 package com.pojo; import java.util

Hibernate框架多對多多關系

-m let ble ssi gin rop assert on() odi 1、配置實體類 package cn.pojo; import java.util.HashSet; import java.util.Set; public class

基礎篇集合總結

線程不安全 emp abstract 和集 write next 不可變 叠代器 關系 1. Map集合和collection結合的區別 1》Collection一次存一個元素;Map一次存一對元素; 2》Collection是單列集合;Map是雙列集合; 3》Map中的存

JavaScript的進階函數簡介,變量、作用域和內存問題

ret 優化 person get 簡介 web瀏覽器 都是 add 是把 <h3>ECMAScript中函數不存在函數簽名的概念,沒有重載</h3><h3>無需指定返回值,可以在任何時候返回任何值。未指定返回值的函數,返回的是一個特殊

小白的linux學習

探索linux一、linux系統結構linux是一個倒樹結構linux中所有的東西都是文件這些文件都在系統頂級目錄“/” /就是根目錄/目錄以下為二級目錄這些目錄都是系統裝機時系統自動建立的二級目錄的作用/bin 二進制可執行文件也就是系統命令/sbin

java集合類源碼分析List

頻繁 null 並且 reel closed tco 默認 java集合 進行 這一節主要介紹List接口的幾個實現類的區別: 1.線程安全 Vector是線程安全的,而ArrayList和LinkedList是非線程安全的。從源碼中我們可知,Vector類中的方法大部分

(轉JavaWeb學習Servlet----Servlet的生命周期、繼承結構、修改Servlet模板

ext 核心 system 網頁 基本 麻煩 extends 用戶名 servlet對象 【聲明】 歡迎轉載,但請保留文章原始出處→_→ 文章來源:http://www.cnblogs.com/smyhvae/p/4140466.html 一、http協議回顧: 在上一