回到我的ASP.NET时代,我使用URLRewriter.NET来进行动态URL重写。基本上,它是一个HTTPModule,它拦截页面请求并根据您定义的规则重写URL,非常类似于MOD_REWRITE。但是,它还允许您定义“自定义变换”,这是一个具有单个方法的类,可以即时为您进行URL转换。您可以使用此方法访问数据库,访问Application []集合,几乎可以做任何您想要的事情。
J2EE世界中是否有相应的内容?我希望能够动态地重写URL并将此重写委托给某些Java代码。我不想只设置一个静态重写列表。同样,它需要进行实际的URL屏蔽,而不是3XX重定向。
如果没有这样做的话,我将如何自己构建此功能?
答案 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框架的兼容性。
Rewrite是一个基于OpenSource Filter的Java Java扩展 - 支持创建可书签的漂亮网址。重写解决了 “RESTful URL”问题优雅,包括:page-load等功能 动作,托管参数解析,与CDI的无缝集成, Spring,与其他Web的免配置兼容性 框架。
基于流行且非常有用 用于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 ...