[Java Web]在IDEA中完整实现Servlet的示例

一、Tomcat的相关下载和配置教程

https://blog.csdn.net/2301_79954314/article/details/142059407?fromshare=blogdetail&sharetype=blogdetail&sharerId=142059407&sharerefer=PC&sharesource=2302_80281315&sharefrom=from_link


二、Tomcat项目配置(备注:这里使用的是IDEA2024旗舰版)


三、创建 Servlet 类

java 复制代码
package servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

// 注解配置:指定Servlet处理/greeting路径的请求
@WebServlet("/greeting")
public class GreetingServlet extends HttpServlet {
    // 处理GET请求(浏览器直接访问、超链接、表单GET提交)
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1. 设置响应编码(解决中文乱码)
        response.setContentType("text/html;charset=UTF-8");
        // 2. 获取请求参数(URL中?name=张三 部分)
        String name = request.getParameter("name");
        // 3. 处理参数:如果没传name,默认显示"游客"
        if (name == null || name.isEmpty()) {
            name = "游客";
        }
        // 4. 向浏览器返回响应内容
        response.getWriter().println("<h1>你好," + name + "!这是Servlet的GET请求响应</h1>");
    }

    // 处理POST请求(表单POST提交、Ajax POST)
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1. 设置请求/响应编码(解决POST中文乱码)
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        // 2. 获取POST表单中的message参数
        String message = request.getParameter("message");
        // 3. 返回响应
        response.getWriter().println("<h1>收到你的POST消息:" + message + "</h1>");
    }
}

这里创建软件包是为了好管理代码,也可以不创建,直接在scr文件夹下建即可


四、创建前端 HTML 表单(测试 POST 请求)

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Servlet测试页面</title>
</head>
<body>
<h2>测试GET请求(直接访问Servlet)</h2>
<a href="/greeting?name=小宝你好!">点击发送GET请求</a>

<hr>

<h2>测试POST请求(表单提交)</h2>
<form action="/greeting" method="POST">
    输入消息:<input type="text" name="message" placeholder="比如:Servlet真简单" required>
    <input type="submit" value="提交POST请求">
</form>
</body>
</html>

注意:这里html文件需要建在web文件夹下才能正常运行


五、配置 Tomcat 并运行项目

注意:注意,这里接下来可能会出现一个错误:点击"点击发送GET请求"和输入消息内容之后点击"提交POST请求"出来的网页是404

原因:缺少对应的jakarta.servlet相关依赖

解决办法:去Maven官网下载相应的依赖Maven Repository: jakarta.servlet >> jakarta.servlet-api >> 6.0.0

将下载的依赖包另存到项目的lib文件夹下

回到IDEA中,找到lib文件夹下的依赖包,将 JAR 包 "添加为库"(让 IDEA 识别依赖)

重新启动项目

相关推荐
IT枫斗者枫哥2 小时前
MyBatis一对多分页:LIMIT 20,为什么凑不齐20个订单?
java·数据库
代码方舟2 小时前
Java数据工程:利用天远全网运营商三要素优化线上实名认证合规体验
java·人工智能
BBmmo2 小时前
我的 Java 学习笔记 · 第 7 篇:泛型与通配符
java
独泪了无痕2 小时前
Hutool之RandomUtil:随机数生成的终极利器
java·后端
花开路口2 小时前
深入理解 Java/Kotlin 协变与逆变
java·kotlin
运行时异常2 小时前
【WMS 仓储系统集成 AI Agent 实战】第 7 讲:Vue3 前端工程化——Token 刷新锁、Markdown 渲染踩坑与权限体系
java
她的男孩2 小时前
开放接口限流从 20 改到 200 还是每分钟 20 次:拆完防重放+幂等+限流,我找到 5 个静默失效的坑
java·后端·架构
天天被压力3 小时前
【Python 量化取数指南 #13】Python 把行情落库:sqlite 一键存,回测随用随取
java·人工智能·python
天天被压力3 小时前
【Python 量化取数指南 #14】Python 清洗行情数据:复权停牌对齐,回测不翻车
java·人工智能·python
独泪了无痕3 小时前
开发利器Hutool之MapUtil的使用
java·后端