1. 程式人生 > >struts2中怎麼把action中的值傳遞到jsp頁面

struts2中怎麼把action中的值傳遞到jsp頁面

對於如何把struts2的action中的值傳到jsp頁面中,主要的方法有2種:

  1. 使用轉發檢視利用request域中儲存所需的值

  2. 使用重定向時儲存資料進入session使其在jsp中可以獲得

下面,讓我們分先後的講解這2種方法!

一、轉發到jsp:

  1. 準備步驟:

    • 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表示式獲取即可!