首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JBuilder 2005 Servlet 實戰: 實現啟動時自動快取用戶資料

     編輯:Java 相關知識

Servlet 可透過 web.xml 的 <load-on-startup> 在 Web 容器啟動時自動初始化,適合載入不常變動的字典表、設定檔等資料到記憶體快取。本文示範建立 UserCacheServlet,容器啟動時預載用戶 ID/名稱,手動呼叫可刷新快取。

建立 Servlet 步驟

  1. File → New → Web → Standard Servlet
  2. Class name: UserCacheServlet,Package: bookstore.servlet
  3. 勾選 doGet()(預設),Next 跳過第 3 步
  4. URL pattern: /usercacheservlet,Finish

關鍵配置:web.xml

雙擊專案節點開啟 Web Module DD 編輯器,展開 Servlets → usercacheservlet,設定 Load on startup = 2(順序 1 留給系統基礎 Servlet)。

生成的 web.xml 片段:

<servlet>
  <servlet-name>usercacheservlet</servlet-name>
  <servlet-class>bookstore.servlet.UserCacheServlet</servlet-class>
  <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>usercacheservlet</servlet-name>
  <url-pattern>/usercacheservlet</url-pattern>
</servlet-mapping>

注意:刪除 Servlet 類別時,web.xml 部署描述不會自動刪除,需手動移除。

核心程式碼

UserCacheServlet.java

public class UserCacheServlet extends HttpServlet {
    public void init() throws ServletException {
        UserList.fillUser();  // 容器啟動時自動執行
    }
    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
            throws ServletException, IOException {
        UserList.fillUser();  // 手動刷新快取
        resp.setContentType("text/html; charset=GBK");
        PrintWriter out = resp.getWriter();
        out.println("刷新成功!");
        out.close();
    }
}

UserList.java(快取邏輯)

public class UserList {
    private static Map userMap;  // userId → userName
    public static void fillUser() {
        if (userMap == null) userMap = new HashMap();
        else userMap.clear();
        // JDBC 查詢 T_USER,填入 userMap
    }
    public static String getUserListHTML() {
        // 從 userMap 產生 <option> 下拉選單 HTML
    }
}

運作流程

  1. Web 容器啟動 → 呼叫 init() → fillUser() 從 DB 載入快取
  2. login.jsp 產生下拉選單時,呼叫 getUserListHTML() 直接讀快取
  3. 用戶資料異動 → 瀏覽器呼叫 /usercacheservlet → doGet() 刷新快取

效能效益

避免每次登入頁面都查資料庫,減少 I/O、CPU、網路開銷。此模式適用於「寫少讀多、資料相對靜態」的字典表、代碼表、設定參數等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved