HttpServletRequest有一个方法setAttribute(String, Object).
如何从中提取此属性ContainterRequest?
我没找到:getAttribute方法!
码
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);
}
}
Run Code Online (Sandbox Code Playgroud)
在泽西过滤器:
private class Filter implements ResourceFilter, ContainerRequestFilter {
public ContainerRequest filter(ContainerRequest request) {
// ..extract the attribute from the httpReq
}
}
Run Code Online (Sandbox Code Playgroud)
Rya*_*art 43
你不能.它们不会以任何方式通过Jersey API公开.如果您搜索Jersey代码库,您会发现没有使用HttpServletRequest.getAttributeNames()它,如果它们被集体复制,您可能会使用它们.您还会发现,只有少数几种用途HttpServletRequest.getAttribute(),并且它严格用于内部簿记.
但请注意,当在Servlet上下文中部署时,JAX-RS允许您使用@Context注释注入原始HttpServletRequest .我不确定你是否可以在Jersey过滤器中执行此操作,但它适用于MessageBodyReaders/Writers和资源类.
更新:我已经检查了,事实上,您可以通过简单地包括以下内容将HttpServletRequest注入Jersey ContainerRequestFilter:
@Context private HttpServletRequest httpRequest;
Run Code Online (Sandbox Code Playgroud)
如果您使用实现 JAX-RS 2.0 的 Jersey 2,则可以实现ContainerRequestFilter定义过滤器方法的 a ,如下所示:
public void filter(ContainerRequestContext requestContext) throws IOException;
ContainerRequestContext具有getProperty(String)和setProperty(String, Object)方法,它们在 Servlet 环境 ( ServletPropertiesDelegate) 中映射到 servlet 请求的getAttribute(String)和setAttribute(String, Object)方法。
请参阅:GitHub 上的泽西岛
| 归档时间: |
|
| 查看次数: |
18436 次 |
| 最近记录: |