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 对象,它是否也都一样?