问题
I have rest service implemented.
I am trying to get the path parameters of the the request in filter.
My request is
/api/test/{id1}/{status}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException
{
//Way to get the path parameters id1 and status
}
回答1:
There's no other way to do it in a ServletFilter other than trying to parse the URI yourself, but you can access the path parameters if you decide to use a JAX-RS request filter:
@Provider
public class PathParamterFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext request) throws IOException {
MultivaluedMap<String, String> pathParameters = request.getUriInfo().getPathParameters();
pathParameters.get("status");
....
}
}
回答2:
You can autowire HttpServletRequest in your filter and use it to get information.
@Autowire
HttpServletRequest httpRequest
httpRequest.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE)
will give you map of path params.
Example:
If your request is like url/{requestId} then above map will return
0 = {LinkedHashMap$Entry@12596} "requestId" -> "a5185067-612a-422e-bac6-1f3d3fd20809"
key = "requestId"
value = "a5185067-612a-422e-bac6-1f3d3fd20809"
来源:https://stackoverflow.com/questions/22199830/any-way-to-get-the-path-parameters-in-httpservlet-request