本文主要介绍java过滤器的链式过滤器链。在发送请求时,如果有不符合的信息,就会被过滤器拦截,如果有,就会被释放。有兴趣可以过来学习。
1、什么是过滤器?
在客户端到服务器的过程中,当发送请求时,任何不符合的信息都会被filter拦截,如果符合,就会被释放。当服务器响应客户端时,也会做出判断。如果不一致,将被过滤器拦截,如果一致,将被释放。
OOP:Java面向对象编程,抽象,封装,继承和多态。
AOP:面向方面编程。过滤器是一种面向方面的编程思想。
AOP是sun公司的srvlet2.3版本2.3之后推出的新功能。2.3之前的版本没有这个功能。定义一个过滤器需要实现)过滤器接口,就是javax.servlet.Filter
过滤器是在服务器上运行的程序,在servlet或JSP页面之前运行。过滤器可以附加到一个或多个servlet或JSP页面,并且可以检查进入这些资源的请求的信息。之后,过滤器可以做出以下选择:
以常规方式调用资源(即调用servlet或JSP页面)。
使用修改后的请求信息调用资源。
调用资源,但在向客户端发送响应之前对其进行修改。
停止调用该资源,转到其他资源,返回特定的状态代码或生成替代输出。
2、过滤器的生命周期:
在项目开始时,过滤器被初始化,当请求到来时doFilter方法被自动执行,当项目关闭时过滤器开始停止。
3、过滤器有什么用?
过滤器的主要作用是过滤请求,可以被web服务器管理的所有web资源拦截,如JSP、Servlet、静态图片文件或静态HTML文件,从而实现一些特殊的功能,如URL级别的权限控制、敏感词的过度考虑、响应信息的压缩等高级功能。
4、该怎么用?
你可以写多个Servlet,从用户那里访问——第一过滤器3354第二过滤器——》Servlet。
过滤器的生命周期:它是在项目开始时创建的。当访问该地址时,调用doFilter方法,该方法将被多次执行,并随着项目的关闭而被销毁。
调用doFilter方法时有三个参数:
EST (Servlet请求)——“HTTP Servlet Request”(注意,在使用HTTP Servlet请求的唯一方法时是强制转向的)
Response(Servlet Response)——“HttpServletResponse”(注意,在使用HTTP Servlet Response的唯一方法时是强制打开的)
filterchain链可以指向下一个地址(如果有过滤器,则指向下一个过滤器,但不指向资源Servlet)进行过滤、拦截和释放。
chain.doFilter(req,resp);//释放
ChainFilter链:
它可以指向下一个资源。如果有过滤器,它将继续下一次过滤。如果没有过滤器,它将指向资源(servlet)。
filter应用场景:
(1).为所有Servlet设置代码。
(2)设置跨领域问题
(3)解决防盗链的所有问题。
使用过滤器的时候需要配置的文件:
(1)固定地址
(2)通配符
(3)指定目录。
过滤器代码奉上:
打包servlet
导入javax . servlet . *;
导入javax . servlet . annotation . web servlet;
导入javax . servlet . http . http servlet request;
导入javax . servlet . http . http servlet response;
导入Java . io . io exception;/**
* urlPattern={'/*'}获取所有servlet的映射路径,实现不同servlet之间的交互。
*/
@WebServlet(name='DemoFilter ',urlPatterns={'/*'})
公共类DemoFilter实现筛选器{
/**
*过滤器的初始化方法
* @param filterConfig可以获取部署描述符文件(web.xml)中分配的过滤器的初始化参数。
* @抛出ServletException
*/
@覆盖
公共void init(filter config filter config)引发ServletException {
system . out . println(' filter created ');
}/**
*
* @param servletRequest请求
* @param servletResponse响应
* @param filterChain链来阻塞和释放过滤器。
* @抛出IOException
* @抛出ServletException
*/
@覆盖
公共void do过滤器(servlet请求servlet请求,servlet响应servlet响应,FilterChain filterChain)引发IOException,ServletException {
System.out.println('过滤器被执行了');
servlet响应。设置内容类型(' text/html,charset=utf-8 ');
http servlet请求request=(http servlet请求)servlet请求;
http servlet响应response=(http servlet响应)servlet响应;
回应。添加头(' Access-Control-Allow-Origin ',' * ');
字符串referer=request。获取标头(“referer”);
系统。出去。println(referer);
过滤器链。do过滤器(servlet请求,servlet响应);//放行
} @覆盖
public void destroy() {
System.out.println('过滤器被销毁了');
}
}
到此这篇关于Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)过滤器中过滤器的链式过滤器过滤链的文章就介绍到这了,更多相关Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)过滤器过滤器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。