javax servlet过滤器与泽西过滤器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javax servlet过滤器与泽西过滤器相关的知识,希望对你有一定的参考价值。

我打算编写一个servlet应用程序(用于部署OSGI)并使用一些过滤器进行HTTP头预处理。虽然最初确定了javax.servlet过滤器实现,但我发现我实际上不知道为什么/何时会选择使用它与Jersey ContainerRequestFilter。虽然后者带有一些预先构建的过滤器,但前者可能也是如此(例如Cors过滤器)。因此,在选择使用哪种API时应该考虑什么?是否存在不应该使用另一个人的特定情况?

答案

无论你决定什么,你将使用基于javax.servlet的Filter实现,因为它是你在Java EE中使用的每个Filter的基本接口。

http://docs.oracle.com/javaee/6/api/javax/servlet/Filter.html

现在,Jersey提供了一个实现,增加了一些功能(访问你的ContainerRequestContext或你在Jersey应用程序中需要的任何东西)。您是否已在应用程序中使用Jersey?然后去吧,如果不是我不打扰(至少是先验的,没有进一步的信息),只需要最简单的javax.servlet.Filter实现并直接进入我的web.xml

另一答案

JAX-RS过滤器的问题在于您无法控制执行过滤器链

chain.doFilter(request, response);

因为我现在的问题是将Servlet过滤器转移到JAX-RS过滤器,但是当前的Servlet过滤器调用整个过滤器链以便最终检查响应及其状态。从我的角度来看,使用JAX-RS过滤器是不可能的。

以上是关于javax servlet过滤器与泽西过滤器的主要内容,如果未能解决你的问题,请参考以下文章

javax.servlet.ServletException:过滤器执行引发异常

泽西岛和过滤器异常处理

理解Servlet过滤器(javax.servlet.Filter)

Servlet过滤器Filter用法

Filter过滤器简单学习

Spring Boot 应用程序中的 javax.servlet