web.xml的配置如下:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<!-- 如果想加入多个拦截器,请用;隔开 -->
<param-value>com.my.webservice.TestRequestFilter</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
filter代码如下:
public class TestRequestFilter implements ContainerRequestFilter{
@Context
private HttpServletRequest servletRequest;
@Context
private HttpServletResponse servletResponse;
@Override
public ContainerRequest filter(ContainerRequest creq) {
// TODO Auto-generated method stub
System.out.println("TestRequestFilter Request:" + creq);
if(!servletRequest.getRequestURL().toString().endsWith("/login") && !servletRequest.getMethod().equals("OPTIONS")){
Response response = Response.ok(new ErrorJSON(99, "error")).status(401).type(MediaType.APPLICATION_JSON).build();
throw new WebApplicationException(response); // Throw new UnAuthorized
}
return creq;
}
}