ContainerRequestContext 和 HttpServletRequest 是什么关系?它们在 JAX-RS 中是如何链接的?

Sto*_*ten 5 java rest servlets jax-rs

JAX-RS 过滤器在过滤请求时将 ContainerRequestContext 作为参数,但在实际的服务控制器中,我见过的大多数示例都以 HttpServletRequest 的形式获取它们的上下文,例如

private HttpServletRequest httpServletRequest;

@Context
public void setHttpServletRequest(HttpServletRequest httpServletRequest) {
    this.httpServletRequest = httpServletRequest;
}
Run Code Online (Sandbox Code Playgroud)

有趣的是我可以在过滤器中的 ContainerRequestContext 上设置一个属性

public void filter(ContainerRequestContext context){
    context.setProperty("MyProperty", "theValue");
}
Run Code Online (Sandbox Code Playgroud)

然后通过 HttpServletRequest 在控制器中检索它

@POST
public Response post(Object param){
    if("theValue".equals(httpServletRequest.getProperty("MyProperty"))){
        // This works and evaluates true
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,ContainerRequestContext 和 HttpServletRequest 有什么关系呢?哪个先出现,另一个如何从中创建/更新?

对于 Response 上下文/servletRequest 对象,它是否也都一样?