/**
* 目標方法的返回值可以是 modelandview 型別。
* 其中可以包含檢視和模型資訊
* springmvc 會把 modelandview 的 model 中資料放入到 request 域物件中.
* @return
*/("/testmodelandview"
)public modelandview testmodelandview()
test modelandview
time:$
前台
success page
time:fri jan 04 23:35:47 cst 2019
/**
* 目標方法可以新增 map 型別(實際上也可以是 model 型別或 modelmap 型別)的引數.
* @param map
* @return
*/("/testmap"
)public string testmap
(map
map)
test map
name:$
前台
success page
time:
name:[tom, jerry, mike]
後台
org.springframework.validation.support.bindingawaremodelmap
新增註解(在類上)
@sessionattributes(value=, types=)
2.新增方法
/**
* @sessionattributes 除了可以通過屬性名指定需要放到會話中的屬性外(實際上使用的是 value 屬性值),
* 還可以通過模型屬性的物件型別指定哪些模型屬性需要放到會話中(實際上使用的是 types 屬性值)
* * 注意: 該註解只能放在類的上面. 而不能修飾放方法.
*/("/testsessionattributes"
)public string testsessionattributes
(map
map)
test sessionattributes
request user: $
session user: $
request school: $
session school: $
request user: user [username=tom, password=123456, [email protected], age=15, address=null]
session user: user [username=tom, password=123456, [email protected], age=15, address=null]
request school: xq
session school: xq
@sessionattributes(value=, types=)
注意:sessionattributes註解引發的異常.有兩種解決方法:
public string testmodelattribute(@modelattribute(「abc」)user user)
新增 @modelattribute 註解修飾的方法
/**
* 1. 有 @modelattribute 標記的方法, 會在每個目標方法執行之前被 springmvc 呼叫!
* 2. @modelattribute 註解也可以來修飾目標方法 pojo 型別的入參, 其 value 屬性值有如下的作用:
* 1). springmvc 會使用 value 屬性值在 implicitmodel 中查詢對應的物件, 若存在則會直接傳入到目標方法的入參中.
* 2). springmvc 會一 value 為 key, pojo 型別的物件為 value, 存入到 request 中.
*/@modelattribute
public
void
getuser
(@requestparam
(value=
"id"
,required=
false
) integer id,
mapmap)}(
"/testmodelattribute"
)public string testmodelattribute
(user user)
action
="springmvc/testmodelattribute"
method
="post"
>
type
="hidden"
name
="id"
value
="1"
/>
username: type
="text"
name
="username"
value
="tom"
/>
>
email: type
="text"
name
="email"
value
/>
>
age: type
="text"
name
="age"
value
="12"
/>
>
type
="submit"
value
="submit"
/>
form
>
>
>
後台
//未加 @modelattribute 註解
修改: user [username=tom, password=null, email=tom@xq
.com, age=
13, address=null]
//新增 @modelattribute 註解
modelattribute method
從資料庫中獲取乙個物件: user [username=tom, password=
123456
, email=tom@atguigu
.com, age=
12, address=null]
修改: user [username=tom, password=
123456
, email=tom@xq
.com, age=
13, address=null]
執行流程:
執行 @modelattribute 註解修飾的方法: 從資料庫中取出物件, 把物件放入到了 map 中. 鍵為: user
springmvc 從 map 中取出 user 物件, 並把表單的請求引數賦給該 user 物件的對應屬性.
springmvc 把上述物件傳入目標方法的引數.
注意: 在 @modelattribute 修飾的方法中, 放入到 map 時的鍵需要和目標方法入參型別的第乙個字母小寫的字串一致!
springmvc 確定目標方法 pojo 型別入參的過程
確定乙個 key:
若目標方法的 pojo 型別的引數木有使用 @modelattribute 作為修飾, 則 key 為 pojo 類名第乙個字母的小寫
若使用了 @modelattribute 來修飾, 則 key 為 @modelattribute 註解的 value 屬性值.
在 implicitmodel 中查詢 key 對應的物件, 若存在, 則作為入參傳入
若在 @modelattribute 標記的方法中在 map 中儲存過, 且 key 和 1 確定的 key 一致, 則會獲取到.
若 implicitmodel 中不存在 key 對應的物件, 則檢查當前的 handler 是否使用 @sessionattributes 註解修飾,
若使用了該註解, 且 @sessionattributes 註解的 value 屬性值中包含了 key, 則會從 httpsession 中來獲取 key 所
對應的 value 值, 若存在則直接傳入到目標方法的入參中. 若不存在則將丟擲異常.
若 handler 沒有標識 @sessionattributes 註解或 @sessionattributes 註解的 value 值中不包含 key, 則
會通過反射來建立 pojo 型別的引數, 傳入為目標方法的引數
springmvc 會把 key 和 pojo 型別的物件儲存到 implicitmodel 中, 進而會儲存到 request 中.
SpringMVC的學習(四) 處理靜態資源
需要注意一種,dispatcherservlet攔截資源設定成了 是不會攔截jsp資源,但是它會攔截其他靜態資源,例如 html js 等等,那麼我們在使用jsp內部新增 靜態資源就無法成功,所以,我們需要單獨處理下靜態資源 處理方案 在springmvc的配置檔案中新增mvc命名空間下的標籤 修改...
揭秘四處碰壁小球之命運
有這麼乙個問題,初看起來人畜無害,但細思極恐,和大家分享。將小球的速度分解為沿x軸的v x和沿y軸的v y。因正方形邊長等於1,不妨令v x eb a,v y fb b。小球可以從e左側或者右側返回。從e左側返回時,小球沿兩軸走過的路程都是偶數。寫成方程就是 frac frac,m,n in mat...
Spring MVC學習筆記(四)
pointcut execution concert.performance.perform 定義命名的切點,為 pointcut註解設定的值是乙個切點表示式,通過在performance方法上新增 pointcut註解,我們實際上擴充套件了切點表示式語言,這樣就可以在任何的切點表達中使用perfo...