[英]how can i get the asked servlet in the current filter?
(對不起我的英語,我說法語)
在我正在編寫的過濾器中,我需要知道用戶詢問的 servlet 的名稱。 它將允許我檢查 servlet 是否與我的數據庫條目匹配。 事實上,我正在編寫一個限制過濾器。 這是它的工作原理:
我檢查數據庫中是否為當前用戶的訪問權限定義了條目 servletName-service。 如果是,則調用 servlet,否則重定向到連接頁面。
如何在過濾器中獲取當前 Servlet 對象或名稱?
使用 Eclipse 的調試工具,我注意到作為 Filter.doFilter 方法參數給出的 FilterChain 對象包含一個名為“userListe”的對象 servlet。 但是這個對象是私有的,所以我不能使用它。 你知道有什么方法可以幫助我。
((我真的需要在過濾器中完成這項工作,因為涉及到許多 servlet。))
謝謝你的幫助
如果您正在運行 Servlet API 的 4.0 或更高版本,則有一個在運行時構造的映射類可供您用於此目的:
HttpServletMapping
您可以從請求中提取映射的 servlet 名稱,如下所示:
String servletName = ((HttpServletRequest) request).getHttpServletMapping().getServletName();
您可以使用httpRequest.getServletPath()
方法來確定調用了哪個 servlet。 它返回當前 servlet 的 URL(例如/users/liste
),該 URL 與 servlet 的名稱不同,但如果我正確理解您的問題,它應該可以解決問題。
您可以使用方法httpRequest.getMethod()
來檢索使用的 http 方法(get、post 等)。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
HttpServletRequest httpRequest = (HttpServletRequest) request;
String servletPath = httpRequest.getServletPath();
String httpMethod = httpRequest.getMethod();
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.