Servlet--HttpServlet
一.Servlet 接口(javax.servlet)
定义:
public interface Servlet
Implemented by: FacesServlet, GenericServlet, JspPage
介绍:
servlet 是运行在 Web 服务器中的小型 Java 程序。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。
要实现此接口,可以编写一个扩展 javax.servlet.GenericServlet 的一般 servlet,或者编写一个扩展 javax.servlet.http.HttpServlet 的 HTTP servlet。
此接口定义了初始化 servlet 的方法、为请求提供服务的方法和从服务器移除 servlet 的方法。这些方法称为生命周期方法,它们是按以下顺序调用的:
1)构造 servlet,然后使用 init 方法将其初始化。
2)处理来自客户端的对 service 方法的所有调用。
3)从服务中取出 servlet,然后使用 destroy 方法销毁它,最后进行垃圾回收并终止它。
除了生命周期方法之外,此接口还提供了 getServletConfig 方法和 getServletInfo 方法,servlet 可使用前一种方法获得任何启动信息,而后一种方法允许 servlet 返回有关其自身的基本信息,比如作者、版本和版权。
常用方法:
public void destroy():由 servlet 容器调用,指示将从服务中取出该 servlet。此方法仅在 servlet 的 service
方法已退出或者在过了超时期之后调用一次。在调用此方法之后,servlet容器不会再对此 servlet 调用 service 方法。
public ServletConfig getServletConfig():返回 ServletConfig 对象,该对象包含此 servlet 的初始化和启动参数。返回的 ServletConfig 对象是传递给 init 方法的对象.
此接口的实现负责存储 ServletConfig 对象,以便此方法可以返回该对象。实现此接口的 GenericServlet 类已经这样做了。
public String getServletInfo():返回有关 servlet 的信息,比如作者、版本和版权.此方法返回的字符串应该是纯文本,不应该是任何种类的标记(比如 HTML、XML,等等).
public void init(ServletConfig config) throws ServletException:由 servlet 容器调用,指示将该 servlet 放入服务.servlet 容器仅在实例化 servlet 之后调用 init 方法一次。
在 servlet 可以接收任何请求之前,init 方法必须成功完成.
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException:由 servlet 容器调用,以允许 servlet 响应某个请求。此方法仅在 servlet 的 init()
方法成功完成之后调用,应该为抛出或发送错误的 servlet 设置响应的状态代码。
二.HttpServlet 类(javax.servlet.http)
继承关系:
java.lang.Object--javax.servlet.GenericServlet--javax.servlet.http.HttpServlet
定义:
public abstract class HttpServlet extends GenericServlet implements Serializable
介绍:
提供将要被子类化以创建适用于 Web 站点的 HTTP servlet 的抽象类。HttpServlet 的子类至少必须重写一个方法,该方法通常是以下这些方法之一:
doGet,如果 servlet 支持 HTTP GET 请求
doPost,用于 HTTP POST 请求
doPut,用于 HTTP PUT 请求
doDelete,用于 HTTP DELETE 请求
init 和 destroy,用于管理 servlet 的生命周期内保存的资源
getServletInfo,servlet 使用它提供有关其自身的信息
构造方法:
public HttpServlet():不执行任何操作,因为这是一个抽象类。
常用方法:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{}:由服务器调用(通过 service 方法),以允许 servlet 处理 GET 请求。
req 包含客户端对 servlet 发出的请求的 HttpServletRequest 对象;
resp 包含 servlet 向客户端发送的响应的 HttpServletResponse 对象.
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{}:由服务器调用(通过 service 方法),以允许 servlet 处理 POST 请求。
HTTP POST 方法允许客户端一次将不限长度的数据发送到 Web 服务器,这在发送诸如信用卡号之类的信息时很有用.
protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{}:由服务器调用(通过 service 方法),以允许 servlet 处理 PUT 请求,
PUT 操作允许客户端将文件放在服务器上,类似于通过 FTP 发送文件。
public void service(ServletRequest req, ServletResponse res) throws ServletException,IOException:将客户端请求分发给受保护的 service 方法。无需重写此方法。
三.web执行流程
1.实现项目,发布到服务器下(Tomcat的webapps文件夹下);
2.启动Tomcat服务器(实际上是启动了ServerSocket对象,监听8080端口,等待客户端连接);
3.当用户在浏览器地址栏输入网址时,即向服务器发起请求(此时浏览器底层建立起Socket对象,将HTTP的请求部分(请求行/请求头/请求体)发送至服务器);
4.服务器(Servlet接口或其实现类)分析请求,通过service方法判断是请求动态资源还是静态资源,如果是动态资源则使用反射技术,创建对象;如果是静态资源,则直接读取文件夹中的内容;
5.服务器(Tomcat)结合http协议响应部分和输出流向客户端进行响应;
6.浏览器通过输入流接收来自服务器的数据,进行解析和处理,并展现给用户;
四.Servlet生命周期
1_当用户通过浏览器首次访问某个Servlet时,tomcat会调用servlet的构造函数创建一个Servlet对象,之后调用servlet下的init方法(仅执行一次);
2_调用servlet下的service方法,在service方法中判断本次是GET/POST方法,调用servlet下的doget/dopost方法;
3_以后从客户端浏览器每次向服务端对当前servlet发起请求,仅仅只执行其下的service__>doget/dopost;
4_停止服务器(正常/中断)/重新加载项目 servlet销毁;
正常停止服务器/重新加载项目会执行destory方法
注意: 单实例多线程模式,会有效率问题,安全问题
Servlet--HttpServlet的更多相关文章
- Java Servlet(五):GenericServlet与Servlet、HttpServlet之间的关系(jdk7+tomcat7+eclipse)
本篇主要记录下,对GenericServlet的作用理解,及其与Servlet/HttpServlet之间的关系. 示例完成业务: 1.新建一个login.jsp页面,要求改页面能输入username ...
- Servlet生命周期引起的问题
A:Servlet的定义与作用. B:Serlvet的体系结构 Servlet | | GenericServlet | | HttpServlet | | 用户自定义的Servlet. HttpSe ...
- Maven创建servlet项目演示(三)
上一节用Maven新建了web项目成功后,本文演示在此基础上应用servlet. 从对tomcat服务器进行配置可的过程中可以知道,tomcat作为servlet容器运行,负责处理客户请求,把请求传送 ...
- Servlet复习1: 一个简单的Servlet的使用
Servlet学习 1. Servlet与JSP的关系 2. Servlet的声明周期 3. 一个简单的Servlet的使用方法 什么是Servlet? 什么又是JSP? 继承了javax.servl ...
- Java Servlet 技术简介
Java Servlet 技术简介 Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么 ...
- servlet基础讲解
基本知识一.Web结构1.两种应用程序 ①桌面应用程序:QQ.CS.MyEclipse.Office.DW.360.浏览器等必须下载.安装.桌面快捷方式.注册表信息.操作系统后台服务.占用操作系统端口 ...
- 【Java】Java Servlet 技术简介
Java 开发人员兼培训师 Roy Miller 将我们现有的 servlet 介绍资料修改成了这篇易于学习的实用教程.Roy 将介绍并解释 servlet 是什么,它们是如何工作的,如何使用它们来创 ...
- Servlet基础知识
基本知识一.Web结构1.两种应用程序 ①桌面应用程序:QQ.CS.MyEclipse.Office.DW.360.浏览器等必须下载.安装.桌面快捷方式.注册表信息.操作系统后台服务.占用操作系统端口 ...
- JavaWeb(一)-Servlet知识
一.Servlet简介 Servlet是sun公司提供一门用于开发动态web资源的技术. sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个java程序向浏 ...
- Servlet以及单例设计模式
1.Servlet概述 a)Servlet,全城是Servlet Applet,服务器端小程序,是一个接口,定义了若干方法,要求所有的Servlet必须实现. b)Servlet用于接收客户端的请求, ...
随机推荐
- C# 深化基本概念
关于IDisposable的Dispose方法 .Net中GC会自动回收托管资源, 对于非托管资源应该使用Dispose方法. 在使用Dispose方法时,应注意避免在Dispose内部中继续释放托管 ...
- Python3解leetcode Valid Parentheses
问题描述: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if th ...
- Vijos:P1117数的划分
描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1;问有多少种不同的分法. 格式 输入 ...
- Redis多个数据库
注意:Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念. Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存 ...
- jmeter 开发自己的java请求 二次开发
package test; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient. ...
- css3文字与字体的相关样式
给文字添加阴影——text-shadow属性 text-shadow属性是css2中定义的,在css2.1中删除了,在css3中恢复text-shadow:length length length c ...
- jdbcTemplate简单使用
package com.bizvane.spider.tools; import org.apache.commons.dbcp.BasicDataSource; import org.springf ...
- JavaScript-导论
说明:此类博客来自以下链接,对原内容做了标注重点知识,此处仅供自己学习参考! 来源:https://wangdoc.com/javascript/basic/introduction.html 1.什 ...
- Android在Win10环境搭建
一.安装JDK并配置环境变量 1.在Java官方网站上下载相应系统的jdk文件安装,如win7 64 位系统下安装jdk-6u45-windows-x64,全部选择默认的安装路径即可安装完成. 2.配 ...
- "Mysql has gone away"的几种可能
现象: 在本地利用Flask自带的WSGI服务进行调试没有问题后,通过Gunicorn进行部署. 但是在一晚上没有访问之后,第二天再次访问会出现500(Internal error). 原因: 通过追 ...