問題二:每次生成login.jsp頁面用戶列表時都重新訪問數據庫
一般而言,Web應用程序的用戶是不常發生變化的,但login.jsp頁面的用戶列表卻在每次刷新時都從數據庫表中獲取用戶數據并生成下拉列表。假設我們這個Web應用系統的用戶數據(密碼除外)不發生變化,那么我們就可以在Web應用程序啟動時,就將用戶Id和用戶名下載緩存在Web應用服務器的內存中,這樣每次在生成登錄頁面的用戶名下拉框時,就不需要重新到數據庫表中獲取,而直接從Web應用服務器的內存中獲取,在性能和效率上都會有極大的提高。
當然,將用戶緩存在Web應用服務器中可能并不是很恰當,而諸如學歷、性別、民族等字典表更適合緩存。對于那些不會或很少發生更改的數據、不應該每次都從數據庫中獲取,因為訪問數據庫的操作是高代價的操作,需要較多的I/O操作,CPU時間和網絡通訊,在可能的情況下,應該盡量減少訪問數據庫的次數,這也是值對象設計模式的精髓所在。這里我們對用戶數據進行緩存只是為了描述一種提高性能的解決思路。
本專題中,我們通過一個自動啟動的Servlet改造生成用戶列表的功能:在Web應用程序啟動時,就通過這個Servlet將用戶Id和用戶名緩存到Web應用服務器中,生成下拉框的用戶數據直接從緩存中讀取。
新增的若干功能點
此外,我們還利用Servlet技術向原應用程序中加入兩個新的功能作為系統日志模塊:
功能一:添加一個Web容器的監聽器的Servlet
在本專題中,我們將創建一個Servlet監聽器,監聽Web容器啟動和關閉事件,在事件處理方法中記錄系統啟動和關閉系統事件的日志,日志以Excel文件格式保存。
功能二:通過一個Servlet下載文件
Servlet通過設置輸出文件頭參數向客戶端返回各種類型的響應,如Html、XML、WML等文本格式或聲音、圖像、Excel文件等二進制流格式。此外,還可以通過設置輸出文件頭參數使Servlet生成一個用于下載的文件。我們將通過一個Servlet下載Web應用程序的系統日志。
事前預備
通過File->New PRoject...新創建一個名為bookStore的工程,并在工程下創建名為webModule的Web模塊,將原《JBuilder 2005實戰JSP開發》專題的舊的bookStore工程源碼拷貝到新的bookStore的工程目錄下覆對應的目錄。
新聞熱點
疑難解答