struts2.3.4 Action傳遞參數

Struts2中Action接收參數的方法主要有以下三種:

1.使用Action的屬性接收參數 :
    a.定義:在Action類中定義屬性,創建get和set方法; 
    b.接收:通過屬性接收參數,如:userName(可以定義多個屬性); 
    c.發送:使用屬性名傳遞參數,如:user1!add?userName=jim;

2.使用DomainModel接收參數:
    a.定義:定義Model類,在Action中定義Model類的對象(不需要new),創建該對象的get和set方法;
    b.接收:通過對象的屬性接收參數,如:user.getUserName();
    c.發送:使用對象的屬性傳遞參數,如:user2!add?user.userName=mike;
3.使用ModelDriven接收參數(現在用的比較多的方式):
    a.定義:Action實現ModelDriven泛型接口,定義Model類的對象(必須new),通過getModel方法返回該對象;
    b.接收:通過對象的屬性接收參數,如:user.getUserName();
    c.發送:直接使用屬性名傳遞參數,如:user2!add?userName=tom

今天在寫東西時候發現在使用第一種方法的時候發送的是html中表單的數據信息,在action中只需要定義屬性和相應的get,set方法就行了。這讓我感到很詫異。查了post,和get的機理以後才發現。原來是這樣的。
1:get是從服務器上獲取數據,post是向服務器傳送數據。

2:get是把參數數據隊列加到提交表單action屬性所指的url種,值和表單內各個字段一一對應,在url中可以看到,post是通過http post機制,將表單內各個字段與其內容放在html header裏面傳送到action屬性所指的url地址中。用戶看不到和這個過程。

而參數傳遞的實質是什麼呢?爲什麼能夠傳遞過去呢,發現原來是使用了ognl表達式了。找了一點資料和大家分享一下:

因爲Struts2完成參數傳遞處理工作的基礎是OGNL和ValueStack。而在這個過程中,我也把Struts2所要做的工作大致歸納爲兩個方面:

1. 對OGNL操作進行封裝,完成OGNL表達式所表示的值到Java對象的值傳遞機制

2. 在參數傳遞的過程中,做恰當的類型轉化,保證頁面上的字符串能夠轉化成各式各樣的Java對象

具體ognl的詳細傳遞過程,我會在明天給大家分享!

發佈了18 篇原創文章 · 獲贊 2 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章