Servlet 3.0 程序配置

Servlet 3.0 规范中引入了配置方法 addListener、addFilter 和 addServlet。

Servlet 3.0 的方法是 ServletContext 接口的一部分。 您可以从 ServletContainerInitializer 或 ServletContextListener 调用这些方法。

addListener

这addGlobalListener方法已弃用WebSphere® Application Server版本8.5 。 此方法会替换为 addListener 方法。
  • 使用以下方法以将具有给定类名的侦听器添加到此 servlet 上下文:
    void addListener(java.lang.String className)
  • 使用以下方法以将给定侦听器添加到此 servlet 上下文:
    <T extends java.util.EventListener> void addListener(T t)
  • 使用以下方法以将具有给定类类型的侦听器添加到此 servlet 上下文:
    void addListener(java.lang.Class<? extends java.util.EventListener> listenerClass)
给定侦听器类必须实现以下一个或多个接口:
  • ServletContextAttributeListener
  • ServletRequestListener
  • ServletRequestAttributeListener
  • HttpSessionListener
  • HttpSessionAttributeListener

addFilter

这addMappingFilter方法已弃用WebSphere Application Server版本8.5 。 此方法会替换为 addFilter 方法。 此方法会将具有给定名称、描述和类名的过滤器添加到 Web 应用程序上下文。 可以使用返回的 FilterRegistration 对象对注册过滤器进行进一步配置。
  • 使用以下方法以将具有给定名称和类类型的过滤器添加到此 servlet 上下文:
    addFilter(java.lang.String filterName, java.lang.Class<? extends Filter> filterClass)
  • 使用以下方法以向此 servlet 上下文注册给定过滤器实例,并使用给定 filterName:
    addFilter(java.lang.String filterName, Filter filter) 
  • 使用以下方法以将具有给定名称和类名的过滤器添加到此 servlet 上下文:
    addFilter(java.lang.String filterName, java.lang.String className) 

addServlet

addServlet 方法会将 servlet 动态添加到 servletContext。 这些方法会将具有给定参数的 servlet 添加到 Web 应用程序上下文。 可以使用返回的 ServletRegistration 对象对注册的 servlet 进行进一步配置。

  • 使用以下方法以将具有给定名称和类类型的过滤器添加到此 servlet 上下文:
    addFilter(java.lang.String filterName, java.lang.Class<? extends Filter> filterClass)
  • 使用以下方法以向此 servlet 上下文注册给定过滤器实例,并使用给定 filterName:
    addFilter(java.lang.String filterName, Filter filter)
  • 使用以下方法以将具有给定名称和类名的过滤器添加到此 servlet 上下文:
    addFilter(java.lang.String filterName, java.lang.String className)

ServletContainerInitializer

为共享库配置 JAR 文件且在 JAR 中发现 ServletContainerInitializer 时,会为与共享库关联的每个应用程序调用 ServletContainerInitializer。

Servlet 3.0 中不推荐的类

com.ibm.websphere.servlet.context.IBMServletContext 中不推荐以下类:
  • public void addDynamicServlet(String servletName, String servletClass, String mappingURI, Properties initParameters) throws ServletException, java.lang.SecurityException;
  • public void removeDynamicServlet(String servletName) throws java.lang.SecurityException
由于移除 servlet 可能会在该请求同时为 servlet 提供服务的情况下导致计时问题,因此没有 removeDynamicServlet 方法的替代方法。 addServlet 和 createServlet 方法替换 addDynamicServlet 方法。