Servlet高階應用 Servlet與快取

2021-07-09 14:21:19 字數 1886 閱讀 8838

一】設定快取檔案的有效日期

重點方法:

httpservletrequest類:

1》string getrequesturi();//獲取客戶端位址列的路徑值

httpservletresponse類:

2》void setdateheader(string name, long endtime);

name:對應的瀏覽器型別。  ie瀏覽器為:expires

endtime:快取檔案失效的時間,單位為毫秒

code:

string uri = request.getrequesturi();

//如果是乙個html靜態資源

if(uri!=null && uri.endswith("html"))

}二】可以通過複寫getlastmodified方法來阻止每次重新整理都訪問服務端,來減輕服務端的壓力

原理:1》servlet物件來應答客戶端的請求的時候,首先會呼叫service()方法

2》檢視service()方法的原始碼,可以知道:

service()方法會呼叫getlastmodified()方法,

如果此方法的返回值 為-1:    呼叫doget()或dopost()方法,並傳送狀態碼200給客戶端。

方法原型:

返回值:

返回時間httpservletrequest物件的最後修訂時間,

如果時間是未知的,則此方法返回乙個負數(預設值)        

1》返回值為 -1:代表檔案最後一次修改的時間不確定

處理方式:由於不知道最後一次修改時間,所以一定會呼叫doget()或dopost()方法    ,來重新獲取資源

2》返回值 不等於 -1:代表檔案最後一次修改的時間

處理方式:拿檔案最後一次修改的時間和快取中的時間來進行對比,(此過程通過tomcat伺服器來實現)

如果檔案已經更新,需要呼叫doget()或dopost()方法,重新獲取資源(並傳送:202)

如果檔案版本一樣,會傳送304狀態碼,讓客戶端自己在快取檔案中找。

思路:所以我們可以通過資源物件的lastmodified()方法,獲取伺服器最後一次修改資源的時間。    

補充:servlet原始碼:

servlet

if(getlastmodified()>ie時間值)

else

}getlastmodified()

}code:

/*設定為*/

/*此**有問題*/

注意:1》關於快取的重新整理

對於瀏覽器的重新整理而言,當瀏覽器快取中有此資源,也會找服務端重新要資源;

而在回車訪問的情況下,才直接找快取,不會找服務端要。            

2》其實瀏覽器訪問的html靜態資源本質上是由乙個預設的servlet來幫你處理,**給客戶端的。

補充:servlet物件常見方法

1》獲得乙個servletconfig物件

servletconfig getservletconfig();

2》獲取乙個servletcontext物件

servletcontext getservletcontext();

Servlet中jdbc應用高階篇之二

servlet在伺服器的程序空間中駐留,可以方便而持久地維護資料庫連線。接下來,我們介紹乙個完整的連線池的實現。在實現中,有乙個連線池管理器管理連線池物件,其中每乙個連線池保持一組資料庫連線物件,這些物件可為任何servlet所使用。一 資料庫連線池類dbconnectionpool,提供如下的方法...

檔案上傳servlet應用

smartupload mysmartupload new smartupload mysmartupload.initialize servlet.getservletconfig request,response 設定上傳限制 1.限制每個上傳文件的最大長度。mysmartupload.setm...

Servlet 請求中文亂碼高階處理

在我之前的中文處理方式中是根據傳輸的本質對get和post方式進行不同處理,今天學到了乙個高階的處理方式,可以同時處理get和post方式 使用設計模式中的裝飾設計模式 加 過濾器 在這裡簡單說 過濾器 就是在執行servlet 之前先執行的一段 請先明白過濾器是怎麼回事 以下就是使用裝飾設計模式解...