public class URLFilter implements Filter {
private URLFilter() {
//New instances are not permitted
}
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
}
}
给我错误:
类org.apache.catalina.core.DefaultInstanceManager无法访问 具有修饰符的类com.example.singleton.URLFilter的成员 “私有”
如何防止创建多个servlet过滤器实例?
答案 0 :(得分:3)
如果使用web.xml或注释配置过滤器,则需要为容器提供一个public,no args构造函数来实例化它(Servlet规范3.1的第6.2节):
应用程序开发人员通过实现创建过滤器 javax.servlet.Filter接口并提供一个不带的公共构造函数 参数
第6.2.1节也说:
部署描述符中每个声明只有一个实例 根据容器的JVM实例化
如果您需要更精细地控制过滤器实例化,则需要使用过滤器的编程注册(参见Servlet Specification 3.1中的第4.4.2节)。