Servlets 如何在servlet过滤器中识别哪个欢迎文件?

Servlets 如何在servlet过滤器中识别哪个欢迎文件?,servlets,servlet-filters,welcome-file,Servlets,Servlet Filters,Welcome File,当对应于欢迎文件的请求调用servlet过滤器时,过滤器是否有办法获取正在提供的特定欢迎文件的名称getRequestURL在上下文根处停止(这可能是因为这是请求的url)。 我可以将一个筛选器映射到每个可能的欢迎文件,但让它们都使用相同的筛选器,并对每个文件执行稍微不同的操作,会更方便。简单,我认为只需在Welcomefile.jsp会话中获取URL并在筛选器中使用即可 在您的情况下,欢迎文件不是JSP,在.xhtml的过滤器中,get-HttpServletRequest.getReques

当对应于欢迎文件的请求调用servlet过滤器时,过滤器是否有办法获取正在提供的特定欢迎文件的名称
getRequestURL
在上下文根处停止(这可能是因为这是请求的url)。
我可以将一个筛选器映射到每个可能的欢迎文件,但让它们都使用相同的筛选器,并对每个文件执行稍微不同的操作,会更方便。

简单,我认为只需在Welcomefile.jsp会话中获取URL并在筛选器中使用即可


在您的情况下,欢迎文件不是JSP,在.xhtml的过滤器中,get-HttpServletRequest.getRequest
URL
(),而不是HttpServletRequest.getRequest
URI
()

删除所有可能的默认索引文件,只删除一个,然后你就会知道是哪一个被送达了。实际上,这就是我目前使用的方法,以避免识别送达的特定欢迎文件。但是,如果有一种方法可以实际识别提供的特定欢迎文件,我想知道。为什么您希望提供不同的欢迎文件而不控制它?(例如,检查过滤器中的首选语言并为每种语言提供不同的文件)我有一个servlet过滤器,它捕获所有请求,以确保用户在提供任何内容之前登录。如果请求的uri没有指定一个文件(即,它在上下文根处停止,将提供一个欢迎文件),我必须知道该欢迎文件是什么,因此在重定向到登录页面后,我可以重定向回最初请求的文件,即[未命名的]欢迎文件。我不希望为网站设计者规定一个特定的欢迎文件,让他们在web.xml中担心这个问题。我需要欢迎文件名来执行第二次重定向。但是,这将不是一个问题,因为我不会捕获筛选器中的所有请求,而是只捕获到“受保护”页面的请求(其中没有一个是欢迎文件),因此我不必再担心筛选器中的欢迎文件。对不起,但我不明白这个建议。请求是
http://localhost/MyApp/
。提供的欢迎文件是
index.xhtml
。在servlet过滤器中,
HttpServletRequest.getRequestURI()
返回“/MyApp/”。此外,在调用servlet筛选器时,会话
HttpServletRequest.getSession().getAttributeNames()
[根本]中没有属性。