映射
问题描述:
在web.xml有这样一个servlet:映射
<servlet>
<servlet-name>Bla</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Bla</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
和我有一个球衣滤波器和approp。 web.xml设置为:
<servlet>
<servlet-name>MY API</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>BlaResponseFilter</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MY API</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
目标是将过滤器绑定到任何响应。
当然不工作由于多个servlet映射到相同的路径(/ *)
什么是另一种方式来做到这一点?我需要在生成响应时但在将请求发送给用户之前运行特殊代码。
答
int部署描述符中com.sun.jersey.spi.container.ContainerRequestFilters
的值应该是一个实现com.sun.jersey.spi.container.ContainerRequestFilter
接口的类,它必须覆盖filter
方法。
所以提供价值似乎不是合法的。 regiter它
package some.package.filter;
import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerRequestFilter;
public class BlaResponseFilter implements ContainerRequestFilter {
@Override
public ContainerRequest filter(ContainerRequest request) {
// you custom operations
return request;
}
}
然后:创建你自己的过滤器
<servlet>
<servlet-name>MY_API</servlet-name><!-- Avoid space characters -->
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>some.package.filter.BlaResponseFilter</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MY_API</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
什么你试过这么远吗?最后** ContainerResponseFilter **和自定义** MessageBodyWriter **? – zyexal 2014-09-21 16:54:12