高级Web开发技术—软件测试专项技术(10)

发表于:2020-4-30 11:05

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:51Testing教研团队    来源:51Testing软件测试网原创

  第3章 高级Web开发技术
  3.1 Servlet
  3.1.1  Servlet简介
  Java Servlet是运行在Web服务器或应用服务器上的程序,作为来自Web浏览器的请求和HTTP服务器上的数据库或应用程序之间的中间层。
  在图3-1中可以确定Servlet在网络架构中的位置。
  
图3-1  Servlet在网络架构中的位置
  使用 Servlet可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
  Servlet 有以下几点优势。
  ●性能更好。
  ●Servlet在Web服务器的地址空间内执行,这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
  ●Servlet是独立于平台的,因为它们是用Java编写的。
  ●由于服务器上的Java安全管理器具有一系列限制,以保护服务器计算机上的资源,因此Servlet是可信的。
  ●Java类库的全部功能对于Servlet来说都是可用的,Servlet可以通过套接字和RMI机制与Applet、数据库或其他软件进行交互。
  3.1.2  Servlet的生命周期
  讲述Servlet的生命周期(见图3-2)的主要目的是使读者能够理解Servlet代码的结构以及运行过程。
  
图3-2  Servlet的生命周期
  通过图3-2可知,Servlet的生命周期为从创建直到毁灭的整个过程。其中主要包含以下几个过程。
  ●Servlet通过调用 init()方法进行初始化。
  ●Servlet调用service()方法来处理客户端请求。
  ●Servlet通过调用destroy()方法终止(结束)。
  Servlet是由JVM的垃圾回收器进行回收的。
  Servlet的工作过程如图3-3所示。
  在图3-3中可观察到以下几点。
  ●第一个到达服务器的HTTP请求被委派到Servlet容器。
  ●Servlet容器在调用service()方法之前加载Servlet。
  ●Servlet容器处理由多个线程产生的多个请求,每个线程执行单个Servlet 实例的service()方法。
  接下来详细讲述一下上述过程中所做的工作。
  1.init()方法
  init()方法只调用一次。它在第一次创建Servlet时调用,在后续的每次用户请求中不再调用,仅用于一次性初始化。
  
图3-3  Servlet的工作过程
  Servlet创建于用户第一次调用对应该Servlet的URL时,但是也可以指定Servlet在服务器第一次启动时加载。
  当用户调用一个Servlet时,就会创建一个Servlet实例。每一个用户请求都会产生一个新线程,适当的时候将其移交给doGet或doPost方法。init()方法可简单地创建或加载一些数据,这些数据将作用于Servlet的整个生命周期。
  init()方法的定义如下。
public void init() throws ServletException {
// 初始化代码
}
  2.service()方法
  service()方法是执行实际任务的主要方法。Servlet 容器(Tomcat)调用 service()方法来处理来自客户端(浏览器)的请求,并把已格式化的响应写回客户端。
  每次服务器接收到一个Servlet请求时,它都会产生一个新的线程并调用服务。service()方法检查HTTP请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用doGet、doPost、doPut和doDelete等方法。
  service()方法的定义如下。
public void service(ServletRequest request,
ServletResponse response)
throws ServletException, IOException{
}
  3.doGet()方法
  service()方法会在适当的时候调用 doGet、doPost、doPut、doDelete 等方法,所以在代码中不用对service()方法执行任何操作,只需要根据客户端的请求类型重写doGet()或doPost()即可。
  GET请求来自URL的正常请求,或者来自未指定METHOD的HTML表单,它由doGet()方法来处理。
  doGet()方法的定义如下。
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet 代码
}
  4.doPost()方法
  POST请求来自一个专门指定METHOD为POST的HTML表单,它由doPost()方法来处理。
  doPost()方法的定义如下。
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet 代码
}
  5.destroy()方法
  destroy()方法只会调用一次,并且是在Servlet的生命周期结束时调用。destroy()方法可以让Servlet关闭数据库连接,停止后台线程,把Cookie列表或单击计数器写入磁盘,并执行其他类似的清理活动。
  在调用destroy()方法之后,Servlet对象被标记为垃圾回收。
  destroy()方法的定义如下所示。
public void destroy() {
// 终止代码
}

查看《软件测试专项技术--基于Web、移动应用和微信》全部连载内容>>
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号