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

Posted

技术标签:

【中文标题】Java - Tuckee URL Rewrite 过滤器如何更改请求的 url?【英文标题】:Java - How does the Tuckee URL Rewrite filter change the url of the request? 【发布时间】:2011-01-09 09:42:17 【问题描述】:

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

我尝试只转发到重写的 url,但这使得链中的所有其他过滤器都不会被调用。

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

但这使得链中的所有其他过滤器都不会被调用。

只需重新配置其他过滤器以侦听新的url-pattern

【讨论】:

我所说的另一个过滤器映射到 /*.但我确实发现我可以在过滤器映射中添加一个 FORWARD 并使其被调用。 还有,是的。很好,你自己找到了。【参考方案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>

这会自动将 URL“用户名”的值放入名为“用户名”的请求参数中,并将隐藏原始 URL 并将其替换为 html 页面中的链接中的新 URL。

与Rewrite:

这里使用 Rewrite 也是一样,它更明确一点,但也更强大和可配置。

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

我希望这会有所帮助。

~林肯

【讨论】:

以上是关于Java - Tuckee URL Rewrite 过滤器如何更改请求的 url?的主要内容,如果未能解决你的问题,请参考以下文章

Url Rewrite 再说Url 重写

Web服务器群集——URL地址重写(Rewrite)

URL Rewrite 导致404,500错误

Nginx URL重写(rewrite)配置及信息详解

nginx rewrite

Nginx URL重写(rewrite)配置及信息详解