小工具知识网

当前位置: 首页 > 行业知识 > 【Servlet】——Servlet API 详解

行业知识

【Servlet】——Servlet API 详解

2026-11-03 01:19:14 来源:互联网转载

个人主页:兜���有颗棉花糖

欢迎 点赞 收藏✨ 留言✉ 加关注本文由 兜里有颗棉花糖 原创

收录于专栏【Servlet】

本专栏旨在分享学习Servlet的一点学习心得,欢迎大家在评论区交流讨论

目录

  • 一、HttpServlet
  • 二、HttpServletRequest
    • 核心方法
    • 代码示例1
    • 如何获取query string和body(form格式)中的数据
    • 获取body(json格式)中的数据
      • jackon依赖的导入
      • 三、HttpServletResponse
        • setStatus
        • setHeader
        • 构造重定向响应
        • 返回一个html界面

          API就是一组类和方法,本文中我们学习Servlet API的三个类:HttpServlet、HttpServletRequest、HttpServletResponse。

          一、HttpServlet

          HttpServlet是我们编写Servlet代码用来的核心类,通过继承这个类并重写其中的方法,然后Tomcat去调用其中的代码逻辑。可以这样理解:我们这里写的代码(重写的方法)并不是我们自己手动调用手动执行的,而是将我们写地代码交给Tomcat,让Tomcat帮助我们执行调用这些代码。

          核心方法如下:

          • Init方法:在webapp被加载的时候会调用此方法,可以使用该方法进行初始化操作。
          • destroy方法:在webapp被销毁(或Tomcat结束)的时候执行destroy方法,可以使用该方法进行收尾工作。注意:该方法不能保证一定会被调用到。

            这里分为两种情况。

            第一种情况:通过8005端口给Tomcat发起一个特殊的请求,然后Tomcat就关闭了(这种情况可以调用到destroy方法)。

            第二种情况:直接杀***Tomcat进程,比如说通过任务资源管理器直接结束Tomcat任务进程,此时就无法执行destroy方法。

            实际开发中第二种情况占多数(尤其是在Linux中),这就提醒我们不能依赖destroy方法,因为该方法不一定被调用到。

            • service方法:每次收到请求会执行service方法,处理每个请求。一般会使用doXXX方法来替代service方法。

              对于上述方法,浏览器只能构造Get方法,对于其它的方法浏览器并不方便构造。如果想要构造其它的请求方法,我们可以使用ajax或者postman。

              实际开发中用到的最多的是Get和Post。

              二、HttpServletRequest

              HttpServletRequest是Java Servlet API提供的接口之一,用于表示客户端的HTTP请求。

              一个HTTP请求中都有哪些信息都会在HttpServletRequest类中进行体现。当Tomcat接收到Http请求时,它将解析请求并将相关的信息填充到HttpServletRequest对象中,从而使开发人员可以方便地获取和处理这些信息。

              核心方法

              下图是HttpServletRequest的方法:

              • URI和URL:URI是唯一资源标识符,URL是唯一资源定位符;URI用来区分不同的资源,而URL就是用来区分不同资源的一种方式。我们可以这样理解,URL是URI的实现方式。实际开发中一般会混着用。

                Enumeration getParameterNames()和String getParameter(String name)

                我们直到请求中可以通过一些方式把自定义数据传递到服务器中,有两种方式:

                第一种方式:query string,query string是键值对结构的数据,Tomcat收到请求后就会把query string解析成Map这样的键值对。然后使用getParameter就可以根据key获取到value;而getParameterNames是拿到所有的key。

                第二种方式:body:如果是通过post form表单的形式提交表单的话,此时body中也是键值对的形式(和query string一样)。

                getParameterValues方法:即一个key涉及到多个value。

                Enumeration getHeaderNames()和String getHeader(String name):获取到请求头中的键值对,Tomcat收到请求后也会把请求头解析成Map。getHeader是通过key拿到指定的value;而getHeaderNames是拿到所有的key。

                代码示例1

                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("/request")public class RequestServlet extends HttpServlet {    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        // 下行代码就是为了显示告诉浏览器,浏览器拿到的内容是html        resp.setContentType("text/html");        // 调用req的各个方法,把得到的结果汇总到一个字符串中,然后统一返回到桌面上        StringBuilder respBody = new StringBuilder();        // 由于下面的内容在浏览器是按照html展示的,\n在浏览器上并不是换行,所以使用
                来表示换行 // 获得HTTP请求协议的版本号 respBody.append(req.getProtocol()); respBody.append("

上一篇:方舟自己的服务器怎么进?

下一篇:Android课程设计-网上商城/外卖小助手(仿美团外卖)