0

我需要在 ServletFilter 中重写 URL,以便将“foo.domain.com”重写为“foo.domain.com/foo”。我正在使用 Jetty,它有一种方便的修改请求的方法:只需将请求转换为 Jetty Request 对象,你就会得到一堆允许你修改它的设置器。这是我的代码(不起作用):

String subdom = Util.getSubDomain(req);
org.eclipse.jetty.server.Request jettyReq = (Request) req;
String oldUri = jettyReq.getRequestURI();
String newUri = "/" + subdom + oldUri;
jettyReq.setRequestURI(newUri);

我的目的是从位于 /webapps/root/foo 的 /foo 目录中提供文件。

我猜我还需要调用 setContextPath()、setPathInfo()、setURI()、setServletPath() 之类的东西,谁知道还有什么。

什么神奇的组合使它看起来像原来的请求是针对 /foo 的?

编辑:澄清一下,我说代码不起作用的原因是文件仍然从 /webapps/root 提供,而不是 /webapps/root/foo。

4

2 回答 2

1

只需使用重写处理程序,我们就支持您尝试执行的操作:

http://wiki.eclipse.org/Jetty/Feature/Rewrite_Handler

于 2012-12-12T18:07:14.770 回答
1

回答我自己的问题:我失踪了

jettyReq.setServletPath(newUri); 

添加它,一切正常。

于 2012-12-12T21:39:01.183 回答