糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 什么是过滤器?什么时候使用过滤器?如何使用过滤器?过滤器的原理?

什么是过滤器?什么时候使用过滤器?如何使用过滤器?过滤器的原理?

时间:2023-10-13 21:23:07

相关推荐

什么是过滤器?什么时候使用过滤器?如何使用过滤器?过滤器的原理?

一、什么是过滤器?

含义:用于拦截数据源和目的数据之间的消息,并且过滤二者之间的传递的数据

举例:比如过滤某一个格式的文件,然后对这个文件做一些修改

二、什么时候要用到过滤器?

1、 认证过滤:对用户的请求进行统一认证

2、登陆和审核过滤:对用户的访问请求进行记录和审核

3、图像转换过滤

4、数据压缩过滤

当然还有:

1、 过滤字符编码

2、 进行网站访问人数的统计

三、如何使用过滤器?

1、首先需要在web.xml中进行配置

<filter><display-name>Afilter</display-name><filter-name>Afilter</filter-name><filter-class>过滤器类所在的全路径 </filter-class></filter><filter-mapping><filter-name>Afilter</filter-name><url-pattern>/*</url-pattern><!-- 拦截所有请求 --></filter-mapping>

2、然后直接编写一个实现过滤器接口的类,就是一个过滤器

例如:如下是统计某一个网站被访问的次数的代码

package com.kgc.filter;import java.io.IOException;import java.util.Map;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class Afilter implements Filter {FilterConfig fConfig;public void destroy() {// TODO Auto-generated method stub }public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {//获得与天地同寿的applicationServletContext app = fConfig.getServletContext();//取出application中的mapMap<String,Integer> map = (Map<String, Integer>) app.getAttribute("map");//获取访问者的ipString ip = request.getRemoteAddr();//判断这个ip是否曾经来过if(map.containsKey(ip)){//来过,次数加1Integer count = map.get(ip);count+=1;map.put(ip, count);}else{//没来过,次数赋值为1map.put(ip, 1);}//map再次存到application中app.setAttribute("map", map);chain.doFilter(request, response);//放行 }public void init(FilterConfig fConfig) throws ServletException {this.fConfig=fConfig;}}

理解:

实现了Filter接口的类,需要实现三个方法,分别是init、doFilter、destroy

1、init方法:用于过滤器的初始化

2、doFilter方法:用于对请求进行过滤处理

3、destory方法:用于销毁方法用于释放资源

其中,doFilter方法有三个参数,分别是:ServletRequest request, ServletResponse response, FilterChain chain

四、这三个参数分别有什么用?

1、request对象用于获取请求

2、response对象用于在调用chain.doFilter(request, response);时传入

3、chain对象就是用来调用doFilter方法的。

FilterChain接口中只有一个方法,就是doFilter(request, response),用于将过滤后的请求传递给下一个过滤器,如果当前过滤器就是最后一个过滤器,那么就把请求传递给目标资源。

五、如何读取配置文件中的初始化参数?

FilterConfig接口中定义的getInitParameter方法,可以用于读取配置文件,在init方法中使用

public void init(FilterConfig fConfig) throws ServletException {String encoding = fConfig.getInitParameter("encoding");}

六、过滤器是如何运行的?

前文提到的在web.xml中配置好了拦截的请求路径,访问该路径,然后请求被发送到对应的过滤器进行处理

如果觉得《什么是过滤器?什么时候使用过滤器?如何使用过滤器?过滤器的原理?》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。