SpringMVC中的引數繫結總結

2022-06-16 13:24:14 字數 2364 閱讀 5000

眾所周知,springmvc是用來處理頁面的一些請求,然後將資料再通過檢視返回給使用者的,前面的幾篇博文中使用的都是靜態資料,為了能快速入門springmvc,在這一篇博文中,我將總結一下springmvc中如何接收前台頁面的引數,即springmvc中的引數繫結問題。

我們可以回憶一下,在struts2中,是通過在action中定義乙個成員變數來接收前台傳進來的引數,而在springmvc中,接收頁面提交的資料是通過方法形參來接收的。從客戶端請求的key/value資料,經過引數繫結,將key/value資料繫結到controller方法的形參上,然後就可以在controller中使用該引數了。來看一下這個過程:

springmvc中,有支援的預設型別的繫結。也就是說,直接在controller方法形參上定義預設型別的物件,就可以使用這些物件。

httpservletrequest物件

httpservletresponse物件

httpsession物件

model/modelmap物件

在引數繫結過程中,如果遇到上面型別就直接進行繫結。也就是說,我們可以在controller的方法的形參中直接定義上面這些型別的引數,springmvc會自動繫結。這裡要說明一下的就是model/modelmap物件,model是乙個介面,modelmap是乙個介面實現 ,作用是將model資料填充到request域,跟modelandview類似,關於它的使用,我在下面和簡單型別引數繫結一起說。

public string edititems(model model, integer id) throws exception

這是個很簡單的demo,從上面的**中可以看出model可以直接作為引數,springmvc缺省會繫結它,然後使用model將查詢到的資料放到request域中,這樣就可以在前台頁面取出該資料了。

再來總結下pojo型別的繫結,繼續上面的案例,當頁面展示了商品詳細資訊後,我做了修改,然後點選提交,後台應該將我提交的這些引數全部更新到資料庫的items表中,也就是說,我提交的這些引數要繫結到items物件或者其擴充套件物件中。先看一下items中都有哪些屬性:

//需要實現converter介面,這裡是將string型別轉換成date型別

public class customdateconverter implements converter catch (parseexception e)

//如果引數繫結失敗返回null

return null;

}}

定義好了轉換器後,需要在springmvc.xml中進行如下配置:

這個包裝型別pojo與上面普通的pojo有啥區別呢?包裝型別pojo指的是pojo中有另乙個也是pojo的屬性,即pojo套pojo,為什麼會設計這種pojo呢?在前面的博文中我也有提到,這種組合的設計方法對於後期程式的擴充套件很有用,比如複雜的查詢條件就需要包裝到這種包裝型別中。

在形參中新增httpservletrequest request引數,通過request接收查詢條件引數。

在形參中讓包裝型別的pojo接收查詢條件引數。

第一種方式就跟原始servlet差不多,這裡使用第二種方法,我們傳進來乙個包裝型別的pojo。看一下這個包裝型別的pojo:

陣列的繫結指的是前台傳來多個同一型別的資料,我們在controller中使用陣列形參來接收前台傳來的資料。還是以案例來驅動這部分內容,比如現在我們要批量刪除商品,那麼我們需要勾選好幾個商品,這些商品都有id號,在controller中,我們需要將這些id號全部獲取並放到乙個陣列中,然後再根據陣列中的id號挨個刪除資料庫中對應的項。那麼該如何繫結呢?其實也很簡單,如下:

通常在需要批量提交資料時,將提交的資料繫結到list中,比如:成績錄入(錄入多門課成績,批量提交),在這裡我們假設有需求:批量商品修改,在頁面輸入多個商品資訊,將多個商品資訊提交到controller方法中,即一次性更新多個商品資訊。

所以controller中應該有兩個方法,如下:

map的繫結其實和list的繫結是差不多的,首先也是在包裝的pojo中新新增乙個map型別的屬性,如(我隨便舉個例子,跟本例無關了)

public class queryvo 

關鍵是前台傳參的時候和list不太一樣,map是這樣傳的,比如:

學生資訊:td>

姓名:年齡:

.. .. ..

td>

tr>

我們可以看到,map的引數繫結傳來的是map中的key,然後value會自動繫結到map中的那個物件的屬性中。在controller中的方法裡,形參就直接使用queryvo接收即可,也很簡單。

spring MVC 引數繫結

spring mvc的引數可以繫結簡單型別 pojo型別和自定義型別。1 controller預設支援的引數型別 這些物件只要在controller形參中定義就可以使用。2 簡單引數型別 此種方法需要遵循的的原則是定義的形參要與請求中的引數名一致 如果想要讓形參的名與請求中攜帶的引數名不一致,就需要...

spring mvc引數繫結

controller public class hellocontroller 當請求的引數名稱和處理器形參名稱一致時會將請求引數與形參進行繫結。spring會自動將表單引數注入到方法引數,不需要做任何處理。從request獲取引數的方法可以進一步簡化 public modelandview dem...

SpringMvc 引數繫結

使用這種方式獲取引數,和我們使用servlet獲取引數就一樣了 當前請求的引數名稱和處理器 控制器 形式 名字一致時,會將請求的引數與形參進行繫結 引數型別 推薦使用包裝型別 因為基礎的資料型別它不支援null 整型 integer int 字串 string 單精度 float float 雙精度...