我想为我的应用编写自己的url重写版本,但我不知道如何更改过滤器中传入请求的url。
我尝试转发到重写的网址,但是这样就不会调用链中的所有其他过滤器。
答案 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")));
我希望这会有所帮助。
〜林肯