IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Servlet继承、生命周期、HTTP协议 -> 正文阅读

[网络协议]Servlet继承、生命周期、HTTP协议

1、Servlet继承关系

package com.biaodan.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/*1 .继承关系
    javax.servlet.Servlet接口
        Javax.servlet.GenericServlet抽象类
            javax.servlet.HttpServlet抽象子类
  2 .相关方法
    javax.servlet.Servlet接口
        void init(config)-初始化方法
        void service(request,response)服务方法
        void destory()销毁方法

    javax.servlet.GenericServlet抽象  类:
        void service(request,response)-仍然是抽象的

    javax.servlet.HttpServlet抽象子类
        void service(request,response)不是抽象的
        1.String method = req.getMethod();获取请求的方式
    3.小结
        1)继承关系:HttpServlet  ->   GenericServlet ->  Servlet
        2)Servlet中的核心方法: init(),Service(),destroy()分别表示初始化、服务、销毁
        3)服务方法:当有请求过来时,service方法会自动响应(其实是tomcat容器调用)
                在HttpServlet中我们会去分析请求的方式:到底是get、post、head还是delete等等
                然后再决定调用的是那个do开头的方法
                那么再Httpservlet中这些do方法默认都是405的实现风格,要我们子类去实现对应的方法,否则默认会报405错误
        4)因此,我们在新建Servlet时,我们会考虑请求方法,从而决定重写那个do方法
*/
public class Demo01 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

2、Servlet的生命周期

package com.biaodan.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//演示servlet的生命周期
/*1)生命周期:从出生到死亡的过程就是生命周期,对应Servlet中的三个方法:init()、service()、destroy()
  2)默认情况下:
        第一次请求时,这个servlet会进行实例化(调用构造方法),初始化(调用init()方法)、然后服务(调用service()方法)
        从第二次请求开始,每一次都是服务
        当容器关闭时,其中的所有的servlet实例会被销毁,调用销毁方法
  3)通过案例我们发现:
        -Servlet实例tomcat只会创建一个,所有的请求都是这个实例去响应
        -默认情况下,第一次请求时,tomcat才回去实例化,初始化,然后再服务。
                   这样的好处是什么?提高系统的启动速度
                   这样的缺点是什么?第一次请求时,耗时较长。
        -因此得出结论:如果需要提高系统的启动速度,当前默认情况就是这样,如果需要提高响应速度,我们需要设置Servlet的初始化时机
  4)Servlet的初始化时机:
        -默认是第一次接收请求时,实例化,初始化
        -我们可以通过<load-on-startup>来设置servlet启动的先后顺序,数字越小,启动越靠前,最小值0
  5)Servlet在容器中是:单例的,线程不安全的
        -单例:所有的请求都是同一个实例去响应
        -线程不安全:一个线程需要根据这个实例中的某个成员变量值去做逻辑判断,但是在中间某个时机,另一个线程改变了这个成员变量的值,从而导致第一个线程的执行路径发生了变化
        -我们已经知道了servlet是线程不安全的,给我们的启发是:尽量的不要在servlet中定义成员变量,如果不得不定义成员变量,那么不要去:1.不要去修改成员变量的值,2.不要去根据成员变量的值做一些逻辑判断
 */
public class Demo02Servlet extends HttpServlet {
    public Demo02Servlet(){
        System.out.println("正在实例化、、、");
    }
    @Override
    public void init() throws ServletException {
        System.out.println("正在初始化、、、");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("正在服务、、、");
    }

    @Override
    public void destroy() {
        System.out.println("正在销毁、、、");
    }
}

3、Http协议

package com.biaodan.servlet;
/*
Http协议
    1)Http称之为  超文本传输协议
    2)Http是无状态的
    3)Http请求响应包括两个部分:请求和响应
        -请求:
            请求包括三个部分:1.请求行;2.请求消息头;3。请求体
            1)请求行:包含三个信息1、请求的方式;2、请求的URl;3、请求的协议(一般都是HTTP1.1)
            2)请求消息头中包含了很多客户端需要告诉服务器的信息,比如:我的浏览器型号,版本,我能接受的内容的类型
            3)请求体,三种情况
                get方式:没有请求体,但是只有一个queryString
                post方式:有请求体,form data
                json方式:有请求体,request payload
         -响应:
            响应也包含三个:1.响应行;2.响应头;3.响应体
            1)响应行包含三个信息:1.协议;2.响应状态码(200);3.响应状态(ok)
            2)响应头:包含了服务器的信息;服务器发送给浏览器的信息(内容的媒体类型、编码、内容长度等)
            3)响应体:响应的实际内容(比如请求add.html页面时,响应的内容就是<html><head><body><form>、、、


   200:正常响应
   404:找不到资源
   405:请求方式不支持
   500:服务器内部错误
 */

public class Http {
}

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:33:50  更:2022-02-19 01:34:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:30:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码