【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, 代码如下:

java 复制代码
@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");
    }
}

🚓在这个类上方加上 @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的日志

相关推荐
Daniel 大东2 分钟前
idea 解决缓存损坏问题
java·缓存·intellij-idea
wind瑞8 分钟前
IntelliJ IDEA插件开发-代码补全插件入门开发
java·ide·intellij-idea
HappyAcmen9 分钟前
IDEA部署AI代写插件
java·人工智能·intellij-idea
马剑威(威哥爱编程)14 分钟前
读写锁分离设计模式详解
java·设计模式·java-ee
鸽鸽程序猿15 分钟前
【算法】【优选算法】前缀和(上)
java·算法·前缀和
修道-032315 分钟前
【JAVA】二、设计模式之策略模式
java·设计模式·策略模式
九圣残炎21 分钟前
【从零开始的LeetCode-算法】2559. 统计范围内的元音字符串数
java·算法·leetcode
当归102433 分钟前
若依项目-结构解读
java
hlsd#1 小时前
关于 SpringBoot 时间处理的总结
java·spring boot·后端
iiiiiankor1 小时前
C/C++内存管理 | new的机制 | 重载自己的operator new
java·c语言·c++