【Java】HttpServlet类简单方法和请求显示

1、HttpServlet类简介🍀

Servlet类中常见的三个类有:☑️HttpServlet类,☑️HttpServletRequest类,☑️HttpResponse类

🐬其中,HttpServlet首先必须读取Http请求的内容。Servlet容器负责创建HttpServlet对象,并把Http请求直接封装到HttpServlet对象中,大大简化了HttpServlet解析请求数据的工作量💪

🐬使用HttpServlet类时,需要继承这个类、重写里面的方法并把重写的代码插入到Tomcat的既定流程当中

创建HttpServlet的步骤------"四部曲"

1)扩展HttpServlet抽象类;

2)覆盖HttpServlet的部分方法,如覆盖doGet()或doPost()方法;

3)获取HTTP请求信息。通过HttpServletRequest对象来检索HTML表单所提交的数据或URL上的查询字符串;

4)生成HTTP响应结果。通过HttpServletResponse对象生成响应结果,它有一个getWriter()方法,该方法返回一个PrintWriter对象。

2、HttpServlet类中的方法

(1)常见方法

HttpServlet类中常见的方法如下🌟

|--------------------------|------------------------------------------------------------------------------------------|---------------------------------------|
| 方法 | 方法作用 | 说明 |
| init | servlet 被实例化之后,自动执行的方法.用来进行初始化工作 | 这三个方法都不需要手动调用。Tomcat会在合适的时机,自动调用这三个方法 |
| destory | Servlet 被销毁之前,自动执行的方法.用来进行释放资源的操作 | 这三个方法都不需要手动调用。Tomcat会在合适的时机,自动调用这三个方法 |
| service | 每次收到 http 请求,就会自动执行的方法.处理请求, 计算响应(服务器的主逻辑) | 这三个方法都不需要手动调用。Tomcat会在合适的时机,自动调用这三个方法 |
| doGet | 用于获取服务器信息,并将其做为响应返回给客户端 | 根据请求的方法,被service调用 |
| doPost | 用于客户端把数据传送到服务器端,Post适合发送大量的数据。 | 根据请求的方法,被service调用 |
| doDelete/doPut/doOptions | 用来处理一个HTTP DELETE操作,这个操作允许客户端请求从服务器上删除URL/这个操作自动地决定支持哪一种HTTP方法/操作包含请求体的数据,Servlet应该按照他行事 | 根据请求的方法,被service调用 |

(2)验证doGet、doPost、doDelete

·postman

什么是postman?

在开发APP接口的过程中,一般接口写完之后,后端开发都会模拟调用一下请求。在用Postman之前,对于一般的get请求基本都会用浏览器来简单模拟。

Postman是一款支持http协议的接口调试与测试工具,具有功能强大、使用简单且易用性好的特点🚀

postman下载地址

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 doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doGet-sys");
        resp.getWriter().write("doGet");
    }

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

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

·验证doGet方法

控制台打印

·验证doPost

·验证doDelete

3、返回请求内容

用StringBuilder来存储返回的请求内容并打印

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;
import java.util.Enumeration;

@WebServlet("/show")
public class ShowRequestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(req.getProtocol());
        //返回协议名
        stringBuilder.append("</br>");
        stringBuilder.append(req.getMethod());
        //返回使用的方法
        stringBuilder.append("</br>");
        stringBuilder.append(req.getRequestURI());
        //返回发送请求的URI
        stringBuilder.append("</br>");
        stringBuilder.append(req.getContextPath());
        //返回Context路径
        stringBuilder.append("</br>");
        stringBuilder.append(req.getQueryString());
        //返回请求的query

        Enumeration<String> headernames = req.getHeaderNames();
        while (headernames.hasMoreElements()){
            String key = headernames.nextElement();
            String value = req.getHeader(key);
            stringBuilder.append(key + ":" + value);
            //返回query中的key和value
        }
        resp.setContentType("text/html;charset=utf8");
        resp.getWriter().write(stringBuilder.toString());
    }
}

使用浏览器打开,得到下面结果👏

使用postman,得到相同结果

相关推荐
m0_687399845 分钟前
QT combox 前缀匹配
开发语言·数据库·qt
Jason-河山7 分钟前
利用 Python 爬虫采集 1688商品详情
java·http
计算机源码社8 分钟前
分享一个餐饮连锁店点餐系统 餐馆食材采购系统Java、python、php三个版本(源码、调试、LW、开题、PPT)
java·python·php·毕业设计项目·计算机课程设计·计算机毕业设计源码·计算机毕业设计选题
Zww089111 分钟前
idea插件市场安装没反应
java·ide·intellij-idea
夜雨翦春韭13 分钟前
【代码随想录Day31】贪心算法Part05
java·数据结构·算法·leetcode·贪心算法
汤兰月13 分钟前
Python中的观察者模式:从基础到实战
开发语言·python·观察者模式
计算机学姐13 分钟前
基于微信小程序的调查问卷管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
DieSnowK14 分钟前
[C++][第三方库][httplib]详细讲解
服务器·开发语言·c++·http·第三方库·新手向·httplib
火红的小辣椒19 分钟前
PHP反序列化8(phar反序列化)
开发语言·web安全·php
problc24 分钟前
Android 组件化利器:WMRouter 与 DRouter 的选择与实践
android·java