servlet概述
一、Servlet是什么
Java Servlet实际上是一个java类,只不过这个类必须运行在具有JavaServlet规范解释器的Web服务器上(例如Tomcat)。在这些支持规范解释器的服务器(例如Tomcat)上,一般都具有一个Servlet容器,当一个web请求到达服务器时,这个请求就会被委派到这个Servlet容器中,成为Servlet容器的管理对象,即这个Servlet对象就是当前浏览器的http请求。
实际上:Java Servlet是运行在Web服务器(Tomcat之类)上的程序,作为web浏览器(或其他Http客户端的请求)和Tomcat服务器(Http服务器)上的数据库或应用程序之间的中间层,使用Servlet,不但可以收集网页表单的用户输入,也可以将数据库中的记录展示到网页上。
二、Servlet能做什么
1.读取浏览器发送的显示数据,表单等
2.读取浏览器发送的隐式数据,例如Cookies等
3.发送显示数据到浏览器
4.发送隐式的Http响应到浏览器,例如Cookies等
三、Servlet的生命周期
当Http请求被委派到Servlet容器时,Servlet容器就会创建Servlet,创建该Servlet时,容器会调用Init方法。
注意,后续相同的http请求不会再创建Servlet,也不会再调用init方法(因为此时Servlet容器中已经存在了)
容器在调用init方法时,会简单的创建/加载一些数据,这些数据随着Servlet的存在而存在。
四、service() 方法:
service() 方法是执行实际任务的主要方法。
Web 服务器调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。
service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
service() 方法也是由容器调用,所以不用对 service() 方法做任何动作。
只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。
doget(),doPost()方法
doGet() 方法:请求中不指定表单,
doPost() 方法:请求中指定表单。
比如说在浏览器的某个页面中有两个提交按钮,
按钮1提交的内容中有表单,那么你就需要使用dopost方法,进而再做一些处理。
按钮2提交的内容中无表单,那么你就需要使用doget方法,进而再做一些处理。
destroy() 方法
destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。
destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。
- html5标签基础
- 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系
- 社会化分享
- Android真机安装sqlite3的方法
- 二次元世界的Linux—东方Project之B站掠影
- 带三方登录(qq,微信,微博)
- Android Studio移动鼠标显示悬浮提示的设置方法
- Spring Cloud构建微服务架构:服务注册与发现
- 自定义Interpolator
- 解决adb push时出现的"Read-only file system"问题
- 1个掷硬币问题,4个Python解法
- 用xml来编写动画
- VIM常见用法总结
- Spring Cloud构建微服务架构:服务消费者
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C语言链表实例--玩转链表
- 帝国CMS怎么利用灵动标签循环调用多个栏目下的文章
- PHP 加密 Password Hashing API基础知识点
- php libevent 功能与使用方法详解
- 对Python3中bytes和HexStr之间的转换详解
- 用python代码将tiff图片存储到jpg的方法
- php下的原生ajax请求用法实例分析
- php 中的信号处理操作实例详解
- php多进程中的阻塞与非阻塞操作实例分析
- 解决android viewmodel 数据刷新异常的问题
- Python装饰器简单用法实例小结
- 解决Python一行输出不显示的问题
- 浅谈python中str字符串和unicode对象字符串的拼接问题
- android利用剪切板传递数据
- gearman中worker常驻后台,导致MySQL server has gone away的解决方法