国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JBuilder2005 Servlet開發之程序改造

2019-11-17 06:13:20
字體:
來源:轉載
供稿:網友
原登錄模塊的不足

  在《JBuilder 2005實戰jsp開發》專題中,我們完全用JSP技術實現了一個用戶登錄模塊。
它提供了一個登錄的頁面,在用戶登錄成功后轉向歡迎頁面,而登錄失敗后轉向登錄失敗的頁面,并且為每個頁面提供了一個錯誤處理頁面,當功能頁面發生錯誤時,以一種友好的方式向用戶報告錯誤。但這個模塊還存在一些問題:

  問題一:沒有在每個JSP頁面檢驗用戶是否有登錄

  Web應用程序的JSP頁面幾乎都需要在驗證用戶的身份之后才可以訪問,也即必須保證JSP頁面處理請求之前用戶已經確實登錄系統了,否則應該拒絕響應并重定向到登錄頁面。不然假如一個非法的用戶直接通過URL訪問JSP頁面,就會產生系統安全性問題。

  我們舉一個例子:假如有一個用戶直接通過http://localhost:8080/webModule/welcome.jsp訪問welcome.jsp界面,我們必須先判定用戶有沒有登錄(通過查看session中是否有以"ses_userBean"命名的對象),假如已經登錄,打開welcome.jsp頁面,假如沒有登錄重定向login.jsp登錄頁面。

  提示:

  當然更正規的作法應該是通過web.xml配置文件的<security-constraint>等配置項按角色對Web資源的訪問權限進行配置,但這種方式確實是比較麻煩的。所以我們一般采用在每一個請求到達處理程序前判定用戶的登錄信息的方式處理頁面訪問權限的問題。 為了達到防止非法用戶訪問功能頁面的目的,你當然可以像勞模一樣在每一個需要保護的JSP頁面中添加一段如下的判定代碼加以解決:

1. <%
2. if(session.getAttribute("ses_userBean") == null)
3. {
4.  response. sendRedirect("/webModule/login.jsp");
5. }
6. %>
  但對于一個擁有成百上千個需保護JSP頁面的大型Web應用程序,在每一個頁面中添加這段相同的代碼,不但單調乏味,違反面向對象的宗旨,而且輕易出現漏網之魚。在本專題中,我們將通過一個Servlet過濾器輕松漂亮地完成這個任務。

  問題二:每次生成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的工程目錄下覆對應的目錄。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 綦江县| 襄城县| 泰安市| 许昌县| 南乐县| 鄂尔多斯市| 平远县| 大埔区| 新民市| 常德市| 靖西县| 翁源县| 广安市| 儋州市| 永胜县| 浙江省| 晋江市| 白沙| 洞头县| 定结县| 通化县| 白山市| 永修县| 仪陇县| 民乐县| 金湖县| 徐州市| 呼和浩特市| 大安市| 荣成市| 瓦房店市| 共和县| 竹山县| 常山县| 西畴县| 明光市| 广昌县| 吴川市| 宜兴市| 泰宁县| 扎兰屯市|