一. web过滤器的介绍

1.过滤器

在生活中,过滤这种我们时常可见;比如水资源的处理,化学药剂的提取等等。所谓过滤,就是指对某事物的处理进行一定的处理获取相应的结果的一个过程。它可以总结为下:

过滤源==>过滤规则==>过滤结果

过滤源:需要过滤的东西

过滤规则:对过滤东西的处理

过滤结果:经过过滤后所得的东西

2.web过滤器

过滤器在web中的应用定义

过滤器 是一个服务器端的组件,它可以截取用户端的请求和响应信息,并对这些信息过滤。

3.web过滤器的工作原理

在没有过滤器的情况下,用户的请求可以直接进行访问服务器web资源

没有过滤器的情况下

在存在过滤器的情况下,客户端的请求是不能直接访问服务器端web资源。

过滤器的具体工作原理:

过滤器的工作原理

过滤器在web程序启动的时候便会进行加载。用户发送请求并不是直接到web资源,而是先到过滤器;过滤器判断我们的请求是否合法、是否符合规则;符合规则后过滤器再将用户请求发送到web资源;web资源处理完信息响应到过滤器;过滤器再将web资源的响应发送给用户

3.web过滤器的生命周期

web的生命周期分为四种

过滤器的生命周期

实例化:在web程序启动的时候,通过web.xml文件中的配置去加载过滤器。只会实例化一次。

初始化:启动后,会进入到初始化。会调用init()方法加载初始化信息。只执行一次。

过滤:过滤器每次捕获到请求都会执行过滤方法doFilter()。可执行多次。

销毁:web容器关闭的时候执行destory()方法销毁过滤器对象。

4.web过滤器中的方法

init():过滤器的初始化方法,web容器创建过滤器实例后将调用这个方法,这个方法可以读取web.xml文件中过滤器的参数。

doFilter():这个方法完成实际的过滤操作,想过滤器的核心方法。当用户访问请求与过滤器关联的URL时,web容器将先调用过滤器的doFilter()方法。FilterChain参数可以调用chain.doFilter()方法,将请求传给下一个过滤器(或目标资源),或利用转发、重定向将请求转发到其他资源。

destroy():web容器在销毁过滤器实例前调用该方法,在这个方法中可以释放过滤器占用的资源。(大多数情况用不到)

二.过滤器简单案例

1.创建web项目。并创建一个类实现Filter接口

创建FirstFilter类

2.在web.xml中配置过滤器

Filter名字

Filter的完整类名称

描述信息

参数名称

参数的值

Filter名字

URL

注意:

filter-class:必须是类的全路径(即包括报名)

init-param:初始化参数,可以是零对或者多对

url-pattern:当用户请求的URL和指定的URL路径相匹配时,将触发过滤器工作

dispatcher:指定过滤器所拦截资源被Servlet容器调用的方式。可以使REQUEST,INCLUDE,FORWARD和ERROR之一,默认是REQUEST

我的配置

3.在类中写输出数据测试

在Filter的实现类中的方法中写入输出数据,在index.jsp中前面增加输出。方便之后看到过滤器执行耳朵顺序。

FirstFilter类

index.jsp文件

4.启动服务器,访问index.jsp页面

访问https://http://127.0.0.1:8080/Filter/后仔细观察运行结果

在tomcat服务器启动时执行了构造方法和init()方法

访问jsp页面时执行了doFilter方法

所以可以总结Filter实现类中方法的运行顺序为:

构造器==> init() ==> doFilter() ==>…………==> destroy()

在执行doFilter()方法时,chain.doFilter()方法将请求传给了index.jsp,最后才输出end……doFilter

面试题两点:

1.过滤器可以更改用户请求的路径

2.过滤器不能直接处理用户请求的数据,也不能直接返回数据

三.过滤器链

1.过滤器链

过滤器链:指针对一个用户请求,而根据路径所匹配到的过滤器有多个。这时候用户请求就会依次通过各个过滤器到达web资源。

2.过滤器链的执行顺序以及原理

服务器会按照web.xml文件中过滤器定义的先后顺序组装成一条过滤器链。通过doFilter()方法依次执行后面的过滤器直至所有过滤器执行完毕后访问到web资源。

过滤链的执行顺序及原理

