【问题标题】:How to identify which welcome file in servlet filter?如何识别 servlet 过滤器中的欢迎文件?
【发布时间】:2014-02-07 02:53:54
【问题描述】:

当对应于欢迎文件请求调用 servlet 过滤器时,过滤器有没有办法获取正在提供的特定欢迎文件的名称? getRequestURL 停在上下文根(大概是因为那是请求的 url)。 我可以将过滤器映射到每个可能的欢迎文件,但是让它们都使用相同的过滤器会更方便,并为每个文件做一些稍微不同的事情。

【问题讨论】:

  • 删除除一个以外的所有可能的默认索引文件,然后您将始终知道正在提供哪个。
  • 这实际上是我目前使用的方法,以避免必须识别提供的特定欢迎文件。但是,如果有办法实际识别所提供的特定欢迎文件,我想知道。
  • 为什么要在不控制的情况下提供不同的欢迎文件? (例如,在过滤器中检查首选语言并为每种语言提供不同的文件)
  • 我有一个 servlet 过滤器,它可以捕获所有请求,以确保用户在提供任何内容之前已登录。如果请求的 uri 未指定文件(即,它在上下文根目录处停止并且将提供欢迎文件),我必须知道该欢迎文件是什么,因此在重定向到登录页面后,我可以重定向回到最初请求的文件——即 [未命名] 欢迎文件。我宁愿不为网站设计者规定一个特定的欢迎文件,让他们在 web.xml 中担心这一点。我需要欢迎文件名来进行第二次重定向。
  • 但是,这将不是问题,因为我不会捕获过滤器中的所有请求,而是只会捕获对“受保护”页面的请求(这些都不是欢迎文件),因此我不必再担心过滤器中的欢迎文件。

标签: servlets servlet-filters welcome-file


【解决方案1】:

我认为很简单,只需在 Welcomefile.jsp 的 Session 中获取 URL 并在 Filter 中使用。

在您的情况下,欢迎文件不是 JSP ,在 Filter for .xhtml 中获取 HttpServletRequest.getRequestURL() 而不是 HttpServletRequest.getRequestURI()

【讨论】:

  • 对不起,我不明白这个建议。请求是http://localhost/MyApp/。提供的欢迎文件是index.xhtml。在 servlet 过滤器中,HttpServletRequest.getRequestURI() 返回“/MyApp/”。此外,在调用 servlet 过滤器时,会话 HttpServletRequest.getSession().getAttributeNames() [at all] 中没有任何属性。
猜你喜欢
  • 2012-04-26
  • 2014-01-15
  • 2011-12-14
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
相关资源
最近更新 更多