@requestparam註解用於將指定的請求引數賦值給方法中的形參。@requestparam註解可以使用的屬性如表所示。
屬性名稱
型別是否必填
描述name
string
否請求指定頭繫結的名稱
value
string
否name屬性的別名
required
string
否指定引數是否必須繫結
defaultvalue
string
否請求沒有傳遞而使用的預設值
@requestparam註解的使用例項如下:
@controller
(value =
"/user"
)public
class
usercontroller
}
當瀏覽器中輸入url請求http://localhost:8080/user/findbyid?id=1時,請求中的id=1會將值賦給findbyid方法中的id變數。@requestparam註解可以使用required屬性指定引數是否必須傳值。如果引數沒有接收到任何值,可以使用defaultvalue指定引數的預設值。具體**如下所示:
@controller
(value =
"/user"
)public
class
usercontroller
}
當瀏覽器中輸入url請求:http://localhost:8080/user/findbynameandpassword?name=ay時,name引數被賦值為ay,由於password沒傳任何值,預設值為123。
@pathvariable註解可以將url中動態引數繫結到控制器處理方法的入參中。@pathvariable註解只有乙個value屬性,型別為string,表示繫結的名稱,如果預設則預設繫結同名引數。具體示例如下所示:
@controller
(value =
"/user"
)public
class
usercontroller
/pets/"
)public string findpet
(@pathvariable long ownerid,
@pathvariablee long petid)
}
當在瀏覽器中輸入請求url:http://localhost:8080/owners/123/pets/456時,則自動將類上的動態引數和方法上的動態引數的值繫結到@pathvariable註解的同名引數上,即ownerid=123,petid=456。
@requestheader註解可以將請求的頭資訊資料對映到處理的方法引數上,@requestheader註解的屬性如下圖示:
下面通過@requestheader註解獲取accept-encoding和keep-alive資訊,具體示例如下所示:
@cookievalue註解用於將請求的cookie資訊對映到處理的方法引數上,@cookievalue註解的屬性如下圖所示:
@cookievalue註解如何使用,具體示例如下所示:
@controller
(value =
"/user"
)public
class
usercontroller
}
當在瀏覽器中輸入請求url:http://localhost:8080/user/cookievalue時,則自動將jsessionid設定到cookie引數上。
@modelattribute註解主要是將請求引數繫結到model物件上。@modelattribute註解只有乙個value屬性,型別為string,表示繫結的屬性名稱。當controller類中有任意乙個方法被@modelattribute註解標記,頁面請求只要進入這個控制器,不管請求哪個方法,均會限制性@modelattribute標記的方法,所以可用@modelattribute註解的方法做一些初始化操作。當同乙個controller類中有多個方法被@modelattribute註解標記,所有被@modelattribute標記的方法均會被執行,按先後順序執行,然後再進入請求的方法。具體示例**如下所示:
@controller
(value =
"/user"
)public
class
usercontroller
@modelattribute
public
void
init2()
("findbyid/"
)public string findbyid
(@pathvariable string id)
@modelattribute
public
void
init3()
}
當在瀏覽器輸入訪問url:http://localhost:8080/user/findbyid/1時,便可在控制台看到列印訊息:
init ...
init 02..
.init 03..
.
@modelattribute註解有很多額外使用方式,下面逐一介紹。
@modelattribute方法無返回值的情況(p130)
@controller
(value =
"/user"
)public
class
usercontroller
@modelattribute
public
void
init2()
("/findbyid/"
)public string findbyid
(@pathvariable string id)
@modelattribute
public
void
init3()
}
@modelattribute方法無返回值情況
@controller
(value =
'/user'
)public
class
usercontroller
("/hello"
)public string hello()
}
表示被註解的方法的返回值或者是被註解的引數作為model的屬性加入到model中,spring框架會將model傳遞給前端。model的生命週期只存在於http請求的處理過層中。
想讓引數在多個請求間共享,那麼需要用到@sessionattributes註解。
httpsession物件會將@sessionattributes註解的屬性寫入到新的model中,所以可以通過modelmap獲取的user物件列印資訊。
@controller
@sessionattributes
("user")(
"/user"
)public
class
usercontroller
("hello"
)public string hello
(@sessionattribute user user)
}
如果想刪除httpsession物件中共享的屬性,可以通過sessionstatus.setcomplete(),這句只會刪除通過@sessionattribute儲存到httpsession中的屬性。具體如下所示:
("redirect"
)public string redirecttest
(model model, sessionstatus sessionstatus)
還可以設定多個物件到httpsession中,具體**如下:
@sessionattributes
(types =
, value =
)
type屬性用來指定放入httpsession當中的物件型別。
@controller
("/user"
)public
class
usercontroller
}
在瀏覽器中輸入訪問路徑,方法返回的不是檢視,而是把字串直接寫入http響應正文中,返回給瀏覽器。
(2) 返回集合物件
把json字串寫入http響應正文中,返回給瀏覽器。
2. @requestbody註解
@requestbody註解用於讀取request請求的body部分資料,使用系統預設配置的httpmessageconverter進行解析,然後把相應的資料繫結到controller方法的引數上。
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 雙精度...