struts1 action新增註解

2021-09-01 17:42:45 字數 2290 閱讀 5091

最近因為需要,要求jsp頁面可以直接呼叫strus1.2中action的方法,首先google了一下,看到乙個struts1-annotation外掛程式可以達到需要,又抽時間研究了一下struts1.2的原始碼,自己實現了一種直接在方法上面加註解的方式,記錄如下

一、利用struts-annotation外掛程式的實現

,並引入專案

這個外掛程式可以將struts-config.xml中的action配置全部以註解的形式實現:

@strutsaction(name = "loginform", path = "/xflogin", cancellable = true, scope = "request")

public class loginaction extends dispatchaction

需要在struts-config.xml的標籤中新增標籤:

外掛程式具體如何使用,大家可以自己搜尋檢視用法,在此只研究方法的直接呼叫。該外掛程式本身已經實現了由前台直接呼叫後台方法,但是沒有放出來,需要進行小小的改造,具體操作如下

引數,並實現get/set方法。

2、在org.easy.struts.anno.strutsaction註解類中新增新的屬性 :string parameter() default "";

3、在org.easy.struts.action.strutsannotationsplugin類中(大概74行)仿照其它屬性的新增方式新增:

4、在action的類註解中新增parameter屬性,值為method:

@strutsaction(name = "loginform", path = "/xflogin",parameter="method",

cancellable = true, scope = "request")

public class loginaction extends dispatchaction

測試:jsp:

action,新增一方直接呼叫的方法:

注意:方法中必須包含這四個引數且順序固定,並且前台呼叫的方法和後台的方法名必須一樣。

該外掛程式對於只想直接從前台呼叫後台方法,並不想修改struts-config.xml配置檔案到後台註解的同學,並不十分方便,遂研究了一下struts1的action原始碼,發現可以通過改造requestprocessor類來實現。

二、自定義方法註解

1、新建乙個註解類,並新增乙個屬性,類名、屬性自定義

2、新建乙個控制器類,繼承自org.apache.struts.action.requestprocessor,並重寫方法

3、在struts-config.xml的標籤中新增指向自定義控制器類的標籤:

測試:jsp:

說明:1、前台呼叫的方法名只要等於後台註解方法名即可(@postmethod(invokemethod="testmethod")

3、我已經實現了直接返回string、jsonobect、jsonarray型別的資料,如果有需要,大家可以根據自己的需要,接著實現直接返回自己需要的型別:

結束

學習筆記 struts1中action的使用方法

1.完整的action name someform input somejsp.jsp 首先,actionservlet接收到請求後,取得action類例項,呼叫execute 方法 然後根據返回的actionforward在配置中找forward,forward到指定的uri或action。這樣做...

struts1 x的Action執行緒安全問題

最近在幾個專案發現了struts 1.x的乙個安全性問題是值得注意的。以前一直沒有在意。因為過去的模式是前台頁面資料通過actionform傳入,action中的excute方法接收,這個問題是不存在的。但是,如果在action 中直接定義例項變數,問題就很大了。原因其實也很簡單 為了確保執行緒安全...

Struts的action跳轉大全

struts的 action 跳轉 1 完整的action name someform input somejsp.jsp 首先,struts 的actionservlet 接收到乙個請求,然後根據 struts config.xml 的配置定位到相應的 對映 接下來如果 form 的範圍是 req...