如何在J2EE中进行动态URL重写

回到我的ASP.NET时代,我使用URLRewriter.NET来进行动态URL重写。 基本上,它是一个HTTPModule,它拦截页面请求并根据您定义的规则重写URL,非常类似于MOD_REWRITE。 但是,它还允许您定义“自定义变换”,这是一个具有单一方法的类,可以即时为您进行URL转换。 您可以使用此方法访问数据库,访问Application []集合,几乎可以做任何您想要的事情。

在J2EE世界中有没有相同的东西? 我希望能够动态地重写URL并将此重写委托给某些Java代码。 我不想只设置一个静态重写列表。 同样,它需要进行实际的URL屏蔽,而不是3XX重定向。

如果没有任何东西可以做到这一点,我将如何自己构建此function?

你研究过Servletfilter了吗? 我没有尝试直接修改URL,我相信这些参数会被预先解析为请求对象,但我们会广泛使用这些filter来解析URL并将路径信息放入数据库以供其他Servlet和JSP使用。

您可以非常轻松地将请求对象包装起来,因为它链接到目标Servlet。

这些怎么样:

http://ocpsoft.com/prettyfaces/

PrettyFaces是一个基于OpenSource Filter的Servlets扩展,增强了对JavaServer Faces的支持 – JSF 1.1,1.2和2.0 – 支持创建可书签的漂亮URL。 PrettyFaces优雅地解决了“RESTful URL”问题,包括以下function:页面加载操作,与面部导航的无缝集成,动态视图ID分配,托管参数解析以及与其他Web框架的免配置兼容性。

http://ocpsoft.com/rewrite/

Rewrite是一个基于OpenSource Filter的Java Java扩展 – 支持创建可书签的漂亮URL。 Rewrite优雅地解决了“RESTful URL”问题,包括以下function:页面加载操作,托管参数解析,与CDI的无缝集成,Spring,以及与其他Web框架的免配置兼容性。

http://tuckey.org/urlrewrite/

基于流行且非常有用的apache mod_rewrite,UrlRewriteFilter是适用于任何J2EE兼容的Web应用程序服务器(例如Resin,Orion或Tomcat)的Java Web Filter,它允许您在URL到达代码之前重写URL。 它就像Apache的mod_rewrite一样非常强大。

另一个选择是写你赢得的Servlet 。 现在使用请求对象和找到的URL编写一些URL操作代码,然后再次调用目标页面操作或Servlet。

例如。

你应该使用URL调用Servlet

域/ urlServlet /参数1 /参数2 / …

而你的Servlet会把它翻译成

域/ requestedPage?P1 =参数1:P2 =参数2 ……