Java Servlet教程—FilterConfig

FilterConfig
FilterConfig的对象是由Web容器创建的。这个对象可以用来从web.xml文件获取配置信息。
FilterConfig接口的方法
FilterConfig接口中有以下4种方法。
- public void init(FilterConfig config): init()方法只被调用一次,它用于初始化过滤器。
- public String getInitParameter(String parameterName): 返回指定参数名称的参数值。
- public java.util.Enumeration getInitParameterNames(): 返回包含所有参数名称的枚举。
- public ServletContext getServletContext(): 返回ServletContext对象。
FilterConfig的示例
在这个示例中,如果您将param-value更改为no,请求将被转发到servlet,否则过滤器将创建带有消息的响应:此页面正在处理中。让我们看看FilterConfig的一个简单示例。在这里,我们创建了4个文件:
- index.html
- MyFilter.java
- HelloServlet.java
- web.xml
index.html
<a href="servlet1">click here</a>
MyFilter.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
public class MyFilter implements Filter{
FilterConfig config;
public void init(FilterConfig config) throws ServletException {
this.config=config;
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
PrintWriter out=resp.getWriter();
String s=config.getInitParameter("construction");
if(s.equals("yes")){
out.print("This page is under construction");
}
else{
chain.doFilter(req, resp);//sends request to next resource
}
}
public void destroy() {}
}
HelloServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print("<br>welcome to servlet<br>");
}
}
web.xml
<web-app>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
<filter>
<filter-name>f1</filter-name>
<filter-class>MyFilter</filter-class>
<init-param>
<param-name>construction</param-name>
<param-value>no</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>f1</filter-name>
<url-pattern>/servlet1</url-pattern>
</filter-mapping>
</web-app>