在动态URL上应用过滤器

时间:2012-07-09 10:29:43

标签: java url servlets servlet-filters

我必须像这样过滤网址:

http://www.mysite.com/708e93

其中708e93是唯一ID,基于此ID我必须在jsp中创建动态页面。

现在的问题是 - 我在过滤映射

下放入url-pattern
<filter-mapping>
<filter-name>foo.bar.MyFilter</filter-name>
<url-pattern> ?? </url-pattern>
</filter-mapping>

如果我把root(/)放在url-pattern ..对mysite的每个请求都会被过滤掉,那么在那种情况下我怎么能得到唯一的id?

任何解决方案?

编辑

我不想在网址中添加如下目录:http://www.mysite.com/dynamicpages/708e93

1 个答案:

答案 0 :(得分:1)

对于动态网址,例如您使用的用例。你应该拥有目录中的所有动态页面,比如说dynamicpages文件夹。你应该映射一个目录网址模式,如下所示:

<filter-mapping>
  <filter-name>foo.bar.MyFilter</filter-name>  
  <url-pattern>/dynmaicpages/*</url-pattern>
</filter-mapping>

<servlet-mapping>
  <servlet-name>foo.bar.MyServlet</servlet-name>  
  <url-pattern>/dynmaicpages/*</url-pattern>
</servlet-mapping>

您可以使用以下方法获取唯一ID:

  • HttpServletRequest.getPathInfo()如果你有如上所述的servlet映射,这将直接为你提供唯一的id值。

例如,如果请求uri是/dynamicpages/708e93 它将返回708e93

  • HttpServletRequest.getRequestURI()这将为您提供整个请求网址。并且您需要正确解析唯一ID。

例如,如果请求uri是/dynamicpages/708e93 它将返回/dynamicpages/708e93