JAVAWEB——Filter

Filter概念

web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦载下来,完成一些特殊的功能。

过滤器的作用

一般用于完成通用的操作。如:权限设置、登录验证、统一编码处理、敏感字符过滤等。

过滤器的创建步骤

①定义一个类,实现接口Filter
②复写方法
③配置拦截路径

package 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;
import javax.servlet.annotation.WebFilter;
/**
 * Servlet Filter implementation class Filter_one
 */
@WebFilter("/*")
public class Filter_one implements Filter {
    /**
     * Default constructor. 
     */
    public Filter_one() {
        // TODO Auto-generated constructor stub
    }
	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}
	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		System.out.println("dofilter");// place your code here

		// pass the request along the filter chain
		chain.doFilter(request, response);
		System.out.println("pass");
	}
	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}
}

过滤器配置

第一种方法(注释法):
在导入包代码下方直接添加
@WebFilter("/*")
第二种方法(web.xml):
在web.xml文件中添加

<filter>
<filter-name>Filter_one</filter-name>
<filter-class>filter.Filter_one</filter-class>
</filter>
<filter-mapping>
<filter-name>Filter_one</filter-name>
<url-pattern>/index.jsp</url-pattern>//拦截路径,根据情况设置
</filter-mapping>

过滤器执行流程与生命周期

1.init:在服务器后动后,会创建Filter对象,然后调用init方法,只执行一次,用于加载资源。
2.doFilter:每一次请求被拦截资源时,会执行,且执行多次
3.destroy:在服务器关闭后,Flter对象被销毁,如果服务器是正常关闭,则会执行destroy方法,只执行一次,用于释放资源。

过滤器拦截路径配置

①具体资源路径:/index.jsp只有访问index.jsp资源时,过滤器才会被执行
②拦截目录:/user/访问/user下的所有资源时,过滤器都会被执行
③后缀名拦酸:
.jsp访问所有后缀名为jsp资源时,过滤器都会被执行
④拦截所有资源:/*访问所有资源时,过滤器都会被执行

过滤器拦截方式配置

注解配置:
设置dispatcherTypes属性
①REQUEST:默认值,浏览器直接请求资源

//浏览器直接请求资源时,该过滤器会被执行
@WebFilter(value="/*",dispatcherTypes =DispatcherType.REQUEST)

②FORWARD:转发访问资源
③INCLUDE:包含访问资源
④ERROR:错误跳转资源
⑤ASYNC:异步访问资源

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值