struts2中怎麼把action中的值傳遞到jsp頁面
對於如何把struts2的action中的值傳到jsp頁面中,主要的方法有2種:
-
使用轉發檢視利用request域中儲存所需的值
-
使用重定向時儲存資料進入session使其在jsp中可以獲得
下面,讓我們分先後的講解這2種方法!
一、轉發到jsp:
-
準備步驟:
-
-
jsp頁面隨時準備使用el表示式獲取request中的值,
-
action中的值分2種,一種是在方法中誕生的,作用域也是方法內;一種是定義為類成員(並帶有get,set或者為public),此種方式只需賦值。
-
2.操作流程:
-
-
-
對於action的類屬性,直接為其賦值(例如 message="Test";),然後在jsp頁面中使用
-
-
-
-
- 對於action中方法中產生的資料,又不想為其在action類中定義對應的成員,我們可以手動的將其存放進入request域中,在struts2中,有2種方式可以將資料存入request中。
-
(1)一種是通過ActionContext.getContext().put("message",message);
中的Map;
(2)另一種是使用ServletActionContext.getRequest().setAttribute("message",message);直接取得request物件,再使用
request物件的方法setAttribute()方法存入資料!將資料存入request中後,jsp中取值並無差別(同上)!
二、重定向到jsp:
準備步驟:同上!不同處是不管要存入的資料是不是類的屬性,我們都必須在方法中進行處理才能將資料存入session,而不能依靠struts2自動幫我們搞定!
操作流程:
不管資料是哪裡誕生的,得到資料後!比如為message;同上的第二種情況:也有2中方式將資料存入到session中:
(1)在方法中通過ActionContext().getContext().getSession().put("message",message);首先獲取session中的map,再使用Map介面的方法put()存入資料
(2)在方法中通過ServletActionContext().getRequest().getSession().setAttribute("message",message);首先獲取session物件,再使用session物件的setAttribute方法將資料存入session域。
最後,不管那種方式將資料存入到session中,我們都可在jsp頁面中獲取session中的值,例如${sessionScope.message }
三、總結:
不論如何,總是將資料存入tomcat提供的幾個存資料的域中(request,session,application),然後在頁面通過EL表示式獲取即可!