【问题标题】:Is it possible to use UrlRewriter outside servlet and filter in Java?是否可以在 servlet 外部使用 UrlRewriter 并在 Java 中进行过滤?
【发布时间】:2011-03-12 06:15:09
【问题描述】:

我已经设置了带有许多规则的 UrlRewriterFilter (Tukey),它对我的​​ servlet 非常有效。但我想使用相同的配置在 servlet 之外重写 url - 在生成带有 url 的电子邮件的代码中。

所以,我需要以某种方式启动 UrlRewriter(或某种包装器)来处理传出 url,即用我在配置 (urlrewrite.xml) 中定义的出站规则重写它们。

我想这样使用它:

String prettyUrl = urlRewriter.rewriteOutgoingUrl(uglyUrl);

这可能吗?如何实现这个目标?

【问题讨论】:

  • 我也有类似的情况。您介意发布您的解决方案,因为它看起来并不简单。

标签: java email servlets url-rewriting tuckey-urlrewrite-filter


【解决方案1】:

它是开源的。您可以查看它的源代码 (http://code.google.com/p/urlrewritefilter/source/browse/trunk/src/java/org/tuckey/web/filters/urlrewrite/UrlRewriteFilter.java) 并查看该逻辑是否在不依赖 servlet 请求/响应对象的独立类中可用。如果是,请使用它。否则,您可以根据原始源代码自己构建它,尽可能多地重用库。

【讨论】:

  • 我已经下载了这段代码并查看了它。它对 Request 和 Response 对象的引用太多,不能像那样在独立环境中使用 - 没有大量的模拟等。但我也设法制作了自己的 UrlRewriter 来识别 Tuckey 的规则(来自 urlrewrite.xml)。我的代码长约 100 行,完全独立于 Servlet API(即请求/响应对象)。
  • 对不起,我的意思是在这里发表上述评论。如果您能分享您的代码,我将不胜感激,因为我想实现类似的东西。
【解决方案2】:

您可能只需要初始化 UrlRewriteFilter。由于您通常必须在 web.xml 文件中添加它,因此 UrlRewriteFilter 配置文件可能会加载一次。我会尝试在您定义的一些包装类中的静态初始化程序中加载它。要定义一个静态初始化器,您需要做的就是在一个类中具有以下内容:

static {
   //Your initialization code goes here
}

此代码只会在运行时初始化一次。更多信息请看这里: http://java.sun.com/docs/books/tutorial/java/javaOO/initial.html

【讨论】:

  • 但是 UrlRewriteFilter 适用于请求/响应和整个 servlet 环境,如何应对呢?我应该传递什么来过滤而不是 servlet 容器构造的请求/响应对象?
猜你喜欢
  • 2013-10-22
  • 2017-10-14
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 2012-02-17
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
相关资源
最近更新 更多