【JavaEE】_HttpServlet类

目录

[1. init方法](#1. init方法)

[2. destory方法](#2. destory方法)

[3. service方法](#3. service方法)

[4. servlet生命周期](#4. servlet生命周期)


前文已经提及到:servlet是tomcat提供的,用于操作HTTP协议的一组API,可以将这组API理解为HTTP服务器的框架;

编写一个servlet程序,往往都要继承HttpServlet类,重写里面的方法,而无需写一个main方法;

对于以往的程序,可将程序视为一辆汽车,main方法就是发动机;

对于servlet程序,可将servlet程序视为一辆火车的车厢,这个程序没有main方法,不是直接运行的,而是放到tomcat上运行的,而tomcat程序是有main方法的,tomcat就是火车头,写的webapp就是车厢。而继承HttpServlet类,重写其方法,就是把程序员自己定义的代码插入到tomcat中;

1. 核心方法

|-------------------------------|-------------------------------|
| 方法名称 | 调用时机 |
| init | 在HttpServlet实例化之后被调用一次 |
| destroy | 在HttpServlet实例不再使用的时候调用一次 |
| service | 收到HTTP请求的时候调用 |
| doGet | 收到GET请求时调用(由service方法调用) |
| doPost | 收到POST请求时调用(由service方法调用) |
| doPut/doDelete/do Options/... | 收到其他请求时调用(由service方法调用) |

注意:1. 以上方法均可在子类中重写;

  1. 以上方法被重写后,均不需要程序员手动调用 ,都是tomcat在合适的时机自行调用

2. init方法

  1. init方法在Servlet被实例化之后自动执行,用于完成初始化操作

3. destory方法

  1. destory方法在Servlet被销毁之前自动执行,用于释放资源

  2. destory方法很大概率是执行不到的,一个Servlet不用了,说名tomcat要关闭了,tomcat关闭有两种方式:

(1)直接销毁tomcat进程,这种情况下完全来不及调用destory;(更常见)

(2)通过8005管理端口,给tomcat发送停机指令,调用destory关闭tomcat;

4. service方法

  1. service方法在每次收到HTTP请求时自动执行,用于处理请求与计算响应

  2. 如果不重写service,父类(HttpServlet)的service就会根据请求的方法,分别调用doGet或doPost或doPut方法;

例如:

.java内容如下:

java 复制代码
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/Method")
public class MethodServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("doPost");
        resp.getWriter().write("doPost");
    }

    @Override
    protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doPut");
        resp.getWriter().write("doPut");
    }

    @Override
    protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doDelete");
        resp.getWriter().write("doDelete");
    }
}

使用Postman构造一个post请求进行测试:

同理构造doPut方法和doDelete方法进行发送;

在服务器日志端也可查看到记录:

5. servlet生命周期

开始时,执行 init;

每次收到请求,执行 service;

销毁前执行 destroy;

相关推荐
quokka56几秒前
Springboot 整合 logback 日志框架
java·spring boot·logback
计算机学姐6 分钟前
基于SpringBoot+Vue的在线投票系统
java·vue.js·spring boot·后端·学习·intellij-idea·mybatis
救救孩子把22 分钟前
深入理解 Java 对象的内存布局
java
落落落sss25 分钟前
MybatisPlus
android·java·开发语言·spring·tomcat·rabbitmq·mybatis
万物皆字节30 分钟前
maven指定模块快速打包idea插件Quick Maven Package
java
夜雨翦春韭37 分钟前
【代码随想录Day30】贪心算法Part04
java·数据结构·算法·leetcode·贪心算法
我行我素,向往自由44 分钟前
速成java记录(上)
java·速成
一直学习永不止步1 小时前
LeetCode题练习与总结:H 指数--274
java·数据结构·算法·leetcode·数组·排序·计数排序
邵泽明1 小时前
面试知识储备-多线程
java·面试·职场和发展
程序员是干活的1 小时前
私家车开车回家过节会发生什么事情
java·开发语言·软件构建·1024程序员节