Filter开发分为二个步骤:
编写java类实现Filter接口,并实现(三个方法)其doFilter方法。
在 web.xml 文件中使用<filter>和<filter-mapping>元素对编写的filter类进行注册,并设置它所能拦截的资源。
Filter的生命周期:
javax.servlet.Filter接口中三个方法.
1.public void init(FilterConfig filterConfig) throw ServletException
初始化方法,只执行一次.
2.public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
真正进行拦截操作的方法.
通过chain.doFilter(request,response) 向下执行.
3.public void destroy()
销毁操作
问题:怎样创建Filter?
1.创建一个类,实现javax.servlet.Filter接口.
2.重写接口中的方法.
3.在web.xml文件中配置.
Filter怎样实现过滤操作
1.<url-pattern>它是用于设置过滤的路径.
2.在doFilter方法中的第三个参数FilterChain,它是用于控制是否可以访问资源的.
测试:创建一个FilterTest的类目录结构如下.
创建一个DemoFilter的类实现Filter的接口.
package cn.itcast.web.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
//Filter入门
//1.创建一个类,实现Filter接口
//2.重写方法
//3.在web.xml文件中配置
public class DemoFilter implements Filter{
public void destroy() {
}
//用来过滤的方法
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
System.out.println("进行过滤操作...");
//放行
//chain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
}
}
//放行
//chain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
}
}
修改web.xml的配置文件.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- Filter入门 -->
<filter>
<filter-name>demoFilter</filter-name>
<filter-class>cn.itcast.web.filter.DemoFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>demoFilter</filter-name>
<url-pattern>/index.jsp</url-pattern> <!-- 访问index.jsp页面会被DemoFilter过滤掉 -->
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
然后就是修改index.jsp的页面.
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
这是一个index.jsp页面<br>
</body>
</html>
运行服务器,登录地址访问时页面显示空白.
控制台就会打印出.
当打开FilterTest的类里面注释的//放行再访问地址就会出现index.jsp的页面.