[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 识别依赖)

重新启动项目

相关推荐
我命由我123453 小时前
CesiumJS 笔记 - 获取容器中心点、Cartesian3 clone 方法、修改 Cartesian3 对象的高度
前端·javascript·css·前端框架·html·html5·js
嘻哈∠※5 小时前
0061基于 SpringBoot 的投稿与稿件处理系统设计与实现
java·spring boot·后端
白狐_7986 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander2586 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
码匠许师傅6 小时前
【C++ 面试真题】聊聊 C++ 的拷贝构造与拷贝赋值
java·c++·面试
极创信息8 小时前
系统安全隐患全方位排查方案:标准化渗透测试全流程
java·opencv·struts·数据挖掘·eclipse·语音识别·hibernate
汉字萌萌哒8 小时前
2019CCF-CSP入门级C++试题解析
java·开发语言·c++
喜欢的名字被抢了9 小时前
程序出问题怎么查,以及如何让它不掉线
java·运维·数据库
数据知道9 小时前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
2601_9499506310 小时前
Java 面试准备,用练题簿把“背过八股”变成“真正会答”
java·开发语言·面试·刷题·小程序推荐