1. 程式人生 > >struts2 action接收請求參數和類型轉換

struts2 action接收請求參數和類型轉換

數據封裝 框架 一次 return 什麽 actions col ont turn

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 extends
ActionSupport 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接收請求參數和類型轉換