JavaWeb — Servlet(Server Applet)
Servlet(Server Applet)
全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
Servlet的工作模式:
● 接收请求数据(客户端发送请求至服务器)
● 处理请求(服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器)
● 完成响应(服务器将响应返回客户端)
Servlet API概览:
① javax.servlet;其中包含定义Servlet和Servlet容器之间契约的类和接口。
② javax.servlet.http;其中包含定义HTTP Servlet 和Servlet容器之间的关系。
③ javax.servlet.annotation;其中包含标注Servlet,Filter,Listener的标注。它还为标注元件定义数据。
④ javax.servlet.descriptor;其中包含提供程序化登录Web应用程序的配置信息的类型。
Servlet使用方法:servlet三种方式实现servlet接口
Servlet技术的核心是Servlet,它是所有Servlet类必须直接或者间接实现的一个借口。在编写实现Servlet的Servlet类时,直接实现它。在扩展实现这个接口的类时,间接实现它。
Servlet的工作原理:
● Servlet接口定义了Servlet与Servlet容器之间的契约。这个契约是:Servlet容器将Servlet类载入内存中,并产生了Servlet实例和调用它的具体方法。但是要注意的是,在一个应用程序中,每种Servlet类型只能有一个实例。
● 用户请求致使Servlet容器调动Servlet的Servic()方法,并传入一个ServletRequest对象和一个ServletResponse对象。这两个对象都是由Servlet容器(例如Tomcat)封装好的,并不需要程序员去实现,程序员可以直接使用这两个对象。
ServletRequest中封装了当前的Http请求,因此,开发人员不必解析和操作原始的Http数据。 ServletResponse表示当前用户的Http响应,程序员只需直接操作ServletResponse对象就能把响应反馈给用户
对于每一个应用程序,Servlet容器还会创建一个ServletContext对象。这个对象中封装了上下文(应用程序)的环境详情。每个应用程序只有一个ServletContext。每个Servlet对象也都有一个封装Servlet配置的ServletConfig对象。
Servlet接口中定义的方法:
package javax.servlet;
import java.io.IOException;
public interface Servlet {
//初始化servlet,它是servlet的生命周期方法,由web容器调用一次
void init(ServletConfig var1) throws ServletException;
//为传入的请求提供相应,它由Web容器的每个请求调用
void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
//紧被调用一次,并且表名servlet正在被销毁
void destroy();
//返回ServletConfig对象
ServletConfig getServletConfig();
//返回有关的servlet的信息,如作者,版权,版本等
String getServletInfo();
}
Servlet的生命周期:
① init(),当Servlet第一次被请求时,Servlet容器就会开始调用这个方法来初始化一个Servlet对象来,但是这个方法在后续请求中不会再被Servlet容器调用,就像人只能"出生"一次一样。我们可以利用init()方法来执行相应的初始化工作。调用这个方法时,Servlet容器会传入一个ServletConfig对象进来从而对Servlet对象进行初始化。
② service(),每当请求Servlet时,Servlet容器就会调用这个方法。就像人一样,需要不停地接受老板的指令并且"工作"。第一次请求时,Servlet容器会先调用init()方法初始化一个对象出来,然后会调用它的Service方法进行工作,但在后续的请求中Servlet容器只会调用service方法了。
③ destroy(),当要销毁Servlet时,Servlet容器就会调用这个方法。就如人一样,到了期就会死亡。在卸载应用程序或者关闭Servlet容器时,就会发生这种情况,一般在这个方法中会写一些清除代码。
JavaWeb — Servlet(Server Applet)的更多相关文章
- Servlet(Server Applet) 详解
Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容. Servlet的工作模式 客户端发送请求至服务器 服务器启动并调用Servlet,Servlet根据客户端请求生 ...
- Servlet(汇聚页)
Servlet(汇聚页) --------------------------------------------------------------------------------------- ...
- HTTP/2 服务器推送(Server Push)教程(HTTP/2 协议的主要目的是提高网页性能,配置Nginx和Apache)
HTTP/2 协议的主要目的是提高网页性能. 头信息(header)原来是直接传输文本,现在是压缩后传输.原来是同一个 TCP 连接里面,上一个回应(response)发送完了,服务器才能发送下一个, ...
- javaWeb——Servlet(二)
Servelet登录页面步骤: 浏览器访问http://127.0.0.1/login.html 浏览器通过form把账号和密码提交到/login(通过action),附带method="p ...
- JavaWeb总结(十二)
JSP指令 提供整个JSP页面的相关信息 用于JSP页面与容器之间的通信 <%@ directive attribute1="value1" attribute2=" ...
- idea配置javaweb项目(最新版)
idea(最新版)配置javaweb项目 本篇文章使用Maven构建javaweb环境 最新版maven压缩包 链接:https://pan.baidu.com/s/1El7b3YzPTZX-7QRE ...
- JavaWeb学习(三十)———— 数据库连接池
一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大 ...
- zabbix安装部署(server部分)
Linux下常用的系统监控软件有Nagios.Cacti.Zabbix.Monit等,这些开源的软件,可以帮助我们更好的管理机器,在第一时间内发现,并警告系统维护人员. 今天开始研究下Zabbix,使 ...
- JavaWeb总结(十四)
无脚本JSP表达式语言EL JSP页面中显示结果 jsp:useBean和jsp:getProperty两个元素冗长而笨拙 jsp:getProperty只支持对简单Bean属性的访问 public ...
随机推荐
- x-杂项-maven-repository-lombok-intro:使用PROJECT LOMBOK减少BOILERPLATE代码
ylbtech-杂项-maven-repository-lombok-intro:使用PROJECT LOMBOK减少BOILERPLATE代码 1.返回顶部 1. REDUCING BOILERPL ...
- MVC到底是设计模式还是一种框架还是一种架构? https://www.zhihu.com/question/31079945
具体知乎讨论内容:https://www.zhihu.com/question/31079945 MVC到底是设计模式还是一种框架还是一种架构? 我认为它是3种设计模式的演变和组合:观察者模式(Obs ...
- day18_文件处理_迭代器_生成器
#!/usr/bin/env python # -*- coding:utf-8 -*- # ********************day18_文件处理_迭代器_生成器 ************** ...
- 20.multi_case03
# 多线程 import threading import time class myThread(threading.Thread): def __init__(self, threadID, na ...
- 外引js — 先引入cdn,cdn失效时引入本地js
参考:http://www.tianshan277.com/563.html 效果: html: <!DOCTYPE html> <html lang="en"& ...
- spring:bean的作用范围和生命周期
bean的作用范围调整: <!--bean的作用范围调整 bean标签的scope属性: 作用:用于指定bean的作用范围 取值:常用的就是单例的和多例的 singleton:单例的(默认值) ...
- 【学术篇】oj.jzxx.net2701 无根树
这是一道来自OIerBBS的题目.. 原帖地址:http://www.oierbbs.com/forum.php?mod=viewthread&tid=512?fromuid=71 (似乎是个 ...
- vc 识别移动硬盘 U盘,本地硬盘
说明:有时候我们在做设备监控的时候,要识别一些链接设备,在使用函数GetDriveType的时候,U盘可以返回DRIVE_REMOVABLE,而本地硬盘硬盘和移动硬盘DRIVE_FIXED,因此还需要 ...
- Ubuntu 快速安装配置Odoo 12
Odoo 12预计将于今年10月正式发布,这是一次大版本更新,带来了一些不错的新特性,如 文件管理系统(DMS) 用户表单中新增字段(Internal user, Portal, Public) HR ...
- ansible 安装 使用 命令 笔记 生成密钥 管控机 被管控机 wget epel源
ansible 与salt对比 相同 都是为了同时在多台机器上执行相同的命令 都是python开发 不同 agent(saltstack需要安装.ansible不需要) 配置(salt配置麻烦,a ...