【问题标题】:Init filter inside of servlet initializtion在 servlet 初始化中初始化过滤器
【发布时间】:2016-06-14 03:39:36
【问题描述】:

我有一个 Servlet 过滤器,由于我的业务逻辑,过滤器使用了一些在 servlet 的方法 init() 调用时正在初始化的变量。所以问题是:是否有可能在 servlet 之后初始化过滤器。接下来是我的 Web.xml:

...
 <servlet>
    <servlet-name>CommonsServlet</servlet-name>
    <servlet-class>com.promptlink.dslib.gwt.common.server.rpc.CommonsServletImpl</servlet-class>
  </servlet>
...
<filter>
        <filter-name>CommonServletFilter</filter-name> 
        <filter-class>com.promptlink.dslib.gwt.common.server.httpListeners.CommonServletFilter</filter-class> 
    </filter>
    <filter-mapping>
        <filter-name>CommonServletFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <servlet-name>CommonsServletImpl</servlet-name>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
...

也许有什么方法可以配置不在 xml 中的过滤器?我一直认为可以将过滤器添加到 ServletContext,但我也需要添加映射来过滤器

【问题讨论】:

    标签: java xml servlets servlet-filters


    【解决方案1】:

    过滤器在 servlet 之前初始化,请参阅此处了解 details

    但是您可以创建一个ServletContextListener,它会在应用程序启动时在任何过滤器或 servlet 之前加载,在侦听器中初始化您的变量,然后让您的 servets 和过滤器使用已经初始化的变量。

    侦听器还可以通过编程方式添加您的 servlet 和过滤器,请参阅 ServletContext.addFilter()ServletContext.addServlet()

    【讨论】:

      猜你喜欢
      • 2011-12-07
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多