Java Servlet和Java Filter简介
一:简介servlet
1.什么是Servlet?
Servlet可以通过多种方式进行描述,具体取决于上下文:
(1)Servlet是一种用于创建web应用程序的技术
(2)Servlet是一个API,提供许多接口和类。
(3)Servlet是一个扩展服务器功能并响应传入请求的类。
(4)Servlet是一个web组件,部署在服务器上用于创建动态web页面。
(5)Servlet是一个必须实现的接口,用于创建任何Servlet。
一个servlet的核心是一个java类; 它可以处理HTTP请求。servlet是一种Java编程语言类,用于扩展托管通过请求 - 响应编程模型访问的应用程序的服务器的功能。尽管servlet可以响应任何类型的请求,但它们通常用于扩展Web服务器托管的应用程序。对于此类应用程序,Java Servlet技术定义了特定于HTTP的servlet类。
2.Servlet生命周期
servlet的生命周期由部署了servlet的容器控制。当请求映射到servlet时,容器执行以下步骤。
>>如果servlet的实例不存在,则为Web容器
>>调用服务方法,传递请求和响应对象
init(),service()和destroy()是Servlet生命后期的核心,他们由每个Servlet实现,在特定时间由服务器调用。
(1)在servlet 生命周期的初始化阶段,Web容器通过调用init()方法初始化servlet实例,并传递实现该javax.servlet.ServletConfig接口的对象。此配置对象允许servlet 从Web应用程序访问名称 - 值初始化参数。
(2)初始化之后,servlet实例可以为客户端请求提供服务。每个请求都在自己独立的线程中提供服务。Web容器service()为每个请求调用servlet 的方法。该service()方法确定正在进行的请求的类型,并将其分派给适当的方法来处理请求。servlet的开发人员必须为这些方法提供实现。如果对servlet未实现的方法发出请求,则调用父类的方法,通常会导致向请求者返回错误。
(3)最后,Web容器调用destroy()使servlet停止服务的方法。这个destroy()方法init()在servlet的生命周期中只调用一次
3.图解Java Servlet


二:过滤器(Filter)
FIlter是一个对象,可以将转换一个请求或响应的包头和内容,过滤器与Web组件的不同之处在于过滤器通常不会自行创建响应。相反,过滤器提供可以“附加”到任何类型的Web资源的功能。因此,过滤器不应该对作为过滤器的Web资源有任何依赖性; 这样,它可以由多种类型的Web资源组成。
过滤请求响应
1.Filter主要任务是:
查询请求并采取相应措施。
阻止请求和响应对进一步传递。
修改请求标头和数据。您可以通过提供请求的自定义版本来完成此操作。
修改响应标头和数据。您可以通过提供自定义版本的响应来完成此操作。
与外部资源互动。
过滤器的应用包括身份验证,日志记录,图像转换,数据压缩,加密,标记化流,XML转换等。你可以按特定顺序配置由一个零个,一个或多个过滤器链过滤的Web资源。在部署包含组件的Web应用程序时指定此链,并在Web容器加载组件时实例化该链。
2.dofilter方法主要作用
检查请求标头。
如果过滤器希望修改请求标头或数据,请自定义请求对象。
如果过滤器希望修改响应标头或数据,请自定义响应对象。
调用过滤器链中的下一个实体。如果当前过滤器是链中以目标Web组件或静态资源结束的最后一个过滤器,则下一个实体是链末尾的资源; 否则,它是WAR中配置的下一个过滤器。过滤器通过调用链对象上的doFilter方法调用下一个实体,传入它所调用的请求和响应,或者它可能创建的包装版本。或者,过滤器可以选择通过不调用调用下一个实体来阻止请求。在后一种情况下,过滤器负责填写响应。
在调用链中的下一个过滤器后检查响应头。
抛出异常以指示处理中的错误
3.指定过滤器映射
Web容器使用筛选器映射来决定如何将筛选器应用于Web资源。筛选器映射按名称将筛选器与Web组件匹配,或按URL模式匹配Web资源。按照过滤器映射出现在WAR的过滤器映射列表中的顺序调用过滤器。
Filter-to-Servlet映射图:

