Tomcat学习笔记(二)—— 一个简单的Servlet容器

1、简介:Servlet编程是通过javax.Servlet和javax.servlet.http这两个包的类和接口实现的,其中javax.servlet.Servlet接口至关重要,所有的Servlet必须实现该接口或者继承实现了该接口的类。

2、Servlet接口有5个方法:

public void init(ServletConfig config) throws ServletException;

public void service(ServletRequest request, ServletResponse response) throes ServletException, IOException;

public void destroy();

public ServletConfig getServletConfig();

public String getServletInfo();

3、Servlet声明周期方法:init、service、destroy

(1)init:在Servlet类已经初始化之后,init方法会被servlet容器调用。init方法只被调用一次,表示servlet已经被加载进服务中了。init方法必须在servlet可以成功接收任何请求之前成功运行完毕。servlet程序员可以通过覆盖这个方法来写仅仅需要运行一次的初始化代码,例如架子啊数据库驱动,值初始化等。在其他情况下,该方法是空的。

(2)Servlet,servlet容器给servlet容器调用service方法,该方法接收一个ServletRequest参数和一个ServletResponse参数,Servlet Request对象用于向servlet中传递客户端的请求参数,ServletResponse对象则负责封装Servlet响应。在servlet生命周期中,service()方法会被调用多次。

(3)Destroy,用于从服务器中移除一个servlet实例,通常使用在servlet容器正在关闭或者servlet容器需要一些空闲内存时,仅仅在所有servlet容器的service方法已经退出或者超时淘汰的时候,这个方法才被调用。在servlet容器已经调用完destroy方法之后,在同一个servlet里将不会再调用service方法,destroy方法提供了一个机会来清理任何已经被占用的资源,例如内存,文件句柄和线程,并确保任何持久化状态和servlet的内存当前状态是同步的。

4、Servlet容器针对每个servlet的HTTP请求的工作过程

(1)第一次调用servlet的时候,加载该servlet类并调用servlet的init方法(仅仅一次)

(2)对每次请求,构造一个javax.servlet.ServletRequest实例和一个javax.servletServletResponse实例。

(3)调用servlet的service方法,同时传递ServletRequest和ServletResponse对象。

(4)当servlet类被关闭时,调用servlet的destroy方法并卸载srvlet类。

时间: 2024-11-11 12:34:45

Tomcat学习笔记(二)—— 一个简单的Servlet容器的相关文章

how tomcat works 读书笔记(二)----------一个简单的servlet容器

app1 (建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/article/details/39378157) 回顾我们上一章,我们开发了一个最最简单的web服务器,它可以使用户访问服务器内的静态资源.当然这是远远不够的,在这一节里,我们就试着让服务器在能相应静态资源的基础上继续支持servlet. servlet接口 javax.servlet.Servlet接口

Servlet学习教程(三)---- 一个简单的Servlet例子

我们用个最简单的Servlet例子来解说一下Servlet简单配置以及Servlet类实现类的写法. 第一,我们新建一个Dynamic Web Project,起名Servlet 点击NEXT,设置Default output folder 为Servlet/WebContent/WEB-INF/classes 第二,创建一个包,包名为Servlet,然后创建一个类名为WelcomeServlet类.(Servlet类当然缺少不了Servlet容器,请注意你的开发软件是否已经集成Servlet容

Android学习笔记——创建一个简单的上下文菜单ContextMenu

例子目标: 在一个显示出来的内容区域内,触摸屏幕显示一个上下文菜单,并且实现监听,当选择菜单项的时候,获得用户选择的项的内容. 实现原理: 1.向内容Activity中的需要显示上下文菜单的内容区域注册上下文菜单响应 2.设计上下文菜单样式 3.在Activity中实现上下文菜单的方法 代码: 上下文菜单的XML内容 <?xml version="1.0" encoding="utf-8"?><menu xmlns:android="ht

Xmemcached学习笔记二(简单使用)

首先说一下XMemcached我们简单使用时主要是做了什么事情: 当我们使用XMemcached的时候主要是用了XMemcachedClient的对象来进行插入,查找和删除缓存数据. 但是我们不采用XMemcachedClient memcachedclient=new XMemcachedClient():的方式来获取XMemcachedClient对象. 为什么呢,因为XMemcachedClient这个类里面并没有任何的参数设置,如设置分布策略,服务地址等,都没有,没有这些我们最起码的插入

Python学习笔记二:简单的if条件判断

下面是一个简单的if循环程序: 1 age_konishi = 23 #赋值给变量 2 guess_age = int(input("Age: ")) #定义输入字符类型 3 4 if guess_age == age_konishi: #开始判断 5 print("Yoshi! Sweetie, you're awesome!") 6 elif guess_age > age_konishi: 7 print("Idiot! I'm not tha

深入剖析Tomcat-第二章:一个简单的servlet容器(2)

内容:在上一篇中存在一些安全问题,因为我们需要将request和response想上转型为ServletRequest和ServletResponse,了解这个servlet容器内部工作原理的servlet程序员可以将ServletRequest和ServletResponse分别向下转型然后就能调用Request和Response的parse()和sendStaticResource()了.所以我们需要利用外观类来解决,添加两个RequestFacade和ResponseFacade,然后分别

一个简单的Servlet容器实现[一]

上篇写了一个简单的Java web服务器实现,只能处理一些静态资源的请求,本篇文章实现的Servlet容器基于前面的服务器做了个小改造,增加了Servlet请求的处理. 程序执行步骤 创建一个ServerSocket对象: 调用ServerSocket对象的accept方法,等待连接,连接成功会返回一个Socket对象,否则一直阻塞等待: 从Socket对象中获取InputStream和OutputStream字节流,这两个流分别对应request请求和response响应: 处理请求:读取In

2.一个简单的Servlet容器

很显然Http服务器会按照Http协议对获取的请求进行分析并返回规定的信息,通过对Http的理解,java大叔将其返回的信息封装成一个类,称为Servlet,至此,Http服务器在Java中就变成了按照Http协议对获取的请求进行分析并返Servlet,很明显,Http服务器在这里也就变为了Servlet容器...    注:服务器是什么?理解万岁...

攻城狮在路上(肆)How tomcat works(二) 一个简单的servlet容器

该节在上一节的基础上增加了所谓对静态资源和动态资源访问的不同控制流程.示例里面采用的是对路径“/servlet/”进行了特殊处理. 一. 主要还是从HttpServer1中的main方法开始,先解析出Request和Response对象,然后如果请求路径中包含/servlet/路径的话, 就进入ServletProcesser1进行处理,否则就进入StaticProcessor进行处理. 在ServletProcessor1中,对Request和Response进行了封装,通过URLClassL