理解Servlet
题记:框架横行,似乎已经忘记JavaWeb最基础Servlet是如何工作的,这也是为什么要写这篇文章。
Servlet是Java语言应用到Web的扩展技术,是运行在Web应用服务器上的Java程序。与普通的Java程序不同的是它可以对Web浏览器或其他HTTP客户端程序发送的请求进行处理。是位于服务器内部的服务器端的Java应用程序。
核心API类关系
Servlet接口:
public void init(ServletConfig config);Servlet初始化后,Servlet容器调用此方法来完成初始化工作。
public void service(ServletRequest request, ServletResponse response)此方法用户处理客户端请求
public void destroy();当Servlet对象应该从Servlet容器移除的时,容器调用此方法,释放资源。
public ServletConfig getServletConfig();用于获取Servlet对象的配置信息,返回ServletConfig对象。
public String getServletInfo(); 返回有关Servlet信息,纯文本的字符串,如作者,版本等。
GenericServlet抽象类
这个类实现了除Service()外的其他所有方法。
HttpServlet抽象类
对GenericServlet类进行了泛化,实现了Service()方法。
HttpServletRequest接口和HttpServletReponse接口
接口方法省略
ServletConfig接口
这个接口封装了Servlet初始化参数信息,接口方法已经由GenericServlet抽象类实现
public String getInitParameter(String name)此方法返回String类型名称为name的初始化参数
public Enumeration getInitParameterNames()获取所有初始化参数名的枚举集合
public ServletContext getServletContext()用于获取Servlet上下文对象
public String getServletName()返回Servlet对象的实例名
Servlet生命周期
1.初始化阶段
1.1客户请求Servlet服务或当Web服务启动的时候,容器环境加载一个Servlet类
1.2Servlet容器创建一个ServletConfig对象,用于配置Servlet初始化信息
1.3Servlet容器创建一个Servlet对象
1.4Servlet容器调用Servlet对象的init()方法进行初始化,并且给init()方法传入一个ServletConfig对象。
2运行时阶段
随时响应客户端请求,收到要求访问特定Servlet的客户请求后,容器针对这个请求创建ServletRequest对象和ServletResponse对象,然后调用Servlet对象的service()方法,容器把Servlet生成的响应结果发送个客户后,容器就会销毁ServletRequest对象和ServletResponse对象。
3销毁阶段
Web容器被终止时,Servlet容器会调用Web应用中的所有Servlet对象的destroy()方法,然后销毁这些Servlet对象。
Servlet过滤器
filter接口
定义过滤器需要实现此接口
pubic void init(FilterConfig filterConfig) 过滤器的初始化方法,容器调用此方法完成过滤的初始化操作。
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)与Servlet的service()方法类似,请求及响应交给过滤器时,过滤器调用此方法处理。
FilterChain接口
接口由容器实现
void doFilter(ServletRequest request,ServletResponse response) throws IOException,ServletException 将请求或响应交给下一个过滤器对象。
FilterConfig接口
此接口由容器实现,获取过滤器初始化期间的参数信息
public String getFilterName() 返回过滤器的名称
public String getInitParameter(String name) 返回初始化名称为name的参数值
public Enumeration getInitParamterNames() 返回初始化参数名的枚举集合
public ServletContext getServletContext() 返回Servlet的上下文对象
参考:
理解Servlet的更多相关文章
- 详细理解servlet实现的几种方式和生命周期
现在很多的开发都是用的框架,然后很多同学学习的时候又是直接接触的框架,对于底层的一些开发,完全没有任何的了解.虽然对于业务上面来说,没有什么问题.但是很多时候当你被面试问到,或者是想要了解框架底层原理 ...
- 详细理解servlet实现的三种方式和生命周期
阅读目录 开发servlet的三种方式 理解实现servlet接口的方式,理解servlet生命周期 Servlet接口有五个方法 继承GenericServlet 继承HttpServlet 现在很 ...
- 理解Servlet过滤器 (javax.servlet.Filter)
过滤器(Filter)的概念 过滤器位于客户端和web应用程序之间,用于检查和修改两者之间流过的请求和响应. 在请求到达Servlet/JSP之前,过滤器截获请求. 在响应送给客户端之前,过滤器截获响 ...
- 深入理解Servlet原理
Servlet介绍: 1. 如何返回一个网页: a. 静态网页 >新闻页.百度百科 >服务器保存一份HTML,直接返回给浏览器即可 b. 动态网页 >淘宝.QQ空间.微博 >服 ...
- 利用Javaweb应用中六种属性范围,来理解Servlet的并发问题
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6513748225550189060/ Web应用中有六种属性范围: (1) 局部变量 (2) 实例变量 (3) 类 ...
- 理解Servlet及其对象
一.ServeltConfig对象 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为Servlet配置一些初始化参数.而不当Servlet配置了初始化参数后, ...
- 以登录实现理解Servlet+jsp+JavaBean开发
写在前面:菜鸟拙见,望请纠正 学过servlet的都知道,书本上一直说servlet一直作为控制器使用,它不实现view层,也不做具体的事务处理,那servlet到底是干什么的哪?怎么合理的用它呐?? ...
- Servlet深入学习,规范,理解和实现(中)——深入理解Tomcat(一)
心得:在写这篇博客之前.我大致阅读一些关于Tomcat的书籍和博客等资料.有些资料由于时间的关系,解说的Tomcat版本号太老.有些资料能够非常好的说明Tomcat整理结构和设计思想可是非常多重要的问 ...
- 异步Servlet的理解与实践
AsyncContext理解 Servlet 3.0(JSR315)定义了Servlet/Filter的异步特性规范. 怎么理解"异步Servlet/Filter"及其使用情景? ...
随机推荐
- Nginx教程(二) Nginx虚拟主机配置 (转)
Nginx教程(二) Nginx虚拟主机配置 1 虚拟主机管理 1.1 Nginx管理虚拟主机 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主 ...
- Vagrant-安装教程及常见问题
http://ju.outofmemory.cn/entry/346215 前言: Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境. 它的主要意义是让所有开发人员都使用和线上服务 ...
- 【7.18总结】KM算法
先贴代码,参考博客来源于:https://blog.csdn.net/zyy173533832/article/details/11519291#commentBox 例题:HDU 2255 题意:n ...
- Directx11学习笔记【九】 3D渲染管线
原文:Directx11学习笔记[九] 3D渲染管线 原文地址:http://blog.csdn.net/bonchoix/article/details/8298116 3D图形学研究的基本内容,即 ...
- thinkphp5.0 composer安装phpmailer
1.安装:composer require phpmailer/phpmailer 2.引入:use PHPMailer\PHPMailer\PHPMailer: 3.调用:$mail = new P ...
- Python 官方文档:入门教程
https://pythoncaff.com/docs/tutorial/3.7.0 官方入门教程,从这里开始你的 Python 之旅,将长久维护 基础信息 翻译说明 关于本教程 已完成 正文 1. ...
- 19-1 djanjo中admin的简单用法
1. 创建管理员账号 python3 manage.py createsuperuser 2. 在admin注册我们的表 在app目录下面的admin.py里面按以下语法注册 admin.site.r ...
- 【学生研究课题】CSDN博客数据获取、分析、分享
题记 这次<对象程序设计>课程设计,一共给定了8个选题(下载WORD版.PDF版),以及自由选题的机会.从大家初步选题结果来看(图1).绝大部分同学选择了"图形用户界面的 ...
- HSV 和 HLS颜色空间
颜色空间 颜色空间是特定的颜色组织:它提供了将颜色分类,并以数字图像表示的方法. RGB 是红绿蓝颜色空间.你可以将其视为 3D 空间,在这种情况下是立方体,其中任何颜色都可以用 R.G 和 B 值的 ...
- H3C IP 地址格式和表示方法