Servlet都有哪些方法?主要作用是什么?


Posted in 面试题 onMarch 04, 2014
HttpServlet 类包含 init() 、 destroy() 、 service() 等方法。其中 init() 和 destroy() 方法是继承的。
(1) init() 方法
在 Servlet 的生命期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行的。 可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet 。 无论有多少客户机访问 Servlet ,都不会重复执行 init() 。
缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法来覆盖它,典型的是管理服务器端资源。 例如,可能编写一个定制 init() 来只用于一次装入 GIF 图像,改进 Servlet 返回 GIF 图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。缺省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConfig 对象参数来启动配置, 因此所有覆盖 init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。在调用 service() 方法之前,应确保已完成了 init() 方法。
(2) service() 方法
service() 方法是 Servlet 的核心。每当一个客户请求一个 HttpServlet 对象,该对象的 service() 方法就要被调用,而且传递给这个方法一个“请求”( ServletRequest )对象和一个“响应”( ServletResponse )对象作为参数。 在 HttpServlet 中已存在 service() 方法。缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如, 如果 HTTP 请求方法为 GET ,则缺省情况下就调用 doGet() 。 Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。因为 HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。
= 当一个客户通过 HTML 表单发出一个 HTTP POST 请求时, doPost ()方法被调用。 与 POST 请求相关的参数作为一个单独的 HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用 doPost() 方法。
= 当一个客户通过 HTML 表单发出一个 HTTP GET 请求或直接请求一个 URL 时, doGet() 方法被调用。 与 GET 请求相关的参数添加到 URL 的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用 doGet() 方法。
Servlet 的响应可以是下列几种类型:
一个输出流,浏览器根据它的内容类型(如 text/HTML )进行解释。
一个 HTTP 错误响应 , 重定向到另一个 URL 、 servlet 、 JSP 。
(3) destroy() 方法
destroy() 方法仅执行一次,即在服务器停止且卸装 Servlet 时执行该方法。典型的,将 Servlet 作为服务器进程的一部分来关闭。缺省的 destroy() 方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。例如,如果 Servlet 在运行时会累计统计数据,则可以编写一个 destroy() 方法,该方法用于在未装入 Servlet 时将统计数字保存在文件中。另一个示例是关闭数据库连接。
当服务器卸装 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过后调用 destroy() 方法。一个 Servlet 在运行 service() 方法时可能会产生其它的线程,因此请确认在调用 destroy() 方法时,这些线程已终止或完成。
(4) GetServletConfig()方法
GetServletConfig ()方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和 ServletContext 。 ServletContext 接口提供有关 servlet 的环境信息。
(5) GetServletInfo()方法
GetServletInfo ()方法是一个可选的方法,它提供有关 servlet 的信息,如作者、版本、版权。
当服务器调用 sevlet 的 Service ()、 doGet ()和 doPost ()这三个方法时,均需要 “请求”和“响应”对象作为参数。“请求”对象提供有关请求的信息,而“响应”对象提供了一个将响应信息返回给浏览器的一个通信途径。 javax.servlet 软件包中的相关类为 ServletResponse 和 ServletRequest ,而 javax.servlet.http 软件包中的相关类为 HttpServletRequest 和 HttpServletResponse 。 Servlet 通过这些对象与服务器通信并最终与客户机通信。 Servlet 能通过调用“请求”对象的方法获知客户机环境,服务器环境的信息和所有由客户机提供的信息。 Servlet 可以调用“响应”对象的方法发送响应,该响应是准备发回客户机的。

Tags in this post...

面试题 相关文章推荐
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
Feb 08 面试题
一些网络技术方面的面试题
May 01 面试题
C#面试问题
Jul 29 面试题
Linux的文件类型
Jul 05 面试题
nohup的用法
Nov 26 面试题
如何利用find命令查找文件
Nov 18 面试题
linux面试题参考答案(10)
Nov 04 面试题
EntityManager都有哪些方法
Nov 01 面试题
Lucene推荐的分页方式是什么?
Dec 07 面试题
Java的类与C++的类有什么不同
Jan 18 面试题
UNIX文件系统常用命令
May 25 面试题
J2EE相关知识面试题
Aug 26 面试题
Servlet面试题库
Jul 18 #面试题
什么是servlet链?
Jul 13 #面试题
Servlet的生命周期
Aug 25 #面试题
什么是servlet
May 08 #面试题
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
Apr 24 #面试题
为什么要使用servlet
Jan 17 #面试题
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
May 30 #面试题
You might like
php heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
prototype class详解
2006/09/07 Javascript
asp批量修改记录的代码
2008/06/25 Javascript
常用简易JavaScript函数
2009/04/09 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
判断JS对象是否拥有某属性的方法推荐
2016/05/12 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
浅谈对于react-thunk中间件的简单理解
2019/05/01 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
python使用百度翻译进行中翻英示例
2014/04/14 Python
Python版微信红包分配算法
2015/05/04 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
Python生成随机验证码的两种方法
2015/12/22 Python
使用python3构建文件传输的方法
2019/02/13 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
公务员综合考察材料
2014/02/01 职场文书
学生鉴定评语大全
2014/05/05 职场文书
一般党员对照检查材料
2014/09/24 职场文书
党员带头倡议书
2015/04/29 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
python代码实现扫码关注公众号登录的实战
2021/11/01 Python
Python软件包安装的三种常见方法
2022/07/07 Python