java项目使用过滤器实例_Java web开发--过滤器篇(详细介绍)相关推荐

  1. java工程编辑器中文乱码_Java Web开发项目中中文乱码解决方法汇总

    Java Web项目中,解决中文乱码方法总结如下 第一种情况:调用jsp页面中文显示乱码问题描述:通过浏览器调用jsp页面,在浏览器中显示的中文内容出现乱码. 解决方法:首先确认本jsp在编辑器中保存 ...

  2. java web网站实例_Java Web开发: 基于HttpServlet的用户登录网站 实例

    2013-02-04 20:50 814人阅读 评论(0) 一个简单的小例子,基于httpservlet的用户登录(杂家是菜鸟刚接触javaee,只能从最简单出发了),首先看业务逻辑: 有三个文件组成 ...

  3. java项目如何设置导航_java web项目导航栏的制作

    导航栏的制作我采用的是Java当中css当中的内容,当菜单栏的菜单大于当前 的设置宽度和高度时溢出(overflow :hidden)隐藏,然后用伪类选择器 (hover)设置它当鼠标停留在该菜单项中 ...

  4. Java程序设计实训教程_Java程序设计实训教程--详细介绍

    第1章&nbsp&nbspJava语言基础 1.1&nbsp&nbsp背景知识 1.1.1&nbsp&nbspApplet与Application 1. ...

  5. ABAP项目砖家之旅-语法和开发对象篇

    ABAP项目砖家之旅-语法和开发对象篇 前言 一.基本语法 二.开发对象及其语法 1.底层数据类型 2.数据表.视图.数据元素.数据域.数据类型 1.1数据类型dataTypes 1.2数据域data ...

  6. php比较运算符案列,PHP实例:PHP比较运算符的详细介绍

    <PHP实例:PHP比较运算符的详细介绍>要点: 本文介绍了PHP实例:PHP比较运算符的详细介绍,希望对您有用.如果有疑问,可以联系我们. 比拟运算符种类 PHP实战如同它们名称所暗示的 ...

  7. iOS开发UI篇—简单介绍静态单元格的使用

    iOS开发UI篇-简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...

  8. 手摇刷式过滤器、Y型手摇刷式过滤器不锈钢304、316、316L详细介绍

    手摇刷式过滤器.Y型手摇刷式过滤器不锈钢304.316.316L详细介绍: Y型手摇刷式过滤器用于拦截水中的杂质,以净化水质或保护系统中其他设备的正常工作,是水的净化过程中不可缺少的处理手段之一. 手 ...

  9. java web tomcat 实例_Java Web应用开发实例

    [1.GIS的概念 1.1什么是gis 地理信息系统 (GIS, Geographic Information System) 是一种基于计算机的工具,它可以对在地球上存在的东西和发生的事件进行成图和 ...

最新文章

  1. linux笔记 第3天
  2. 美团产品顾问马占凯:关于育儿,你需要知道的一切
  3. 和大家谈谈数学模型之美
  4. Java快速开发框架LML简介
  5. [Java][内存模型]
  6. Excel Txt 字符集设置
  7. linux新建用户不显示,linux系统无法添加用户帐号的原因分析
  8. 二线城市,存款多少可以退休?
  9. spring集成redis cluster
  10. C#导入Excel报错问题3。
  11. Hive学习之Metastore及其配置管理
  12. DIV+CSS布局 - 弹性盒子布局
  13. 用Excel制作二维码
  14. [Photography] 还是DPP好!
  15. Bilibili缓存视频在电脑端直接打开方式
  16. Laravel快速创建统计图表
  17. Android Material-dialogs的使用(kotlin)
  18. sis最新ip地址2020入口一_2020云南高考成绩公布时间最新 云南高考查成绩方式入口大全...
  19. C/C++中的函数参数传递机制 作者:杨宁 发布时间:2000/11/30
  20. 软件测试的系统代码,软件测试工程师管理系统代码

热门文章

  1. linux c size_t ssize_t 简介
  2. metasploit快速入门(二)收集信息
  3. Nmap用法的思维导图
  4. qemu虚拟机与外部网络的通信
  5. VS中编译64位程序以及遇到的问题(E0000235)
  6. 编程之美2.14 求数组的子数组之和的最大值
  7. Linux基本命令之vi
  8. 删除svn同步文件目录
  9. ubuntu mysql5.6 编译安装_Ubuntu14.04编译安装mysql5.6.26
  10. linux下postgresql服务,Linux下PostgreSQL数据库安装、配置与日常服务管理