Servlet是JavaWeb的三大组件之一,它属于动态资源。

在Servlet中通常需要:

  接收请求数据;

  处理请求;

  完成响应。

实现Servlet有三种方式:

  实现javax.servlet.Servlet接口;

  继承javax.servlet.GenericServlet类;

  继承javax.servlet.http.HttpServlet类;

与Servlet的生命周期相关的方法有:

  void init(ServletConfig);

  void service(ServletRequest,ServletResponse);

  void destroy();

服务器会在Servlet第一次被访问时创建Servlet,或者是在服务器启动时创建Servlet。如果服务器启动时就创建Servlet,那么还需要在web.xml文件中配置(<load-on-startup>0</load-on-startup>)。也就是说默认情况下,Servlet是在第一次被访问时由服务器创建的。

而且一个Servlet类型,服务器只创建一个实例对象.

在Servlet被创建后,服务器会马上调用Servlet的void init(ServletConfig)方法。请记住, Servlet出生后马上就会调用init()方法,而且一个Servlet的一生。

当服务器每次接收到请求时,都会去调用Servlet的service()方法来处理请求。服务器接收到一次请求,就会调用service() 方法一次,所以service()方法是会被调用多次的。

Servlet是不会轻易离去的,通常都是在服务器关闭时Servlet才会离去!在服务器被关闭时,服务器会去销毁Servlet,在销毁Servlet之前服务器会先去调用Servlet的destroy()方法

Servlet与线程安全

因为一个类型的Servlet只有一个实例对象,那么就有可能会现时出一个Servlet同时处理多个请求,那么Servlet是否为线程安全的呢?答案是:“不是线程安全的”。这说明Servlet的工作效率很高,但也存在线程安全问题!

所以我们不应该在Servlet中便宜创建成员变量,因为可能会存在一个线程对这个成员变量进行写操作,另一个线程对这个成员变量进行读操作。

GenericServlet概述

GenericServlet是Servlet接口的实现类,我们可以通过继承GenericServlet来编写自己的Servlet。

HttpServlet类是GenericServlet的子类,它提供了对HTTP请求的特殊支持,所以通常我们都会通过继承HttpServlet来完成自定义的Servlet。

HttpServlet类中提供了service(HttpServletRequest,HttpServletResponse)方法,这个方法是HttpServlet自己的方法,不是从Servlet继承来的。

在HttpServlet的service(HttpServletRequest,HttpServletResponse)方法会去判断当前请求是GET还是POST,如果是GET请求,那么会去调用本类的doGet()方法,如果是POST请求会去调用doPost()方法,这说明我们在子类中去覆盖doGet()或doPost()方法即可。

ServletContext

服务器会为每个应用创建一个ServletContext对象:

l  ServletContext对象的创建是在服务器启动时完成的;

l  ServletContext对象的销毁是在服务器关闭时完成的。

  ServletContext对象的作用是在整个Web应用的动态资源之间共享数据!

JSP---->Servlet---->编译.class文件 执行.

扩展: 关于Session的创建和销毁

Session:session将数据保存在服务器端.通过cookie回写了一个JSESSIONID.

* session的创建和销毁:

创建的时候:

服务器端第一次调用getSession()方法的时候创建的.

* 销毁:

* 第一种:非正常关闭服务器.(正常关闭session不会销毁---序列化.tomcat/work路径下.)

* 第二种:默认30分钟.tomcat/conf/web.xml中.

* 第三种:手动调用了session.invalidate();

转载于:https://www.cnblogs.com/DreamDrive/p/4090989.html

关于Servlet的原理以及常用类相关推荐

  1. Servlet常用类剖析

    目录 通过继承HttpServlet实现Servlet程序 使用idea创建Servlet程序 Servlet的继承体系 doGet和dopost源码 servlet方法部分源码 ServletCon ...

  2. Servlet基础:接口、类、请求响应、配置、会话追踪、上下文、协作、异常

    10.1 Servlet介绍 ​ Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的Web服务器端编程技术,主要用于在Web服务器端获得客户端的访问请求信息和动 ...

  3. 「JavaSE」- 常用类

    常用类 Object类 Object是所有类的父类,任何类都默认继承Object.理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Obje ...

  4. Tomcat Servlet 工作原理

    文章目录 Tomcat Servlet 工作原理 Servlet Tomcat解析Context容器过程及如何构建Servlet Servlet容器启动过程 Web应用初始化工作 创建Servlet实 ...

  5. Servlet系列学习笔记1 --- Servlet工作原理和生命周期

    目录 一.Servlet API概述 二.Servlet工作原理 三.Servlet接口 四.Servlet的生命周期 五.ServletRequest 六.ServletResponse Servl ...

  6. Servlet运行原理以及生命周期

    Servlet运行原理 Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. ...

  7. servlet工作原理_Servlet 生命周期、工作原理

    Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方法.它是在服务器装入Ser ...

  8. JSP+JavaBean+Servlet工作原理实例…

    JSP+JavaBean+Servlet工作原理实例讲解 首先,JavaBean和Servlet虽都是Java程序,但是是完全不同的两个概念.引用mz3226960提出的MVC的概念,即M-model ...

  9. Servlet底层原理、Servlet实现方式、Servlet生命周期

    Servlet简介 Servlet定义 Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序. Servlet的特点 (1)Servlet对像,由Servlet容器 ...

最新文章

  1. Java 异步与同步的区别
  2. 【JSConf EU 2018】WebAssembly 的手工艺术
  3. 【模板】Dijkstra
  4. 从字节码层面分析==比较integer和int
  5. ie input兼容 vue_Vue项目与IE11兼容
  6. pgslq表的字段类型_Python 爬取微信公众号文章和评论 (基于 Fiddler 抓包分析)
  7. table表格高级用法(一)
  8. zabbix生产环境案例(三)
  9. python注意事项
  10. python unicode编码转换中文_Python入门高级教程--Python 中文编码
  11. ORB特征提取算法解析
  12. 正则化、岭回归与LASSO回归(套索回归)
  13. 大数据技术笔记之数据采集和预处理
  14. python公式字体_Matplotlib 中英文及公式字体设置
  15. 解决 invalid DSN: missing the slash separating the database name
  16. Frameworks Detected: Web framework is detected
  17. openvpn部署和迁移
  18. 黄金连分数(python)
  19. 自定义复选框checkbox样式
  20. 单片机矩阵式键盘扫描程序

热门文章

  1. 一行命令搞定node.js 版本安装、升级与卸载
  2. 学银在线python课程_Python 从入门到精通:一个月就够了!
  3. oracle从一个表insert语句,Oracle 使用PLSQL 导出 一个表的insert 语句
  4. core控制器属性注入的用处_了解ASP.NET Core 依赖注入,看这篇就够了
  5. 实战tkinter图形界面开发_如何进行简单的图形开发?
  6. 亲测可用centos7安装git_centos7安装git踩坑记
  7. VALSE Webinar 20-29期 图文并茂, 让视觉与语言相得益彰
  8. JZOJ__Day 5:【普及模拟】num
  9. 证书服务器无法启动,使用 SSL 证书后服务无法启动 - SQL Server | Microsoft Docs
  10. ps原始数据清理脚本_创建地形模型一步到位!PS最新2019全球首款3D地形生成插件送给你...