Java 是否有一种方法可以使用jersey和guice在url开头处理额外的斜杠?

Java 是否有一种方法可以使用jersey和guice在url开头处理额外的斜杠?,java,jakarta-ee,jersey,guice,guice-servlet,Java,Jakarta Ee,Jersey,Guice,Guice Servlet,我有一个RESTAPI,它使用jersey和guice进行依赖注入。一切都很好,我已经启用了FEATURE_CANONICALIZE_URI_PATH和FEATURE_NORMALIZE_URI,并且在几乎所有情况下都可以处理额外的斜杠。例如: http://localhost:8080/my_service/param1//param2 问题是我无法找到正确的方法来处理url开头(服务路径之前)的额外斜杠。像这样: http://localhost:8080//my_service/para

我有一个RESTAPI,它使用jersey和guice进行依赖注入。一切都很好,我已经启用了FEATURE_CANONICALIZE_URI_PATH和FEATURE_NORMALIZE_URI,并且在几乎所有情况下都可以处理额外的斜杠。例如:

http://localhost:8080/my_service/param1//param2
问题是我无法找到正确的方法来处理url开头(服务路径之前)的额外斜杠。像这样:

http://localhost:8080//my_service/param1/param2
这就是我目前设置内容的方式:

web.xml

<filter>
    <filter-name>guiceFilter</filter-name>
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>guiceFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
    <listener-class>MyServletConfig</listener-class>
</listener>
MyService.java

@Path("/")
public class MyService {
    @GET
    @Path("/{param1}/{param2}")
    @Produces("application/json")
    public String get(
            @PathParam("param1") final String param1,
            @PathParam("param2") final String param2) {

        return "{\"param1\":\"" + param1 + "\"}";
    }
}
我可以看出,问题实际上是,在服务名称之前带有//的请求实际上没有被servlet处理,因为它在过滤器映射的url映射中不匹配,但我不确定正确的解决方案。我是否需要在url与servlet匹配之前进行url重写,或者是否有更好的方法映射请求url?

快速线索:

是一个JavaWeb过滤器。它是一个非常强大的工具,就像Apache的mod_rewrite一样。 使用来自快速线索的经典htaccess重写设置过滤器:

是一个JavaWeb过滤器。它是一个非常强大的工具,就像Apache的mod_rewrite一样。

使用经典htaccess重写设置过滤器如果您使用的是jetty,只需添加模块即可


如果您使用的是jetty,只需添加模块即可

@Path("/")
public class MyService {
    @GET
    @Path("/{param1}/{param2}")
    @Produces("application/json")
    public String get(
            @PathParam("param1") final String param1,
            @PathParam("param2") final String param2) {

        return "{\"param1\":\"" + param1 + "\"}";
    }
}
 Module: rewrite-compactpath
       : Add a rule to the rewrite module to compact paths so that double slashes
       : in the path are treated as a single slash.
 Depend: rewrite
    XML: etc/rewrite-compactpath.xml