一:简介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简介的更多相关文章

  1. Java Servlet与Web容器之间的关系

    自从计算机软件开发进入网络时代,就开始涉及到通讯问题.在客户/服务器(也叫C/S应用)时期,每个软件都有自己的客户端和服务器端软件.并且客户端和服务器端之间的通讯协议差别也很大.后来随着互联网的发展, ...

  2. Java Servlet与Applet、CGI、JSP的比较

    Java Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面. Java Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启 ...

  3. 使用jquery 的ajax 与 Java servlet的交互

    由于是使用jquery的 所以别忘记导入jq 下面是jsp文件 <%@ page language="java" contentType="text/html; c ...

  4. ABAP SICF服务和Java Servlet的比较

    In my opinion ABAP ICF handler and Java Servlet play the same role in enhancement which enables your ...

  5. [原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. Java Servlet 技术简介

    Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么 ...

  7. 【Java】Java Servlet 技术简介

    Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么,它们是如何工作的,如何使用它们来创 ...

  8. 【Servlet】Java Serlvet Filter 过滤器

    Filter的设计思想Filter是一种AOP(aspect-oriented programming)的设计思想 : 面向切面编程.用于的请求和响应都会走 使用filter的登录案例我们通过一张图片 ...

  9. Java Servlet (1) —— Filter过滤请求与响应

    Java Servlet (1) -- Filter过滤请求与响应 版本: Java EE 6 参考来源: Oracle:The Java EE 6 Tutorial: Filtering Reque ...

随机推荐

  1. Python列出文件夹中的文件

    几乎所有的关于操作系统的内容可以在python 官方文档中找到:https://docs.python.org/3/library/os.html#module-os 其中os.path被单独列出:h ...

  2. Perl:理解正则中“.”可匹配出回车符(“\n”)外任意字符的例子,配合 $^I 关键字

    要把下面文件的内容改了, Program name: graniteAuthor: Gilbert BatesCompany: RockSoftDepartment: R&DPhone: +1 ...

  3. Sqlite教程(4) Activity

    之前我们已经有了DbHelper.Data Access Object.Configuration. 那麽现在就是由Activity去创建它们,然後就可以存取Sqlite. 架构图表示了它们的关系. ...

  4. Hibernate基础数据类型

    Java数据类型 Hibernate数据类型 byte,java.lang.Byte byte short,java.lang.Short short int,java.lang.Integer in ...

  5. 用windows下的Anaconda搭建Django虚拟环境

    Django 是一个Python定制框架,可用于简便.快速的开发数据库驱动的web站点. 要使用Django,首先要建立一个虚拟工作环境. 那么,为什么要搭建虚拟环境呢?我们来看以下的开发场景: 假设 ...

  6. cas sso单点登录 登录过程和登出过程原理说明

    CAS大体原理我就不说了,网上一大把,不过具体交互流程没说清楚,所以有这篇文章,如果有错误,请多多指教 登录过程 用户第一次访问一个CAS 服务的客户web 应用时(访问URL :http://192 ...

  7. 03-Java的基础语法

    一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的 ...

  8. struts.xml中namespace的配置之浏览器兼容性

    还是做练习项目的时候发现一个问题: <span style="font-size:14px;"><package name="default" ...

  9. 2010提高组-C]关押罪犯(扩展域并查集

    题:https://www.cometoj.com/problem/0073 #include<bits/stdc++.h> using namespace std; ; struct n ...

  10. VisionPro和Halcon的详细对比

    一.概括的对比 1.1  Halcon的优势 Halcon有着更加低廉的Lisence 1.并且提供更好.更强大的2D和3D的视觉软件库 2.Halcon支持的视觉图像采集设备数量是Visionpro ...