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...