((对不起我的英语,我会说法语)
在我正在写的过滤器中,我需要知道用户询问的servlet的名称。这将允许我检查servlet是否与数据库条目匹配。实际上,我正在编码一个限制过滤器。它是这样工作的:
我检查数据库是否为当前用户的访问权限定义了servletName-service条目。如果是,则调用servlet,否则重定向到连接页面。
我如何在过滤器中获取当前Servlet对象或名称?
[使用Eclipse的调试工具,我注意到作为Filter.doFilter方法的参数给出的FilterChain对象包含名称为'userListe'的对象servlet。但是这个对象是私有的,所以我不能使用它。你知道一种帮助我的方法吗?
(((由于涉及许多servlet,我确实需要将此工作放入过滤器中。)]
感谢您的帮助
您可以使用方法httpRequest.getServletPath()
确定调用了哪个servlet。它返回当前servlet的URL(例如/users/liste
),该URL与servlet的名称不同,但是如果我正确理解了您的问题,它应该可以解决问题。
您可以使用方法httpRequest.getMethod()
检索使用的http方法(获取,发布等)。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
HttpServletRequest httpRequest = (HttpServletRequest) request;
String servletPath = httpRequest.getServletPath();
String httpMethod = httpRequest.getMethod();
...
}
String servletName =(((HttpServletRequest)request).getHttpServletMapping()。getServletName();