• 【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)


    一、什么是Servlet

    Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app

    1.1 Servlet能干什么?

    • 🚕允许程序猿注册一个类, 在 Tomcat 收到某个特定的 HTTP 请求的时候, 执行这个类中的一些代码
    • 🚕帮助程序猿解析 HTTP 请求, 把 HTTP 请求从一个字符串解析成一个 HttpRequest 对象.
    • 🚕帮助程序猿构造 HTTP 响应. 程序猿只要给指定的 HttpResponse 对象填写一些属性字段, Servlet
    • 🚕就会自动的安装 HTTP 协议的方式构造出一个 HTTP 响应字符串, 并通过 Socket 写回给客户端

    二、第一个Servlet程序

    2.1 创建项目(Maven)

    使用 IDEA 创建一个 Maven 项目
    在这里插入图片描述

    2.2 引入依赖(Servlet)

    pom.xml 中引入 Servlet API 依赖的 jar 包:

    🚓在中央仓库 https://mvnrepository.com/ 中搜索 “servlet”, 一般第一个结果就是
    🚓选择匹配的版本(可以在 http://tomcat.apache.org/whichversion.html 查询版本对应关系)
    🚓把中央仓库中提供的 xml 复制到项目的 pom.xml 中
    在这里插入图片描述
    在这里插入图片描述

    2.3 创建目录(webapp)

    在 main 目录下, 和 java 目录并列, 创建一个 webapp 目录
    在这里插入图片描述
    在 webapp 目录内部创建一个 WEB-INF 目录, 并创建一个 web.xml 文件
    在这里插入图片描述
    在web.xml中拷入以下代码
    在这里插入图片描述

    2.4 编写代码(HelloServlet)

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

    @WebServlet("/hello")
    public class HelloServlet extends HttpServlet {
        @Override
        protected void doDelete(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

    🚓在这个类上方加上 @WebServlet("/hello") 注解, 表示 Tomcat 收到的请求中, 路径为 /hello 的请求才会调用 HelloServlet 这个类的代码. (这个路径未包含 Context Path)

    🚓重写 doGet 方法. doGet 的参数有两个, 分别表示收到的 HTTP 请求 和要构造的 HTTP 响应. 这个方法会在 Tomcat 收到 GET 请求时触发

    🚓HttpServletRequest 表示 HTTP 请求. Tomcat 按照 HTTP 请求的格式把 字符串 格式的请求转成了一个 HttpServletRequest 对象. 后续想获取请求中的信息(方法, url, header, body 等) 都是通过这个对象来获取.

    🚓HttpServletResponse 表示 HTTP 响应. 代码中把响应对象构造好(构造响应的状态码, header, body 等)

    🚓resp.getWriter() 会获取到一个流对象, 通过这个流对象就可以写入一些数据, 写入的数据会被构造成一个 HTTP 响应的 body 部分, Tomcat 会把整个响应转成字符串, 通过 socket 写回给浏览器

    2.5 打包代码(war)

    首先知道什么是war包: war 包是 java web 的程序, 里面除了会包含 .class 文件之外, 还会包含 HTML, CSS, JavaScript, 图片, 以及其他的 jar 包. 打成 war 包格式才能被 Tomcat 识别

    在 pom.xml 中新增一个 packing 标签, 表示打包的方式是打一个 war 包,再新增一个 build 标签, 内置一个 finalName 标签, 表示打出的 war 包的名字是 HelloServlet
    在这里插入图片描述
    双击package
    在这里插入图片描述
    成功打包:
    在这里插入图片描述

    2.6 部署

    把打包好的war包拷贝到tomcat的webapps目录中
    在这里插入图片描述
    启动 Tomcat , Tomcat 就会自动把 war 包解压缩
    在这里插入图片描述
    看到这个日志说明 Tomcat 已经正确识别了 ServletHelloWorld 这个 webapp

    2.7 验证程序

    通过浏览器访问 http://127.0.0.1:8080/hello_servlet/hello

    在这里插入图片描述
    注意:
    🚙不是tomcat一启动,我们写的doGet就能执行,而是要收到路径匹配的GET请求才能执行!!
    🚙URL 中的路径分成两个部分, 其中hello_servlet 为 Context Path,标识了一个webapp, hello 为 Servlet Path,标识当前请求要调用哪个Servlet类的doGet方法

    三、更便捷的部署方式

    手动拷贝 war 包到 Tomcat 的过程比较麻烦. 我们还有更方便的办法.
    此处我们使用 IDEA 中的 Smart Tomcat 插件完成这个工作
    下载smart Tomcat
    在这里插入图片描述
    配置 Smart Tomcat 插件
    在这里插入图片描述
    在这里插入图片描述
    点击运行:
    在这里插入图片描述
    idea下方显示tomcat的日志
    在这里插入图片描述

  • 相关阅读:
    elasticsearch6.x 数据的备份
    技术干货|昇思MindSpore NLP模型迁移之Roberta ——情感分析任务
    360反馈可以改变行为吗?
    fio搞坏于修复
    腾讯WXG前端面经
    【计算机网络】网络基础(三)
    Bioinformatics2022 | AdvProp+:基于集成网络的分子性质预测与药物研发
    R语言使用attach函数绑定dataframe数据(可以直接使用列名称访问数据)
    Spring框架技术的核心与设计思想
    为啥 Erlang 没有像 Go、Scala 语言那样崛起?
  • 原文地址:https://blog.csdn.net/m0_68101404/article/details/134381392