Javaweb学习——day3(Servlet 中处理表单数据)

文章目录

  • 一、概念学习
    • [1. GET vs POST 请求方式的区别](#1. GET vs POST 请求方式的区别)
    • [2. HttpServletRequest 获取表单数据](#2. HttpServletRequest 获取表单数据)
  • 二、代码讲解与练习
    • [第 1 步:在 webapp 下创建 login.html](#第 1 步:在 webapp 下创建 login.html)
    • [第 2 步:在 com.example 包下创建 LoginServlet](#第 2 步:在 com.example 包下创建 LoginServlet)
    • [第 3 步:修改 web.xml 注册 LoginServlet](#第 3 步:修改 web.xml 注册 LoginServlet)
    • [第 4 步:部署与测试](#第 4 步:部署与测试)

一、概念学习

1. GET vs POST 请求方式的区别

比较项 GET POST
数据位置 URL 中(如:?username=abc 请求体中,浏览器不可见
安全性 较差(数据暴露在地址栏) 较好(数据藏在请求体中)
数据长度限制 有限制(通常 < 2KB) 理论无限制
使用场景 查询操作(如搜索) 提交表单(如登录、注册)

2. HttpServletRequest 获取表单数据

方法 说明
request.getParameter(name) 获取单个参数值,如用户名
request.getParameterValues(name) 获取同名参数值数组,如 checkbox 多选
request.getParameterMap() 获取所有参数的 Map<参数名, String[]>
request.getMethod() 获取请求方法,如 GET 或 POST

二、代码讲解与练习

第 1 步:在 webapp 下创建 login.html

右键 webapp 文件夹 → New → HTML File → 命名为 login.html

输入以下内容:

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
    <h2>用户登录</h2>
    <form action="login" method="post">
        用户名:<input type="text" name="username"><br><br>
        密&nbsp;&nbsp;&nbsp;码:<input type="password" name="password"><br><br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

示例:

第 2 步:在 com.example 包下创建 LoginServlet

右键 com.example → New → Java Class → 命名为 LoginServlet

替换内容为:

java 复制代码
package com.example;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;

public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        String username = request.getParameter("username");
        String password = request.getParameter("password");

        PrintWriter out = response.getWriter();
        if ("admin".equals(username) && "123456".equals(password)) {
            out.println("<h3>登录成功,欢迎 " + username + "!</h3>");
        } else {
            out.println("<h3>用户名或密码错误!</h3>");
        }
    }
}

示例:

第 3 步:修改 web.xml 注册 LoginServlet

打开 web.xml 文件,在 标签中添加:

xml 复制代码
<servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.example.LoginServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/login</url-pattern>
</servlet-mapping>

示例:

第 4 步:部署与测试

编译项目(mvn package 或点击IDEA右侧 Maven 工具中的 package);

启动 Tomcat

浏览器访问:

http://localhost:8080/javaweb/login.html

(假设你的项目名是 javaweb,请根据实际路径调整)

输入用户名:admin,密码:123456

➤ 显示 "登录成功,欢迎 admin!"

➤ 否则显示 "用户名或密码错误!"

运行成功示例:

相关推荐
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛4 天前
计算机系统概论——校验码
学习
babe小鑫4 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode