Config、context、Servlet線程和會 話 跟 蹤

 

一,ServletConfig和ServletContext

•         ServletConfig

–       如何給Servlet類配置初始化參數

–       如何在Servlet類中獲取它的初始化參數值

•         ServletContext

–       如何配置Web應用上下文初始化參數

–       如何在Servlet類中獲取Web應用上下文的初始化參數值

•         ServletContext的其他用途

–       public void setAttribute(String name, Object obj):根據指定名name把對象obj存放到應用上下文範圍中。

–       public Object getAttribute(String name):根據指定名從應用上下文範圍中獲取到該屬性對象。

–       public void removeAttribut(String name):根據指定名從應用上下文範圍中移除該屬性。

•         ServletConfig和ServletContext的區別

–       整個Web應用只有一個ServletContext,在部署Web應用的時候,容器會建立這一個ServletContext對象,這個上下文對Web應用中的每個Servlet和JSP都可用。

–       Web應用中的各個Servlet都有自己的ServletConfig,它只對當前Servlet有效。

二,Servlet的線程安全問題

•         使用synchronized

–       使用synchronized關鍵字同步操作成員變量和共享數據的代碼,就可以防止可能出現的線程安全問題。

•         儘量少使用成員變量和共享數據

–       ServletContext是可以多線程同時讀/寫成員變量和共享數據的,線程是不安全的。

–       ServletRequest對象在service方法的範圍內是有效的,不要試圖在service方法結束後仍然保存請求對象的引用。

–       Servlet本身就是多線程的,在Servlet中再創建線程,將導致執行情況複雜化,出現多線程安全問題。

三,會 話 跟 蹤

•         HTTP是一種無狀態協議,每當用戶發出請求時,服務器就做出響應,客戶端與服務器之間的聯繫是離散的、非連續的。

•         當用戶在同一網站的多個頁面之間轉換時,根本無法知道是否是同一個客戶,會話跟蹤是一種靈活、輕便的機制,它使在頁面上的狀態編程變爲可能。當一個客戶在多個頁面間切換時,服務器會保存該用戶的信息。

•         Web應用中的會話是指一個客戶端瀏覽器與Web服務器之間連續發生的一系列請求和響應過程。

•         從客戶端打開瀏覽器並連接服務器開始,到客戶關閉瀏覽器離開這個服務器結束,被稱爲一個會話。

•         Web應用的會話狀態是指定Web服務器與瀏覽器在會話過程中產生的狀態信息。

•         藉助於會話狀態,Web服務器能夠把同一會話中的一系列的請求和響應過程關聯起來,使得它們之間可以互相依賴和傳遞信息。例如在購物過程中,購物結算時,必須知道用戶的登錄結果(登錄成功或失敗),產品訂購的結果(訂購了哪些產品,訂購了幾件)等,所以,在購物會話中,用戶的登錄賬戶信息和訂購的產品就是這個會話的狀態信息

•         幾乎所有的Web應用程序,客戶端瀏覽器與Web服務器的會話過程都是要有狀態的,即Web服務器程序在處理瀏覽器發出的請求時,能夠把它和用戶會話信息關聯起來。

•         HTTP協議是一種無狀態的協議,瀏覽器主動發出一個請求,Web服務器接收請求並返回一個響應,Web服務器並不能區分這個請求是從哪一個主機上的哪種瀏覽器發出的。Web服務器接收到一個客戶端瀏覽器的請求時,根本無法確定該瀏覽器先前的訪問請求信息。對於這種無狀態的會話過程,瀏覽器每一次請求都是完全孤立的,Web服務器端根本就不認爲同一個瀏覽器發出的請求之間有任何關聯。

•         由於HTTP協議本身不具有會話狀態,所以,要想在Web應用程序中維持會話狀態信息和實現有狀態的會話管理,必須採用一些專門的技術來進行解決。

•         要實現有狀態的會話,就需要在Web服務器程序和客戶端瀏覽器之間來回傳遞會話ID,以關聯同一客戶端瀏覽器向服務器發出的連續請求。實現在Web服務器程序和客戶端瀏覽器之間來回傳遞會話ID的技術被稱爲會話跟蹤技術。

•         會話跟蹤技術主要有兩種:

•         通過Cookie技術在請求消息首部中傳遞會話ID;

•         通過URL重寫,即在URL的末尾添加上這個會話ID

 

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