参考链接:
https://www.oracle.com/technetwork/java/filters-137243.html
https://docs.oracle.com/javaee/6/tutorial/doc/bnagb.html
https://www.javaworld.com/article/3313114/what-is-a-java-servlet-request-handling-for-java-web-applications.html
https://en.wikipedia.org/wiki/Java_servlet
Java Servlet和Java Filter简介的更多相关文章
- Java Servlet与Web容器之间的关系
自从计算机软件开发进入网络时代,就开始涉及到通讯问题.在客户/服务器(也叫C/S应用)时期,每个软件都有自己的客户端和服务器端软件.并且客户端和服务器端之间的通讯协议差别也很大.后来随着互联网的发展, ...
- Java Servlet与Applet、CGI、JSP的比较
Java Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面. Java Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启 ...
- 使用jquery 的ajax 与 Java servlet的交互
由于是使用jquery的 所以别忘记导入jq 下面是jsp文件 <%@ page language="java" contentType="text/html; c ...
- ABAP SICF服务和Java Servlet的比较
In my opinion ABAP ICF handler and Java Servlet play the same role in enhancement which enables your ...
- [原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Java Servlet 技术简介
Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么 ...
- 【Java】Java Servlet 技术简介
Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么,它们是如何工作的,如何使用它们来创 ...
- 【Servlet】Java Serlvet Filter 过滤器
Filter的设计思想Filter是一种AOP(aspect-oriented programming)的设计思想 : 面向切面编程.用于的请求和响应都会走 使用filter的登录案例我们通过一张图片 ...
- Java Servlet (1) —— Filter过滤请求与响应
Java Servlet (1) -- Filter过滤请求与响应 版本: Java EE 6 参考来源: Oracle:The Java EE 6 Tutorial: Filtering Reque ...
随机推荐
- 估计量|估计值|矩估计|最大似然估计|无偏性|无偏化|有效性|置信区间|枢轴量|似然函数|伯努利大数定理|t分布|单侧置信区间|抽样函数|
第二章 置信区间估计 估计量和估计值的写法? 估计值希腊字母上边有一个hat 点估计中矩估计的原理? 用样本矩来估计总体矩,用样本矩的连续函数来估计总体矩的连续函数,这种估计法称为矩估计法.Eg:如果 ...
- Window RabbitMq安装
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...
- Rails render collection 的魔法
都知道的, 在 Rails 的 View 里边渲染集合的时候, 会用到 render 方法参数的 collection 选项 1 <%= render partial: "produc ...
- 吴裕雄--天生自然 JAVA开发学习:数据结构
import java.util.Vector; import java.util.Enumeration; public class EnumerationTester { public stati ...
- ZZJ_淘淘商城项目:day04(淘淘商城03 - 前台系统搭建、实现、内容管理系统实现)
1. 今日大纲 1. 实现商品的编辑 2. 实现商品的规格参数功能 3. 搭建前台系统 4. 实现首页商品类目的显示 2.2.4. 未实现TODO 编辑时图片回显: 思路: 1. 查 ...
- 尝试brpc来升级rpc服务,测试应用过程
照着官方文档来,不过在mac下还是有些小坑 对熟悉c++的人来说很小儿科,但对c++相对比较外行 (只知道基本语法和部分数据结构)的人,还是作不到开箱即用 首先编译```If you need to ...
- [HDU多校]Ridiculous Netizens
[HDU多校]Ridiculous Netizens 点分治 分成两个部分:对某一点P,连通块经过P或不经过P. 经过P采用树形依赖背包 不经过P的部分递归计算 树型依赖背包 v点必须由其父亲u点转移 ...
- Error running Tomcat8: Address localhost:1099 is already in use(IDEA错误)
Error running Tomcat8: Address localhost:1099 is already in use(IDEA错误) 有时候运行web项目的时候会遇到 Error runni ...
- static及final知识点整理
final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译 ...
- 使用mui框架开发App,当input获取焦点时,键盘弹出,底部导航栏上升。
转自 https://blog.csdn.net/elementFei/article/details/72917393 感谢 问题: 使用mui框架开发App,当input获取焦点时,键盘弹出,底部 ...