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

时间:2009-11-09 22:21:38

标签: java url java-ee url-rewriting

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

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

如果没有这样做的话,我将如何自己构建此功能?

3 个答案:

答案 0 :(得分:4)

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

您可以非常轻松地将请求对象链接到目标Servlet。

答案 1 :(得分:4)

这些怎么样:

http://ocpsoft.com/prettyfaces/

  

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

http://ocpsoft.com/rewrite/

  

Rewrite是一个基于OpenSource Filter的Java Java扩展 -   支持创建可书签的漂亮网址。重写解决了   “RESTful URL”问题优雅,包括:page-load等功能   动作,托管参数解析,与CDI的无缝集成,   Spring,与其他Web的免配置兼容性   框架。

http://tuckey.org/urlrewrite/

  

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

答案 2 :(得分:-1)

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

例如

你应该使用URL

来调用Servlet

域/ urlServlet /参数1 / param2的/...

您的Servlet会将其翻译为

域/ requestedPage P1 =参数1&安培; P2 =参数2 ...