我有一个Servlet过滤器,由于我的业务逻辑,Filter使用了一些在servlet方法init()调用时初始化的变量。所以问题是:在servlet之后是否有可能进行init过滤。我的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添加过滤器,但我需要添加一个映射来过滤
答案 0 :(得分:1)
过滤器在servlet之前初始化,请参见此处details。
但是你可以在任何过滤器或servlet之前创建一个在应用程序启动时加载的ServletContextListener,在监听器中初始化你的变量,然后让你的serlvets和过滤器使用已经初始化的变量。
侦听器还可以通过编程方式添加servlet和过滤器,请参阅ServletContext.addFilter()
和ServletContext.addServlet()
。