利用Javaweb應用中六種屬性範圍,來理解Servlet的併發問題

注:圖片如果損壞,點擊文章鏈接:https://www.toutiao.com/i6513748225550189060/

Web應用中有六種屬性範圍:

(1) 局部變量

(2) 實例變量

(3) 類變量

(4) 請求屬性

(5) 會話屬性

(6) 上下文屬性

局部變量:這個最好理解,是在學習java基礎的時候就知道的,這是方法體裏面申明的變量,這是頁面範圍的

這裏說一下這個頁面範圍:

我們之前寫的這個model2list.jsp,我們再頁面裏使用腳本元素聲明使用一個變量

利用Javaweb應用中六種屬性範圍,來理解Servlet的併發問題

在對應的Servlet中,我們可以看到我們的變量名。這是在方法體中,也是在頁面中的

利用Javaweb應用中六種屬性範圍,來理解Servlet的併發問題

實例變量,我們看它在哪裏

利用Javaweb應用中六種屬性範圍,來理解Servlet的併發問題

類變量,它又在哪裏呢

利用Javaweb應用中六種屬性範圍,來理解Servlet的併發問題

請求屬性,這個可以理解爲請求範圍屬性

指的是用戶請求整個過程的屬性,這個指什麼呢?

利用Javaweb應用中六種屬性範圍,來理解Servlet的併發問題

會話屬性,這是會話範圍的,對比理解頁面範圍,這個又指的什麼?

利用Javaweb應用中六種屬性範圍,來理解Servlet的併發問題

上下文屬性

這個指的就是servletContext,這個是應用範圍的,之前已經說了,servlet共享ServletContext

瞭解完這幾個屬性,我們來理解一句話:

多個同類線程運行,可共享同一個Servlet實例

這可以理解爲一個用戶用一個瀏覽器頁籤訪問一個Servlet,那麼Web容器,會給這個用戶這個Servlet,但是另外一個用戶訪問,也會給這個Servlet,就是兩個用戶共享一個對象

利用Javaweb應用中六種屬性範圍,來理解Servlet的併發問題

訪問的一個,那麼一個數據可能會被兩個人操作,如果用戶A訪問名字name,把它改爲A,下一個用戶拿到就是A了,這就是併發問題,併發就是一起運行,會出現數據衝突。

針對這種情況,我們理解上面六種屬性

利用Javaweb應用中六種屬性範圍,來理解Servlet的併發問題

其中會話屬性,因爲是會話範圍的,所以同一用戶,在同一個頁籤訪問,會影響Session,也會出現併發問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章