让我首先说一下,不能提供静态内容的原因是因为Jersey
servlet的默认servlet映射为
/*,并且它占用了所有请求。因此,无法访问提供静态内容的默认servlet。除了以下解决方案之外,另一个解决方案是仅更改servlet映射。您可以通过用注释
ResourceConfig子类
@ApplicationPath("/another-mapping")或设置
application.properties属性来实现
spring.jersey.applicationPath。
关于第一种方法,请看一下Jersey
ServletProperties。您尝试配置的属性是
FILTER_STATIC_CONTENT_REGEX。它指出:
该属性仅在Jersey Servlet容器配置为作为过滤器运行时适用,否则将忽略此属性
spring开机默认配置了泽西servlet容器为一个Servlet(如提到这里):
默认情况下,Jersey将以名为
@Bean的类型设置为Servlet 。您可以通过创建自己的同名豆之一来禁用或覆盖该bean。
您还可以通过设置使用过滤器而不是Servlet
(在这种情况下,替换或覆盖的是)。ServletRegistrationBean``jerseyServletRegistrationspring.jersey.type=filter@Bean``jerseyFilterRegistration
因此,只要设置属性
spring.jersey.type=filter在你的
application.properties,它应该工作。我已经测试过了
对于FYI,无论是配置为Servlet过滤器还是Servlet,就Jersey而言,功能都是相同的。
As an aside, rather then using the
FILTER_STATIC_CONTENT_REGEX, where you
need to set up some complex regex to handle all static files, you can use the
FILTER_FORWARD_ON_404.
This is actually what I used to test. I just set it up in my
ResourceConfig
@Componentpublic class JerseyConfig extends ResourceConfig { public JerseyConfig() { packages("..."); property(ServletProperties.FILTER_FORWARD_ON_404, true); }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)