Java学习——day2(Servlet 基础编程)

article/2025/6/28 19:04:34

文章目录

  • 1. 什么是 Servlet?
  • 2. Servlet 的生命周期
    • 2.1 init()
    • 2.2 service()
    • 2.3 destroy()
  • 3. 创建 Servlet 类
  • 4. Servlet 配置方式
    • 4.1 创建步骤
    • 4.2 重新构建并启动项目
    • 4.3 启动Tomcat
  • 5. 总结

1. 什么是 Servlet?

Servlet 是 Java Web 中用于处理客户端请求并返回响应的服务器端程序。 它运行在服务器上的 Servlet 容器(如 Tomcat)中,是 Java EE 的核心技术之一。

2. Servlet 的生命周期

Servlet 的生命周期由以下三个方法控制:

2.1 init()

  • 作用:在 Servlet 被首次加载时执行,仅执行一次。用于执行初始化操作。
  • 触发时机:容器首次加载该 Servlet 时调用。
@Override
public void init() throws ServletException {System.out.println("Servlet 初始化...");
}

2.2 service()

  • 作用:每次收到请求时调用,用于处理客户端请求。
  • 说明:内部会根据请求类型(GET、POST 等)调用对应的 doGet()doPost() 方法。
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.getWriter().write("Hello from doGet!");
}

2.3 destroy()

  • 作用:在 Servlet 被销毁前执行,用于释放资源。
  • 触发时机:容器卸载 Servlet 或服务器关闭时调用。
@Override
public void destroy() {System.out.println("Servlet 销毁...");
}

3. 创建 Servlet 类

示例:HelloServlet.java

package com.example.servlet;import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;public class HelloServlet extends HttpServlet {protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("text/html;charset=UTF-8");resp.getWriter().write("<h1>Hello from Servlet!</h1>");}
}

创建步骤如下图:
在这里插入图片描述
在这里插入图片描述创建好后如图:
在这里插入图片描述

4. Servlet 配置方式

  • 方法:web.xml 配置(传统方式)
  • 路径:WEB-INF/web.xml

4.1 创建步骤

手动右键 webapp → New → Directory → 输入 WEB-INF
然后右键 WEB-INF → New → File → web.xml
创建后输入以下内容

<servlet><servlet-name>helloServlet</servlet-name><servlet-class>HelloServlet</servlet-class>
</servlet><servlet-mapping><servlet-name>helloServlet</servlet-name><url-pattern>/hello</url-pattern>
</servlet-mapping>

4.2 重新构建并启动项目

在这里插入图片描述

4.3 启动Tomcat

方法同第1天所示(可查看前一天具体步骤)
建议进入 webapps 文件夹中手动删除老的 javaweb-demo/ 目录和 .war 文件,避免 Tomcat缓存老版本。
后在 IDEA 终端或命令行执行:

mvn clean package

后将 target/javaweb-demo.war 复制到 Tomcat 的 webapps 文件夹中。
再双击 startup.bat启动Tomcat。

最后浏览器访问地址:http://localhost:8080/javaweb-demo/hello
成功后如图:

在这里插入图片描述

5. 总结

项目说明
生命周期方法init()service()destroy()
请求处理核心方法doGet() / doPost()
配置方式web.xml(传统)或 @WebServlet(注解)
编写基本流程创建类 → 继承 HttpServlet → 实现方法 → 配置路由

http://www.hkcw.cn/article/seUGeTRMFL.shtml

相关文章

Aop + 注解实现数据字典类型转换 EasyExcel导出

Aop 注解 实现数据字典类型转换 文章目录 Aop 注解 实现数据字典类型转换一、基础方式✅字典转换简介&#x1f449;实现步骤✅ 1. 定义自定义注解Dict ✅ 2. 定义查询字典项的两个方法✅ 3. 定义Aop拦截我们查询的方法✅ 4. VO映射类✅ 5. Controller层✅ 6. serviceImpl✅ 7. …

力扣热题100之对称二叉树

题目 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 代码 方法一&#xff1a;递归 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left …

链式前向星图解

e[idx] b; 边之终点 ne[idx] h[a]; 谓之头插之边 h[a] idx ; 谓之指针更新 注意&#xff1a;上述以a为开头的一条链上的结点&#xff0c;在物理上都是a的邻接点&#xff0c;相邻的边用idx来标明序号&#xff0c;相邻的边之间有映射。 链式前向星的遍历 假设顶点 u 的邻接表…

MybatisPlus(含自定义SQL、@RequiredArgsConstructor、静态工具类Db)

大家在日常开发中应该能发现&#xff0c;单表的CRUD功能代码重复度很高&#xff0c;也没有什么难度。而这部分代码量往往比较大&#xff0c;开发起来比较费时。 因此&#xff0c;目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是…

R语言基础| 创建数据集

在R语言中&#xff0c;有多种数据类型&#xff0c;用以存储和处理数据。每种数据类型都有其特定的用途和操作函数&#xff0c;使得R语言在处理各种数据分析任务时非常灵活和强大&#xff1a; 向量&#xff08;Vector&#xff09;: 向量是R语言中最基本的数据类型&#xff0c;它…

UE特效Niagara性能分析

开启Niagara调试器 开启显示概览 界面显示 &#x1f7e9; 上方绿色面板&#xff1a;Niagara DebugHud 这是 HUD&#xff08;调试视图&#xff09; 模式下的性能统计显示&#xff0c;内容如下&#xff1a; 项目含义SystemFilter: ShockWave_01当前选中的 Niagara 粒子系统名称…

MySQL——事务

