域對象的實際應用
1、如何取得request域的值
轉發能夠取得request域的值
2、使用重定向是否可以取得request域的值
取不到,轉發是唯一能夠取得request域對象中值的方式
3、使用重定向是否可以取得request/session域的值
● request
不能,重定向是兩次請求,兩次響應。
第一次請求創建的request對象中存的值,在第一次響應的時候,值會隨著request對象的銷毀而銷毀。
在第二次發出請求的時候,是新建一個request對象.里面是沒有值的。
● session
能夠取得session域的值
重定向后,session沒有手動銷毀,也沒有超時,我們也沒有關瀏覽器(JSESSIONID),所以我們是維持著有效的會話.存值的session并沒有銷毀,作為有效的會話,我們是可以從他身上取值的
4、系統登錄操作后,用戶名應保存在哪個域
在實際項目開發中,我們使用session域來保存用戶名使得其他的每一個頁面都能夠取到我們的用戶名并顯示出來。
5、 服務器緩存(cache),應該使用哪個域來操作
使用上下文域來操作
使用服務器緩存的目的是使得我們每一次在取數據的過程中,不用每一次都去連接數據庫,從數據庫中取數據,我們直接從緩存中讀取數據是最方便最快的。
需求:現在有一張表單,表單下拉框中的數據是活的, 這組數據不經常發生變化(數據更新頻率較低),我們應該使用哪種方式來對這些數據做顯示的操作。
我們應該使用服務器緩存(cache)(將數據從表中取出存放到上下文域中)
以下數據從city表中而來
<form>
城市:
<select>
<option>-- 請選擇 --</option>
<option>北京</option>
<option>上海</option>
<option>廣州</option>
<option>深圳</option>
</select>
</form>
每一次都從數據表中取值,非常的麻煩,而且耗費時間,所以我們的這張表單的使用效率不高。
我們可以這樣來做,將city表中所有的城市查詢出來,存放到服務器緩存中(將city表中取出的數據存放到上下文域).那么在我們每一次使用以上fomr表單的時候.直接從服務器緩存中取值就可以了(從上下文域對象中取值)
以上服務器緩存的使用,僅僅針對表中的數據不經常做更新的情況下才能夠有效的時候。
在我們的實際項目開發中,域對象會大量的用到,根據不同的需求,我們使用不同的域對象來做存取值的操作,但是有一個使用原則,能用小的域對象,就不用大的域對象。
為什么優先使用小的域?
較小的域,域對象的銷毀周期比較短,所以在里面存的值安全性會得到保障.使用小的域,不耗費服務區。