Java Filter什么时候开始? Filter init()
方法是否会覆盖servlet init()
方法?我在哪里声明web.xml
中的init参数?
答案 0 :(得分:3)
Java Filter什么时候开始?
在启动Web应用程序期间。
过滤器
init()
方法是否覆盖了servletinit()
方法?
没有。它们彼此没有任何关系。 过滤器的init()
方法只会实现javax.servlet.Filter
interface中定义的方法。
我在哪里声明
web.xml
中的init参数?
在<filter>
声明中。
<filter>
<filter-name>myFilter</filter-name>
<filter-class>com.example.MyFilter</filter-class>
<init-param>
<param-name>foo</param-name>
<param-value>bar</param-value>
</init-param>
</filter>
然后可以在init()
内找到,如下所示:
@Override
public void init(FilterConfig config) {
String foo = config.getInitParameter("foo"); // contains "bar".
}
答案 1 :(得分:1)
在web.xml中声明它,如
<web-app version=...>
...
<filter>
<description>...</description>
<display-name>My Filter</display-name>
<filter-name>MyFilter</filter-name>
<filter-class>com.foo.bar.MyFilter</filter-class>
</filter>
...
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/some/path</url-pattern>
</filter-mapping>
...
</web-app>
[更新] <filter>
部分将您的过滤器注册到系统;它将在Web应用程序启动时自动启动。在<filter-mapping>
部分,您可以配置调用过滤器的时间(在哪些URL上)。的 [/更新] 强>
@BalusC已经回答了你的其他问题。