簡體   English   中英

Servlet與過濾器

[英]Servlet vs Filter

ServletFilter有什么區別? 您建議用什么來授權頁面?

如果要根據特定條件過濾和/或修改請求,請使用Filter 當您想要控制,預處理和/或后處理請求時,請使用Servlet

Java EE教程提到了以下有關過濾器的內容:

過濾器是一個可以轉換請求或響應的標頭和內容(或兩者)的對象。 過濾器與Web組件的不同之處在於過濾器通常不會自行創建響應。 相反,過濾器提供可以“附加”到任何類型的Web資源的功能。 因此,過濾器不應該對作為過濾器的Web資源有任何依賴性; 這樣,它可以由多種類型的Web資源組成。

過濾器可以執行的主要任務如下:

  • 查詢請求並采取相應措施。
  • 阻止請求和響應對進一步傳遞。
  • 修改請求標頭和數據。 您可以通過提供請求的自定義版本來完成此操作。
  • 修改響應標頭和數據。 您可以通過提供自定義版本的響應來完成此操作。
  • 與外部資源互動。

對於授權, Filter是最適合的。 以下是過濾器檢查登錄用戶請求的基本啟動示例:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
    if (((HttpServletRequest) request).getSession().getAttribute("user") == null) {
        // User is not logged in. Redirect to login page.
        ((HttpServletResponse) response).sendRedirect("login");
    } else {
        // User is logged in. Just continue with request.
        chain.doFilter(request, response);
    }
}

過濾器最適合授權。 這是因為它們可以配置為針對站點的所有頁面運行。 因此,您只需要一個過濾器來保護您的所有頁面。

使用過濾器我們可以提高servlet性能 - 當請求到來時我們可以根據請求執行預處理,如果請求滿足,那么我們可以轉發到servlet,否則給客戶端提供消息,在請求中提供適當的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM