我正在嘗試為動態路徑創建 servlet URL 映射。在 servlet 中,我們可以在末尾使用不同的路徑進行動態 URL 映射。我的意思是,如果我們想這樣做,user/{id}我們可以做這件事,@WebServlet("/users/*")然后做一些字串操作來獲取 id。
如果我們想讓它更加動態,像這樣/user/{id}/posts/{id}/comments呢?我已經搜索了這個東西并最終Filters 用于攔截這些請求并手動對路徑字串進行一些操作以識別不同的路徑鍵和值。這是唯一可用的方法,還是有其他需要處理的方法?
uj5u.com熱心網友回復:
Servlet API 不支持wildcard *映射中間的 URL 模式。它只允許在映射的末尾使用通配符 *,就像這樣,/users/*或者在映射的開頭,像這樣*.suffix。
在 servlet 規范中,我們沒有路徑變數的概念。
對于 servlet 的觀點,URL 是:
scheme://host.domain/context_path/servlet_path/path_info?parameters
其中任何部分(從背景關系路徑開始可能為空)
因此,給定一個<url-pattern>/user/*</url-pattern>,您可以提取路徑資訊、空檢查和陣列索引越界檢查省略:
String pathInfo = request.getPathInfo(); // /{value}/test
String[] pathParts = pathInfo.split("/");
String part1 = pathParts[1]; // {value}
String part2 = pathParts[2]; // test
// ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/517195.html
