• 【Servlet】实现Servlet程序


    1. 最朴素方式

    1. 创建项目

    选择Maven项目
    在这里插入图片描述

    2. 引入依赖

    Maven项目创建完后会生成一个pom.xml文件,我们可以在这个文件中引入我们需要的Servlet API依赖的 jar 包。
    pom
    引入步骤:

    1. 我们可以在中央仓库 中搜servlet
      servlet

    2. 点击servlet,选择版本,一般要和Tomcat版本对应,我们下面使用tomcat为8.5,那么servlet就要选择3.1.0:
      可以在tomcat查看对应版本。
      对应
      版本

    3. 把maven提供的xml复制到pom.xml中:
      添加到dependencies标签中,这个表情中可以引入多个依赖。
      有时依赖可能未加载上,我们可以点击右上角的m来再次加载。
      xml
      pom
      加载

    3. 创建目录

    当项目创建后,idea会自动生成一些目录,分别具有不同的含义。
    目录
    当然这些是不够的,我们还需要创建一些目录:
    在main目录下创建webapp目录,webapp目录下创建WEB-INF,WEB-INF下创建web.xml文件。
    在这里插入图片描述
    然后把下面代码粘贴到web.xml中:

    DOCTYPE web-app PUBLIC
            "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
            "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
        <display-name>Archetype Created Web Applicationdisplay-name>
    web-app>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    webapp 目录就是未来部署到 Tomcat 中的一个重要的目录. 当前我们可以往 webapp 中放一些静态资源, 比如 html , css 等.。
    在这个目录中还有一个重要的文件 web.xml. Tomcat 找到这个文件才能正确处理 webapp 中的动态资源。

    4. 编写代码

    在java 目录中创建一个类 HelloServlet, 代码如下:

    @WebServlet("/hello")
    public class HelloServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("hello world");
            resp.getWriter().write("hello world");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    代码解析

    1. 创建一个类 HelloServlet , 继承自 HttpServlet;
    2. 在这个类上方加上 @WebServlet(“/hello”) 注解, 表示 Tomcat 收到的请求中, 路径为 /hello的请求才会调用 HelloServlet 这个类的代码. (这个路径未包含 Context Path);
    3. 重写 doGet 方法. doGet 的参数有两个, 分别表示收到的 HTTP 请求 和要构造的 HTTP 响应. 这个方法会在 Tomcat 收到 GET 请求时触发;
    4. HttpServletRequest 表示 HTTP 请求. Tomcat 按照 HTTP 请求的格式把 字符串 格式的请求转成了一个 HttpServletRequest 对象. 后续想获取请求中的信息(方法, url, header, body 等) 都是通过这个对象来获取;
    5. HttpServletResponse 表示 HTTP 响应. 代码中把响应对象构造好(构造响应的状态码, header, body 等);
    6. resp.getWriter() 会获取到一个流对象, 通过这个流对象就可以写入一些数据, 写入的数据会被构造成一个 HTTP 响应的 body 部分, Tomcat 会把整个响应转成字符串, 通过 socket 写回给浏览器。

    总结

    1. 我们的代码不是通过 main 方法作为入口了. main 方法已经被包含在 Tomcat 里, 我们写的代码会被 Tomcat 在合适的时机调用起来;
    2. 但是也需要满足三个条件:
    • 创建的类需要继承自 HttpServlet;
    • 这个类需要使用 @WebServlet 注解关联上一个 HTTP 的路径;
    • 这个类需要实现 doXXX 方法。

    5. 打包程序

    使用 maven 进行打包. 打开 maven 窗口 (一般在 IDEA 右侧就可以看到 Maven 窗口, 如果看不到的话, 可以通过 菜单 -> View -> Tool Window -> Maven 打开) 然后展开 Lifecycle , 双击 package 即可进行打包。
    打包
    打包成功,是一个jar包:
    打包成功
    jar
    但是,TomCat需要的是一个war包,而我们却是jar包,所以需要在pom.xml中加入下面标签:

    	<packaging>warpackaging>
    
    • 1

    还有这个jar包的名字比较的浮夸,可以添加下面标签,使它变得低调:

        <build>
            <finalName>ServletHelloWorldfinalName>
        build>
    
    • 1
    • 2
    • 3

    再次打包,就得到我们需要得war包:
    war

    6. 部署程序

    把 war 包拷贝到 Tomcat 的 webapps 目录下:
    拷贝
    启动TomCat
    启动

    7. 验证程序

    在浏览器输入: http://127.0.0.1:8080/ServletHelloWorld/hello
    浏览器
    注意:
    URL 中的 PATH 分成两个部分, 其中 HelloServlet 为 Context Path, hello 为 Servlet Path;
    在这里插入图片描述

    2. 更方便方式

    上面的方式是比较麻烦的,而且每次修改代码都需要重新打war包,所以引入更加简单的方式:插件

    1. 安装Smart TomCat插件

    1. File->Settings
      在这里插入图片描述
    2. Plugins->Marketplace->搜索smart TomCat,安装即可。在这里插入图片描述

    2. 启动

    正常启动,选择就ok。
    1

  • 相关阅读:
    面试汇总:这是一份全面&详细的Android面试指南
    嵌入式软件工程师面试题——2025校招专题(三)
    【Linux】Ubuntu安装QQ【教程】
    使用js实现响应式瀑布流布局(附带动画效果)
    《机器人SLAM导航核心技术与实战》第1季:第6章_机器人底盘
    探索数据结构:从基础到高级
    【一起学Rust】Rust介绍与开发环境搭建
    为什么说区块链的性能难以衡量?
    CAS( 比较并交换-乐观锁机制-锁自旋 )
    2024最新软件测试【测试理论+ UI 自动化】面试题(内附答案)
  • 原文地址:https://blog.csdn.net/weixin_73392477/article/details/133637341