Java - Tuckee URL Rewrite过滤器如何更改请求的URL?

时间:2010-01-26 04:57:09

标签: java java-ee servlet-filters

我想为我的应用编写自己的url重写版本,但我不知道如何更改过滤器中传入请求的url。

我尝试转发到重写的网址,但是这样就不会调用链中的所有其他过滤器。

3 个答案:

答案 0 :(得分:4)

正确的方法是创建HttpServletRequestWrapper的子类,覆盖其getRequestURI()和其他方法以返回新URL,并用它包装请求。因此,您不必更改其他过滤器映射。

答案 1 :(得分:3)

  

但这样就不会调用链中的所有其他过滤器。

只需重新配置其他过滤器即可收听新的url-pattern

答案 2 :(得分:3)

为什么在为您完成了许多精心编写的选项后编写自己的选项?你可以使用Tuckey URL-rewrite过滤器,但我也会看看OCPsoft PrettyFaces或OCPsoft Rewrite:

使用PrettyFaces

创建WEB-INF / pretty-config.xml

<url-mapping>
   <pattern value="/#{username}" />
   <view-id value="/profile.jsp" />
</url-mapping>

这会自动将网址“username”的值放入名为“username”的请求参数中,并隐藏原始网址并将其替换为HTML网页链接中的新网址。

使用Rewrite

使用Rewrite是一回事,它更明确,但也更强大和可配置。

ConfigurationBuilder.begin()
   .addRule(Join.path("/{username}").to("/profile.jsp")
                .where("username").bindsTo(Request.parameter("username")));

我希望这会有所帮助。

〜林肯