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

重新启动项目

相关推荐
Boilermaker19922 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
Cherry的跨界思维2 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
alonewolf_993 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子3 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
sheji34163 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
恋爱绝缘体13 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wszy18094 小时前
新文章标签:让用户一眼发现最新内容
java·python·harmonyos
wszy18094 小时前
顶部标题栏的设计与实现:让用户知道自己在哪
java·python·react native·harmonyos
程序员小假5 小时前
我们来说一下无锁队列 Disruptor 的原理
java·后端
资生算法程序员_畅想家_剑魔5 小时前
Kotlin常见技术分享-02-相对于Java 的核心优势-协程
java·开发语言·kotlin