關於springMVC中的session,有2種使用方法,第一種是直接傳遞httpsession,第二種是使用@SessionAttributes("userId") 注解
這裡附帶一個帖子,別人寫的特別好,是我看過的覺得最好的:http://www.cnblogs.com/waytofall/p/3460533.html
他裡面詳細的解析了這個注解的作用,httpsession的就不多說了,這裡主要解釋這個注解的原理
按照原文的解釋,也試了原文的例子,確實效果是那樣
也就是說這個注解會在把model中對應的的屬性名自動保存在session中
而且,下次的請求到別的業務類時,如果這個業務類也標記了這個session注解,他會自動去找session中這個屬性名並且填充到model對象中去
可以在地址中的例子的基礎上添加一個業務類,嘗試著不標記這個注解能不能拿到,和標記了之後在model中就可以拿到了
關於清除的,就只能從httpsession對象的remove的方法去清除了
model以下時個人看法和理解
model的作用跟request的setAttribute(arg0, arg1) 是一樣的,都是把值或是對象進行一個保存,然後可以在視圖上進行取值,同樣都可以使用ognl表達式取值
那問題來了,為什麼springmvc框架要使用model這個對象呢?
我個人的理解就是
request他只是一個請求,他的作用就是從客戶端發起一個請求,並且攜帶客戶端發起的這個請求所帶的參數,在業務層中進行參數的獲取並且做出相對應的處理,到這裡這個request請求對象的工作就應該結束了,剩下的就是客戶端對這個請求和參數做出處理結果並且生成響應response返回客戶端。
所以不應該用request進行存值,來達到模型層和視圖層的一個連接,所以才使用model或是modelandview這個專門的對象來進行模型層的存在和視圖層的取值
model會在模型層進行存值,在視圖層中,他會去檢查model對象中是否用這個屬性,有他就會渲染出來,request請求結束後就會自動清除model的數據
以上是個人對model和request的理解,快1點了,收拾收拾睡覺了