struts2 action接收請求參數和類型轉換
1,action接收請求參數
- 在struts2中action是什麽?(struts2是一個mvc框架)
V:jsp
M:action
C:action StrutsPrepareAndExecuteFilter
- 在struts2中獲取請求參數:
a.屬性驅動
1.直接將action做一個model,就可以得到請求參數.
問題1:action封裝請求參數,會不會存在線程安全問題?
不會:因為每一次請求,都是一個新的action。
缺點:需要單獨定義javaBean,將action中屬性copy到javaBean中。
優點:簡單。
這種方式 ,底層是通過反射來實現的。
2.在action中聲明一個model。
private User user;提供get/set方法
在頁面上使用ognl來描述
<input type="text" name="user.username">
優點:簡單,解決了第一種封裝的問題
缺點:在頁面上使用了ognl表達式,頁面不通用了。
問題:這種方式,數據是怎樣封裝的?
是通過struts2中的interceptor進行了數據封裝.
1 <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
b.模型驅動(在開發中應用比較多)
步驟:
1.讓action類實現ModelDriven
2.重寫getModel方法
3.在action中實現化一個model對象,讓getModel方法返回這個對象。
1 public class Login3Action extendsActionSupport implements ModelDriven<User> { 2 3 private User user = new User(); 4 5 public User getModel() { 6 return user; 7 } 8 }
優點:解決了屬性驅動存在的問題
缺點:一次只能封裝一個model對象.
struts2 有很多圍繞模型驅動的特性
* <interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>
struts2 action接收請求參數和類型轉換