我必须像这样过滤网址:
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
答案 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
。