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

Java Servlet 進階應用:SnoopServlet 完整請求資訊監控實作

     編輯:Java 程式設計入門

HttpServlet 繼承自 GenericServlet,是 Servlet 開發的核心基類。本文透過 SnoopServlet 範例,示範如何攔截並展示完整的 HTTP 請求資訊——包含初始化參數、Header、Cookie、Session、請求屬性等,是除錯與監控的利器。

SnoopServlet 核心功能

部署後訪問 https://localhost:8080/examples/servlet/SnoopServlet,將輸出純文字格式的完整請求報告,涵蓋:

  • Servlet 初始化參數 (getInitParameterNames)
  • Context 初始化參數與屬性 (ServletContext)
  • 請求屬性 (request.getAttributeNames)
  • 核心請求資訊:協定、Scheme、伺服器名稱/埠號、遠端 IP/主機名、編碼、Content-Length/Type、Locale、Response 緩衝區大小
  • 請求參數 (getParameterNames/getParameterValues)
  • 所有 HTTP Header (getHeaderNames)
  • Cookie 資訊 (getCookies)
  • 安全性相關:isSecure、認證類型、HTTP 方法、遠端用戶
  • URI 解析:getRequestURI、getContextPath、getServletPath、getPathInfo、getPathTranslated、getQueryString
  • Session 完整資訊:ID、建立/最後存取時間、最大閒置間隔、Session 屬性值

關鍵方法語義解析

方法回傳含義
getRequestURI()請求 URI(不含主機部份)
getPathInfo()Servlet 路徑後的額外路徑資訊
getPathTranslated()對應的伺服器端絕對檔案路徑
getContextPath()Web 應用程式的 Context Path
getServletPath()對應到此 Servlet 的路徑

程式碼架構重點

public class SnoopServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/plain"); // 純文字輸出,易讀易解析
        PrintWriter out = response.getWriter();

        // 1. 輸出各類資訊區塊,統一採用 Enumeration 迭代
        out.println("Servlet init parameters:");
        Enumeration e = getInitParameterNames();
        while (e.hasMoreElements()) { ... }

        // 2. Context 參數與屬性
        ServletContext context = getServletContext();
        // ... 類似迭代輸出

        // 3. 請求屬性、參數、Header、Cookie
        // ... 逐一迭代輸出

        // 4. 核心請求資訊(單值直接輸出)
        out.println("Protocol: " + request.getProtocol());
        // ...

        // 5. Session 資訊
        HttpSession session = request.getSession();
        out.println("Current Session Id: " + session.getId());
        // ... 輸出 Session 屬性
    }
}

部署與測試

  1. 編譯類別至 WEB-INF/servlets 目錄。
  2. 於 web.xml 註冊 Servlet 映射(或依伺服器預設規則)。
  3. 瀏覽器訪問對應 URL,即可獲得完整請求診斷報告。

SnoopServlet 是 Servlet 開發者的「聽診器」,快速診斷請求傳遞、Session 管理、參數解析等常見問題。

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