聊聊Servlet的知识点以及工作原理

本文详细介绍了Servlet的概念及其实现方式,包括其在Java中的定义、核心API的继承关系、生命周期管理及与JSP的关系等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

谈起servlet,我们在想什么?

当我们谈起servlet,我们在想些什么?service+let,顾名思义它是一个能够提供服务的类,在Java里面,它是怎么定义的呢?Java把它刻画为一个用Java写的服务器端程序。我们要let it在服务器上给我service。那么它能提供什么样的service呢?Java也说了,它主要功能在于交互地浏览和修改数据,生成动态的Web内容

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。谈到这里,就顺便看一下servlet的类继承关系什么样的。

Servlet核心API及其继承关系

HttpServlet  ——>  GenericServlet

由这个表可以看出,我们一般使用的Servlet是来自于HttpServlet生成的,换句话说,这个Servlet类针对http协议进行了封装,使其能够顺利的在此协议下工作。我们来看一下该类下的方法:

1. doDelete() for HTTP DELETE requests

2. doPut() for HTTP PUT requests

这两个方法至今我还不明白有什么现实意义的用法,除了覆盖他们,实现自己的功能。但是扎个在doPost()和doGet()方法里面都能做,所以留作一个未知吧。

3. doOptions()返回当前servlet支持的HTTP方法。

4.doPost和doGet这两种提交表单的方法的讨论已经汗牛充栋了,关于其区别在我的这篇博客里面也有详细的提到。

HttpServlet类各个方法的调用顺序

其实关于怎么调用,你自己写多了就知道熟悉了,这里还是啰嗦两句。

首先调用Service方法,再根据请求信息,调用具体的getGet或doPost等方法。

由于Servlet是运行在多线程的服务器,所有需要特别处理并发共享的资源。为什么?因为Servlet不是线程安全的。所以这也是Tomcat的一个巨大的优点之一。

每个Servlet都需要实现Servlet接口。GenericServlet是一个通用的,不特定于协议(所以你可以针对特定的协议覆盖这个类的方法)Servlet,其实现了Servlet接口,而HttpServlet继承与GenericServlet,实现了域HTTP协议相关的操作,所以我们定义的Servlet只需要直接继承HttpServlet即可

Servlet的生命周期

当servlet被部署在应用服务器中(应用服务器中用于管理Java组件的部分被抽象成为容器)以后,由容器控制servlet的生命周期除非特殊指定,否则在容器启动的时候,servlet是不会被加载的,servlet只会在第一次请求的时候被加载和实例化。servlet一旦被加载,一般不会从容器中删除,直至应用服务器关闭或重新启动。但当容器做内存回收动作时,servlet有可能被删除。也正是因为这个原因,第一次访问servlet所用的时间要大大多于以后访问所用的时间

servlet在服务器的运行生命周期为,在第一次请求(或其实体被内存垃圾回收后再被访问)时被加载并执行一次初始化方法,跟着执行正式运行方法,之后会被常驻并每次被请求时直接执行正式运行方法,直到服务器关闭或被清理时执行一次销毁方法后实体销毁。

补充:可以在这篇博文中进一步巩固一下servlet基础知识。

JSP与Servlet的关系

Java服务器页面(JSP)是HttpServlet的扩展。由于HttpServlet大多是用来响应HTTP请求,并返回Web页面(例如HTMLXML),所以不可避免地,在编写servlet时会涉及大量的HTML内容,这给servlet的书写效率和可读性带来很大障碍,JSP便是在这个基础上产生的。其功能是使用HTML的书写格式,在适当的地方加入Java代码片段,将程序员从复杂的HTML中解放出来,更专注于servlet本身的内容。

JSP在首次被访问的时候被应用服务器转换为servlet,在以后的运行中,容器直接调用这个servlet,而不再访问JSP页面。JSP的实质仍然是servlet

 

 

 

转载于:https://my.oschina.net/hunglish/blog/747083

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值