首頁 >Java >java教程 >使用映射到 /* 的全域前端控制器 Servlet 時如何提供靜態資源?

使用映射到 /* 的全域前端控制器 Servlet 時如何提供靜態資源?

Patricia Arquette
Patricia Arquette原創
2024-12-18 03:30:09673瀏覽

How to Serve Static Resources When Using a Global Front Controller Servlet Mapped to /*?

使用映射到/* 的全域前端控制器Servlet 存取靜態資源

在/* URL 模式上映射全域前端控制器Servlet,例如Spring MVC 調度程序提供處理傳入請求的集中控制。但是,此對應可能會幹擾對靜態資源(例如 CSS 檔案、JavaScript 腳本和圖片)的存取。

要解決此問題,需要採取多方面的方法:

  1. 為控制器Servlet 使用特定的URL 模式: 將控制器Servlet 對應到更Servlet 對應到更Servlet具體的URL 模式,例如/pages/*。這可確保 servlet 僅處理針對動態內容的請求。
  2. 將靜態內容放入專用資料夾: 將靜態資源組織在單獨的資料夾中,例如 /static。這將有助於將它們與其他請求類型區分開來。
  3. 實作處理靜態內容的過濾器:建立一個監聽 /* URL 模式的過濾器。該過濾器應該透明地將靜態內容的請求傳遞給預設的 servlet。對於用於動態處理的請求,過濾器應將請求分派到控制器 servlet。

在過濾器的 doFilter() 方法中,實作以下邏輯:

HttpServletRequest req = (HttpServletRequest) request;
String path = req.getRequestURI().substring(req.getContextPath().length());

if (path.startsWith("/static")) {
    chain.doFilter(request, response); // Goes to default servlet.
} else {
    request.getRequestDispatcher("/pages" + path).forward(request, response);
}

這個過濾器允許在不更改瀏覽器網址列的情況下提供靜態資源。此外,您可以透過使用篩選器中的初始化參數來自訂「/static」和「/pages」路徑。

以上是使用映射到 /* 的全域前端控制器 Servlet 時如何提供靜態資源?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn