2011-01-27 147 views

回答

3

何时启动Java Filter?

在web应用程序启动过程中。


是否过滤init()方法在此改变的servlet init()方法?

不,他们之间没有任何关系。 init()方法您的过滤器只是实现了一个定义在javax.servlet.Filter interface


我在哪里申报web.xml的初始化参数?

里面的<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". 
} 
+0

这意味着该请求将被过滤automaticaly我的意思是我没有o把开始的顺序,它也是一样的回应? – giorgo 2011-01-27 15:05:04

+0

@giorgo - 您必须将滤镜贴图添加到您要应用滤镜的网址。例如,为了将过滤器应用于一个名为checkOut.JSP页面你可以这样做:<过滤器映射> \t myFilter \t /secure/checkOut.jsp \t – CoolBeans 2011-01-27 15:11:09

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>部分中,您可以配置何时(在哪些网址上)调用您的过滤器。

您的其余问题已由@BalusC回答。