javaweb-filter

javaweb三大组件-filter过滤器

一、什么是filter过滤器
servlet api中提供了一个filter接口,开发web应用时,如果编写的java实现了这个接口,则把这个java类称之为过滤器filter,filter可以在访问某个资源之前,对访问的请求进行拦截与响应。
二、filter的工作原理
当我们配置好servlet后,并配置对哪个web资源进行拦截,web服务器在每回调用web资源的service方法前,都会调用一下filter的doFilter方法,在HttpServletRequest到达 Servlet 之前,拦截客户的HttpServletRequest 。根据需要检查HttpServletRequest,也可以修改HttpServletRequest 头和数据。

在HttpServletResponse到达客户端之前,拦截HttpServletResponse 。根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。
三、Filter的配置方式
3.1通过xml配置
先在xml里配置,然后配置实体类



SuiBian

com.filter.SuiBianFilter

  <!-- filter映射 -->
 <filter-mapping>
     <!-- 对应的filter名,和上边的filter名保持一致保持映射关系 -->
     <filter-name>SuiBian</filter-name>
     <!-- 要进行拦截过滤的目录 /*代表拦截全部。或者输入具体需要拦截的目录名-->
     <url-pattern>/*</url-pattern>
 <filter-mapping>

3.2通过注解配置
@WebFilter的配置
在以后的高版本的web项目中,不需要再对xml进行配置了,只需要写一个普通的java类实现Filter接口,对该类进行@WebFilter说明就可以。下面说一下如何对@WebFilter配置。
@WebFilter的常用属性
在这里插入图片描述
示例:

package com.Filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter(filterName = “MyFilter”,urlPatterns = {"/FilterServlet"})
public class MyFilter implements javax.servlet.Filter {
public void init(FilterConfig config) throws ServletException {
System.out.println(“过滤器的初始化init…”);
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println(“过滤器之前…”);
chain.doFilter(req, resp);
System.out.println(“过滤器之后…”);
}
public void destroy() {
System.out.println(“过滤器的销毁destroy…”);
}
}

在这里插入图片描述
在urlPatterns 后,需要过滤访问的代码。
1、可以在filter中根据条件决定是否调用chain.doFilter(request, response)方法, 即是否让目标资源执行
2、在让目标资源执行之前,可以对request\response作预处理,再让目标资源执行
3、在目标资源执行之后,可以捕获目标资源的执行结果,从而实现一些特殊的功能
doFilter()方法是对进行拦截, chain.doFilter(req, resp);之前的代码是请求之前执行的代码,之后的代码是响应的时候执行的代码;init()方法在服务器打开的时候执行,并且只执行一次;destroy()在服务器关闭的时候执行,并且只执行一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值