如何使用过滤器?

时间:2011-01-27 14:27:40

标签: java servlets servlet-filters

Java Filter什么时候开始? Filter init()方法是否会覆盖servlet init()方法?我在哪里声明web.xml中的init参数?

2 个答案:

答案 0 :(得分:3)

  

Java Filter什么时候开始?

在启动Web应用程序期间。


  

过滤器init()方法是否覆盖了servlet init()方法?

没有。它们彼此没有任何关系。 过滤器的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已经回答了你的其他问题。