【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的日志

相关推荐
人道领域13 小时前
Day | 11 【苍穹外卖统计业务的实现:含详细思路分析】
java·数据库·后端·苍穹外卖
xiaoye370818 小时前
Java 自动装箱 / 拆箱 原理详解
java·开发语言
YDS82919 小时前
黑马点评 —— 分布式锁详解加源码剖析
java·spring boot·redis·分布式
迷藏49419 小时前
**发散创新:基于 Rust的开源权限管理系统设计与实战**在现代软件架构中,**权限控制**早已不
java·开发语言·rust·开源
升鲜宝供应链及收银系统源代码服务20 小时前
《IntelliJ + Claude Code + Gemini + ChatGPT 实战配置手册升鲜宝》
java·前端·数据库·chatgpt·供应链系统·生鲜配送
daidaidaiyu20 小时前
Nacos实例一则及其源码环境搭建
java·spring
小江的记录本20 小时前
【Redis】Redis全方位知识体系(附《Redis常用命令速查表(完整版)》)
java·数据库·redis·后端·python·spring·缓存
摇滚侠20 小时前
Java 项目《谷粒商城-1》架构师级Java 项目实战,对标阿里 P6-P7,全网最强,实操版本
java·开发语言
zihao_tom21 小时前
Spring Boot(快速上手)
java·spring boot·后端
hua8722221 小时前
SpringSecurity之跨域
java