之前说Servlet可以通过实现Servlet接口来创建,但是我们看到了,需要重写该接口中的所有方法。

创建方式二:Servlet的创建还可以继承抽象类GenericServlet并重写其中的抽象方法

创建方法三:继承HttpServlet类,并重写他的Service方法

这几种创建方法的本质是一样的,不过是父类的范围越来越小,越来越专用。使用的过程中不必纠结这点。第三种方式更加推荐,并且可以将Service分开为doGet,doPost两个方法处理请求。

Servlet生命周期

1.客户端浏览器向服务器端发送请求URL

2.请求被服务器中的web.xml获取,并开始找寻对应的访问资源是哪一个Servlet

3.需要被访问的资源被确定后,服务器的类加载器加载Servlet类

4.创建Servlet对象

5.初始化

6.调用doGet,doPost,service其中的某个方法来处理请求并进行响应

7.当服务器关闭,重启,项目重新部署或加载的时候,就调用他的destroy方法销毁

需要注意的是,Servlet的生命周期是冲被加载开始算起的,之前的是请求的过程,我穿插进来比较容易理解。然后Servlet第一次被访问的时候,会被加载,创建,初始化,处理请求并响应。如果不是第一次被访问,只进行请求处理响应。在服务器关闭,项目被加载的时候Servlet销毁。

一个Servlet的生命周期中,Servlet对象只有一个,并且不同的客户端公用这一个Servlet对象,比如说,我们用IE浏览器访问了一个servlet,退出IE再用火狐访问这个servlet,他们用的其实是同一个Servlet。这就牵扯到了单例模式,下次再介绍,不是本文重点。

话不多说,上实例。

【继承HttpServlet类的Servlet】

package com.servlettest;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet3 extends HttpServlet{

public Servlet3() {
// TODO Auto-generated constructor stub
System.out.println("被创建");
}
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub

System.out.println("处理请求");
}
@Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("销毁");
}
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
System.out.println("初始化");
}

}

【地址栏输入】

http://localhost:8080/servlet_demo/servlet3

【现象】

console打印

被创建
初始化
处理请求

【再次刷新】

处理请求

处理请求

处理请求

处理请求

【关闭服务器】

销毁

Servlet的创建二以及生命周期的更多相关文章

  1. MVVM框架(二)---生命周期

    一.Vue 生命周期图解: 这张图是官方给出的,大家可能都看过.其中我们重点讲述以下几个钩子函数: beforeCreate  -->   created beforeMount   --> ...

  2. [转]servlet的执行原理与生命周期

    一.先从servlet容器说起:大家最为熟悉的servlet容器就是Tomcat ,Servlet 容器是如何管理 Servlet? 先看一下tomcat的容器模型: 从上图可以看出 Tomcat 的 ...

  3. .net学习笔记---Asp.net的生命周期之二页生命周期

    用户请求 从 用户角度来说,我不管你后台经历了什么,我只想要我请求的页面.请求到服务器端,服务器必须得有所表示的是吧,即使不想搭理人家也得让IIS给人家说声:找不到服务器.请求来到服务器端,肯定要让服 ...

  4. Activity学习(二)——生命周期

    一.什么是Activity? 简单的说:Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面.在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Ac ...

  5. servlet的执行原理与生命周期

    先从servlet容器说起:大家最为熟悉的servlet容器就是Tomcat ,Servlet 容器是如何管理 Servlet?先看一下tomcat的容器模型:从上图可以看出 Tomcat 的容器分为 ...

  6. Servlet(三):生命周期、常用方法、常见错误

    Servlet的生命周期:从第一次调用,到服务器关闭.如果在web.xml 中配置了load-on-startup则是从服务器开启到服务器关闭. 注意: * init方法是对Servlet进行初始化的 ...

  7. JSP 和 Servlet 的工作原理和生命周期

    JSP的英文名叫Java Server Pages,翻译为中文是Java服务器页面的意思,其底层就是一个简化的Servlet设计,是由sum公司主导参与建立的一种动态网页技术标准.Servlet 就是 ...

  8. Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查

    一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process ...

  9. [javaEE] Servlet的调用过程和生命周期

    在http协议的请求头中获取到要访问的资源,查找web.xml文件找到对应的servelet Sevlet的生命周期 Servlet在第一次被访问的时候,服务器创建出Servlet对象,创建出对象以后 ...

随机推荐

  1. C语言作业04-数组

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 通过本章的学习,学会了几种用于循环的语句,能够利用循环解决复杂的问题,但对于几种循环的使用并不熟练,其中对于c ...

  2. 微信小程序获取二维码参数

    var scene = decodeURIComponent(options.scene)

  3. mysql权限操作(转)

    慢慢看吧mysql中可以给你一个用户授予如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令,用法格式为: grant 权限 on 数据库对象 to ...

  4. Java多线程消费者、生产者的基本思路

    多线程主要考察的就是 线程的同步控制   生产者消费者的思路就是,当 一个线程执行时让另一个线程 挂起就行了 ThreadOne.ThreadTwo同时运行,添加一个变量在一个公共类(下边的Funct ...

  5. android 7.0+ FileProvider 访问隐私文件 相册、相机、安装应用的适配

    从 Android 7.0 开始,Android SDK 中的 StrictMode 策略禁止开发人员在应用外部公开 file:// URI.具体表现为,当我们在应用中使用包含 file:// URI ...

  6. Eclipse oxygen 版本汉化教程

    Eclipse oxygen 版本汉化步骤如下: 第一步:打开Eclipse 第二步:浏览器打开网址 http://www.eclipse.org/babel/downloads.php 1.复制对应 ...

  7. 面试简单整理之rabbitmq

    135.rabbitmq 的使用场景有哪些? 单反单收,单发多收,发布订阅,按路由发送,按主题发送 136.rabbitmq 有哪些重要的角色? Server,Consumer,Producer 13 ...

  8. 201771010134杨其菊《面向对象程序设计java》第十二周学习总结

    第十二周学习总结 第一部分:理论知识 内容概要: AWT与Swing简介:框架的创建:图形程序设计: 显示图像: 1.AWT组件: 2.Swing 组件层次关系 3 .AWT与Swing的关系:大部分 ...

  9. java 日志体系(四)log4j 源码分析

    java 日志体系(四)log4j 源码分析 logback.log4j2.jul 都是在 log4j 的基础上扩展的,其实现的逻辑都差不多,下面以 log4j 为例剖析一下日志框架的基本组件. 一. ...

  10. MySQL导入数据报 Got a packet bigger than‘max_allowed_packet’bytes 错误的解决方法

    MySQL根据配置文件会限制Server接受的数据包大小.有时候大的插入和更新会受 max_allowed_packet 参数限制,导致大数据写入或者更新失败. 通过终端进入mysql控制台,输入如下 ...