首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用java EE 6注解的Servlet过滤?

使用java EE 6注解的Servlet过滤?
EN

Stack Overflow用户
提问于 2011-11-16 12:00:53
回答 1查看 13.4K关注 0票数 7

是否可以在EE6中使用@ApplicationPath和@Path注释来模拟servlet筛选器链?

示例:

代码语言:javascript
复制
@ApplicationPath("/api")
class Filter extends Application { 
    @Path("/*")
    public void filter() {
        log.info("Request to API");
    }
}

..。

代码语言:javascript
复制
@Path("/foo")
class Foo {
    @GET
    @Path("/bar")
    @Produces("text/plain")
    public String bar() {
        return "Hello World";
    }
}

其中URL将是http://foobar.com/api/foo/bar,但" filter“方法将被调用,就好像它是servlet筛选器链一样。我知道上面的方法是行不通的,但是在这个类中有没有一种带注释的方法可以实现与从web.xml文件中配置“过滤器”相同的效果呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-16 12:19:15

Java7(甚至已经有JBoss 6)支持JavaEE6,而JavaEE6又涵盖了Servlet3.0。也许您的web.xml被错误地声明为conform servlet2.5,这导致@WebFilter根本无法工作。确保将web.xml的根声明声明为conform Servlet 3.0,如下所示:

代码语言:javascript
复制
<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

然后,您可以只使用@WebFilter

代码语言:javascript
复制
@WebFilter("/api/*")
public class FooFilter implements Filter {

    // ...

}

顺便说一下,您所展示的示例是JAX-RS的一部分,它是构建在Servlet之上的另一个RESTful (一种)。要了解有关JAX-RS的更多信息,Jersey user guide可能会很有用。

另请参阅:

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8146530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档