注:圖片如果損壞,點擊文章鏈接:https://www.toutiao.com/i6513748225550189060/
Web應用中有六種屬性範圍:
(1) 局部變量
(2) 實例變量
(3) 類變量
(4) 請求屬性
(5) 會話屬性
(6) 上下文屬性
局部變量:這個最好理解,是在學習java基礎的時候就知道的,這是方法體裏面申明的變量,這是頁面範圍的
這裏說一下這個頁面範圍:
我們之前寫的這個model2list.jsp,我們再頁面裏使用腳本元素聲明使用一個變量
在對應的Servlet中,我們可以看到我們的變量名。這是在方法體中,也是在頁面中的
實例變量,我們看它在哪裏
類變量,它又在哪裏呢
請求屬性,這個可以理解爲請求範圍屬性
指的是用戶請求整個過程的屬性,這個指什麼呢?
會話屬性,這是會話範圍的,對比理解頁面範圍,這個又指的什麼?
上下文屬性
這個指的就是servletContext,這個是應用範圍的,之前已經說了,servlet共享ServletContext
瞭解完這幾個屬性,我們來理解一句話:
多個同類線程運行,可共享同一個Servlet實例
這可以理解爲一個用戶用一個瀏覽器頁籤訪問一個Servlet,那麼Web容器,會給這個用戶這個Servlet,但是另外一個用戶訪問,也會給這個Servlet,就是兩個用戶共享一個對象
訪問的一個,那麼一個數據可能會被兩個人操作,如果用戶A訪問名字name,把它改爲A,下一個用戶拿到就是A了,這就是併發問題,併發就是一起運行,會出現數據衝突。
針對這種情況,我們理解上面六種屬性
其中會話屬性,因爲是會話範圍的,所以同一用戶,在同一個頁籤訪問,會影響Session,也會出現併發問題。