對於如何把struts2的action中的值傳到jsp頁面中,主要的方法有2種:
-
使用轉發視圖利用request域中儲存所需的值
-
使用重定向時存儲數據進入session使其在jsp中可以獲得
下面,讓我們分先后的講解這2種方法!
一、轉發到jsp:
-
准備步驟:
-
jsp頁面隨時准備使用el表達式獲取request中的值,
-
action中的值分2種,一種是在方法中誕生的,作用域也是方法內;一種是定義為類成員(並帶有get,set或者為public),此種方式只需賦值。
2.操作流程:
-
對於action的類屬性,直接為其賦值(例如 message="Test";),然后在jsp頁面中使用el表達式取出這個值(${message },直接以類屬性名稱取值即可,el默認的取值域就是request,struts2會將action的所有帶有get,set(這兩個方法必須同時有)的屬性自動的放入request域中【當然你也可以使用struts的標簽庫,不推薦】)
-
-
- 對於action中方法中產生的數據,又不想為其在action類中定義對應的成員,我們可以手動的將其存放進入request域中,在struts2中,有2種方式可以將數據存入request中。
-
(1)一種是通過ActionContext.getContext().put("message",message);直接放入將數據request域中,不獲取request本身,獲取其
中的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表達式獲取即可!