一】設定快取檔案的有效日期
重點方法:
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 之前先執行的一段 請先明白過濾器是怎麼回事 以下就是使用裝飾設計模式解...