HttpServletRequest
有一个方法setAttribute(String, Object)
.
我怎样才能从中提取这个属性ContainterRequest
?
我没有找到:getAttribute
method!
Code
public class AuthenticationFilter implements Filter {
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpReq = (HttpServletRequest) servletRequest;
// .... ....
httpReq.setAttribute("businessId", businessId);
}
}
在泽西岛过滤器中:
private class Filter implements ResourceFilter, ContainerRequestFilter {
public ContainerRequest filter(ContainerRequest request) {
// ..extract the attribute from the httpReq
}
}
你不能。它们不会以任何方式通过 Jersey API 公开。如果你搜索 Jersey 代码库,你会发现没有使用HttpServletRequest.getAttributeNames()
,如果它们被批量复制,您会期望使用它们。您还会发现只有少数用途HttpServletRequest.getAttribute()
,并且严格用于内部簿记。
但请注意,当部署在 Servlet 上下文中时,JAX-RS 允许您使用以下方式注入原始 HttpServletRequest:@Context
注解。我不确定是否可以在 Jersey 过滤器中执行此操作,但它适用于 MessageBodyReaders/Writers 和资源类。
Update:我已经检查过,事实上,您可以通过简单地包含以下内容将 HttpServletRequest 注入 Jersey ContainerRequestFilter 中:
@Context private HttpServletRequest httpRequest;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)