目录 问题 什么是事务 为什么会有事务 事务版本支持 事务提交方式 事务常见操作 事务隔离级别 查看与设置隔离性 事务四种隔离级别 读未提交 读提交 不可重复读 串行化 一致性 理解隔离性 4个隐藏字段 undo日志 MVCC Read View RR 与 RC 本质区别 问题…

Vue-3-前端框架Vue基础入门之VSCode开发环境配置和Tomcat部署Vue项目

文章目录 1 安装配置VSCode1.1 安装中文语言插件1.2 主题颜色1.3 禁用自动更新1.4 开启代码提示设置1.5 安装open in browser插件2 安装配置nodejs2.1 配置环境变量2.2 npm与maven的区别2.3 使用npm避坑3 创建Vue项目3.1 两种创建方式3.2 package.json3.3 安装新的依赖3.4 运行…

Webpack依赖

Webpack到底怎么对我们的项目进行打包捏&#xff1f; 在webpack处理应用程序时&#xff0c;会根据命令或者配置文件找到入口文件 从入口开始&#xff0c;会生成一个依赖关系图&#xff0c;这个依赖关系图会包含应用程序中所需的所有模块&#xff08;.js、css文件、图片、字体…

关于找不到符号,符号变量log的问题的解决方案

创建时间&#xff1a;06月02日 1、问题描述 最近在学习鱼皮的AI超级智能体项目过程中&#xff0c;遇到如下错误&#xff1a; java: 找不到符号符号: 变量 log位置: 类 com.liucc.aiagent.app.LoveApp2、排查思路 网上的常见解决思路主要是检查lombok插件是否安装、Enable…

mysql离线安装教程

1.下载地址: https://downloads.mysql.com/archives/community/ 2.上传安装包到系统目录,并解压 tar -xvf mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar3.检查系统中是否存在mariadb的rpm包 rpm -qa|grep mariadb存在则删除 rpm -e xxx4.解压完后执行如下命令安装 sudo rpm -iv…

【git-首次初始化本地项目、关联远程仓库】

使用场景&#xff1a; windows系统本地首次创建的项目本地已存在但未关联为git项目 操作步骤 创建远程仓库 在gitee或github创建新仓库即可本地安装git 搜索“git安装教程”&#xff0c;按照步骤安装即可打开git中端&#xff0c;进入项目文件夹 cd E:\xxx备注&#xff1a;这…

AI驱动的文本转Mermaid图表工具Smart Mermaid

简介 什么是 Smart Mermaid &#xff1f; Smart Mermaid 是一款基于 AI 技术的 Web 应用程序&#xff0c;能够将文本内容智能转换为 Mermaid 格式的代码&#xff0c;并将其渲染成可视化图表。用户只需输入文本描述&#xff0c;AI 即可生成相应的图表&#xff0c;支持多种图表类…

调用蓝耘API打造AI 智能客服系统实践教程

声明&#xff1a;文章是实验教程&#xff0c;不是广告 1.前言 在用户与人工客服的沟通中&#xff0c;等待时间长、需求难满足等问题频发&#xff0c;企业面临用户流失风险&#xff0c;用户渴望快速精准的答案&#xff0c;企业需要“开源节流”、“降本增效”。对此&#xff0c…

VM图像处理之图像二值化

什么是灰度&#xff1f; 灰度&#xff08;Grayscale&#xff09;是指将彩色图像转换为仅包含亮度信息&#xff08;黑白过渡&#xff09;的单通道图像的过程或结果。灰度图像中每个像素的数值代表该点的明暗程度&#xff0c;而不包含颜色信息。 亮度代替颜色&#xff1a; 灰度…

通信革新与网络安全探索与创新:开启未来之门

在科技飞速发展的当下&#xff0c;各领域的前沿探索正不断刷新着人类的认知与能力边界。脑机接口领域取得重大突破&#xff0c;上海阶梯医疗科技有限公司成功完成国内首例侵入式脑机接口系统前瞻性临床试验&#xff0c;受试者通过植入大脑的设备实现用意念玩游戏&#xff0c;为…

sigmastar实现SD卡升级

参考文章:http://wx.comake.online/doc/DD22dk2f3zx-SSD21X-SSD22X/customer/development/software/Px/zh/sys/P3/usb%20&%20sd%20update.html#21-sd 1、构建SD卡升级包 在project下make image完成后使用make_sd_upgrade_sigmastar.sh脚本打包SD卡升级包。 ./make_sd_up…

hook组件-useEffect、useRef

hook组件-useEffect、useRef useEffect 用法及执行机制 WillMount -> render -> DidMount ShouldUpdate -> WillUpdate -> render -> DidUpdate WillUnmount(只有这个安全) WillReceiveProps useEffect(callback) 默认所有依赖都更新useEffect(callback, [])&am…

Spring 5 响应式编程:构建高性能全栈应用的关键

本文已收录在Github&#xff0c;关注我&#xff0c;紧跟本系列专栏文章&#xff0c;咱们下篇再续&#xff01; &#x1f680; 魔都架构师 | 全网30W技术追随者&#x1f527; 大厂分布式系统/数据中台实战专家&#x1f3c6; 主导交易系统百万级流量调优 & 车联网平台架构&a…

用“红烧鱼”类比说明卷积神经网络CNN的概念

我们用一个生活中的例子——「厨房做红烧鱼」 的场景&#xff0c;来类比卷积神经网络中多层卷积核的工作过程。你会发现&#xff0c;卷积层就像厨房里分工明确的厨师团队&#xff0c;逐步处理食材&#xff0c;最终完成一道复杂的菜品。 &#x1f41f; 生活案例&#xff1a;厨房…