6 3Action的呼叫與屬性

2021-08-31 10:29:44 字數 3612 閱讀 2112

action的呼叫與屬性

1、喚起action

route找到action

喚起action

-controlleractioninvoker

1)找到對應的action

2)找到當前請求發生的引數,匹配

3)呼叫action方法所有的filters

4)呼叫excuteresult

2、action匹配到url

從url中匹配action名稱

contextresult

定位?3、action選擇

反射方式找到類,找到方法

必須為public

標準:-不允許有nonactionattribute標記

-建構函式,屬性控制器,事件訪問器不能作為制定的action方法

-繼承自object的方法或繼承自controller的方法

4、actionnameattribute

非同步呼叫

指定別名 ,匹配標記的名字

[actionname("view")]

public actionresult viewsomething(string id)

指定別名,

呼叫時 actionname是view

系統關鍵字可以被別名過載

5、actionselectorattribute

public abstract class actionselectorattribute:attribute

實現兩個介面

6、模擬rest請求

對映引數

/******2/distance/0,0/1,2

來自以下三方面內容:

request form collection post

route data url位置拆分

request querystring collection 查詢字串集合

route data 比較好

引數255個是極限

7、呼叫action

使用非同步action

非同步controller

同步與非同步的比較

使用同步方式

1.操作短小迅捷

2.要求高可測試性

3.這個操作要求高cpu而不是高io

使用非同步操作

1.通過測試發現該操作是**應用效能瓶頸

2.對並行性有高要去

3.這個操作要求高io而不是高cpu

output cache解決非同步 並行性

例子使用同步方式:

public class portalcontroller: controller

}使用非同步

public class portalcontroller: asynccontroller;

newsservice.getnewsasync(city);

}public actionresultnewscompleted(newsmodelnews)

}這兩方法是特定的,不能寫為action名字

要用可以用attributename指定

8、並行操作的效能

同步public class portalcontroller: controller ;

return view(model);}非同步

public class portalcontroller: asynccontroller;

newsservice.getnewsasync(city);

weatherservice weatherservice= new weatherservice();

weatherservice.getweathercompleted+= (sender, e) => ;

weatherservice.getweatherasync(city);

sportsservice sportsservice= new sportsservice();

sportsservice.getscorescompleted+= (sender, e) => ;

sportsmodel sportsmodel= sportsservice.getscoresasync(city);

}public actionresultindexcompleted(newsmodelnews,weathermodelweather, sportsmodelsports) ;

return view(model);}}

三個時間是並行的,是最大時間不是三個時間的總和。

9、對非同步請求使用標籤

[authorize]

public void actionasync()

[authorize]//這裡晚了,所以錯誤

public actionresult actioncompleted()

超時驗證

[handleerror(exceptiontype=typeof(timeoutexception))]

[asynctimeout]

[noasynctimeout]//不限制超時 最好不要用

[asynctimeout(60000)]//45秒

public void actionasync()

[noasynctimeout]

pulic class portalcontroller:asynccontroller

兩種使用方法

附加說明:

[actionname(「reservationcompleted」)]

public actionresultsomeothername() {}

beginmethod()/endmethod()

public void newsasync(string city) );}, null);}

方法是非同步,但內部是同步

10、更新model層updatemodel

}post過來,redirecttoaction

不會重複重新整理重複提交。

11、驗證資料

public class product

[range(0, double.maxvalue,

errormessage=」the unit price must be larger than 0.00.」)]

public double unitprice

}model層

12、安全性

永遠不要不加處理的使用使用者的輸入

2011-4-19 23:10 danny

9 動態呼叫Action與Action中方法 二

其實有 8 動態呼叫action與action中方法 一 這第一種方法,這第二三種方法,就顯示的不重要了,只能動態呼叫action中方法 但這裡也記一下 第二種方法 method adduser method getuserlist user success.jsp user user.jsp us...

9 動態呼叫Action與Action中方法 二

其實有 8 動態呼叫action與action中方法 一 這第一種方法,這第二三種方法,就顯示的不重要了,只能動態呼叫action中方法 但這裡也記一下 第二種方法 method adduser method getuserlist user success.jsp user user.jsp us...

Action的動態呼叫方法

action執行的時候並不一定要執行execute方法,我們可以指定action執行哪個方法 1 方法一 通過methed屬性指定執行方法 可以在配置檔案中配置action的時候用method 來指定執行哪個方法 useradd class com.bjsxt.struts2.user.action...