【Servlet】实例测试+Servlet接口源码分析+原理图

本文详述了Servlet的环境搭建过程,包括Tomcat和Maven的安装,以及如何在Maven工程中配置Servlet依赖。通过编写HelloServlet类并配置web.xml,展示了Servlet的基本使用。同时,深入分析了Servlet的执行流程,揭示了service方法在请求处理中的关键作用。
摘要由CSDN通过智能技术生成

因为本文的环境准备、具体步骤以及实例都是围绕最后Servlet原理的阐述这一目的来进行的,因此,把Servlet原理图的位置放在此处,也未尝不可,如下图:
在这里插入图片描述

一、环境准备

1.Tomcat的安装

之前文章的链接:【详细步骤】Tomcat安装+主要目录分析+样例学习+IDEA中配置
(注:在IDEA中配置Tomcat服务器时,指定此引用路径)

作用:作为Web服务器,并在本地进行测试

2.Maven的安装

之前文章链接:【详细步骤】Maven的安装与配置+使用+镜像配置
(注:用IDEA自带的Maven配置起来不灵活,可事先自行下载并配置好镜像和仓库地址后,再在IDEA中指定此引用路径)

作用:进行项目管理,在Maven仓库中引用所需依赖(也可自动引入某些依赖的依赖)


二、具体步骤

1.创建Maven工程

在这里插入图片描述
在这里插入图片描述

2.添加Servlet相关依赖

新建的Maven工程中并无Servlet相关依赖,但当初Tomcat服务器中的examples文件夹中却有Servlet的相关例子,如图,其中右下角便有import javax.servlet.xxx
在这里插入图片描述
因此,在Tomcat根目录下存放jar包的目录,即lib目录中,一定有与此相关的jar包(此联想方式是受B站中一位大佬:狂神说Java的影响),如图,存在servlet-api.jar
在这里插入图片描述

因此去Maven仓库网中搜索servlet-api,选择较新的这个
在这里插入图片描述
再选择使用人数较多的这个
在这里插入图片描述
在这里插入图片描述
将其复制到自己Maven工程的pom.xml文件中并让Maven导入

3.编写HttpServlet的继承类

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello World!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello World!asdfsadf</h1>");
        out.println("</body>");
        out.println("</html>");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }
}

4.配置web.xml

Maven工程根据webapp原型模板自动生成了一个web.xml的模板,但这不是最标准的,最标准的模板是,Tomcat目录下的样例中的web.xml配置文件,最后是将Tomcat配置到此工程中,因此,Tomcat的原生配置模板优于Maven自动生成的配置模板。
在这里插入图片描述
最终根据实际项目需要,写入Servlet映射:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"
         metadata-complete="true">
  
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.zlc.servlet.HelloServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/h</url-pattern>
  </servlet-mapping>
</web-app>

5.配置Tomcat服务器

之前写过,不再赘述:【详细步骤】Tomcat安装+主要目录分析+样例学习+IDEA中配置

6.启动项目

在这里插入图片描述

三、Servlet原理(码分析+原理图)

我们自己的实现类
在这里插入图片描述
进入HttpServlet类
在这里插入图片描述
进入HttpServlet类的父类GenericServlet类
在这里插入图片描述
最终进入Servlet接口
在这里插入图片描述
在这里插入图片描述
Servlet并未实现service方法,再回溯至上一个类,即HttpServlet类的父类GenericServlet类,发现其也未实现service方法
在这里插入图片描述
再回溯至上一个类,即HttpServlet类,发现它实现了service方法
在这里插入图片描述

由源码可以看出,service就是一个综合的服务入口,来检查请求类型,并调用正确的请求方法,因此,结合之前的流程,可以总结出下图:
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超周到的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值