1. 程式人生 > >SpringMVC Controller函式引數問題(就是作為方法的引數,以類名小寫開頭可以在JSP頁面中獲得該變數的資料 )

SpringMVC Controller函式引數問題(就是作為方法的引數,以類名小寫開頭可以在JSP頁面中獲得該變數的資料 )

今天在看別人寫的程式時發現了一個特殊的問題,就是在程式碼裡並沒有看到將物件寫入域的程式碼,但在JSP頁面上又能獲得物件的資料。

說明:專案用的是:SpringMVC + Spring + MyBatis

方法名為如下

Page物件就是一個普通的java類如下:


就是這樣但在,函式裡並沒有寫入域的程式碼,但JSP頁面能的到這個物件的資料,於是我做了一下的實驗。

測試開始:

建立配置好工程後先建立一個Page物件,如下:


在寫一個測試的Controller方法,如下:


然後是JSP, 如下:


執行結果如下:


這裡也是的到這樣的結果,在多次的測試後,我發現在JSP頁面把方法的引數類的名稱小寫就可已獲得變數得值,於是我改下的測試方法,如下:


JSP如下:


執行結果,如下:


從上面可以結果和JSP可以看出存在request域裡的變數名是引數類名的首字母小寫的名字,與變數名無關

再來一波測試

方法如下:


JSP如下:


執行結果,如下:


從上面的測試可已看出當引數型別有多個並有相同的型別時,在JSP頁面上獲取到的是最有一次賦值變數的值。

注意:引數都是存在request域裡,我寫的引數名是型別的首字母小寫,但其實這個變數名可以為任何名字,但在JSP頁面取得時候必須寫成你引數型別的類名(首字母小寫(⊙o⊙)哦)。

總結:

從上面可以看出(經過多次測試(⊙o⊙)哦!上面只是一個簡單的過程)當SpringMVC的Controller方法的引數類(型別不限),你向這個變數寫資料後,會存入request域裡,如果這個方法有多個相同的引數型別,那麼域裡存的是最有一次修改這個 型別的變數的值,在JSP頁面可以通過類名首字母小寫來獲得資料。