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!"

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

运行成功示例:

相关推荐
悠哉悠哉愿意40 分钟前
【电赛学习笔记】MaxiCAM 项目实践——与单片机的串口通信
笔记·python·单片机·嵌入式硬件·学习·视觉检测
快乐肚皮1 小时前
ZooKeeper学习专栏(五):Java客户端开发(原生API)详解
学习·zookeeper·java-zookeeper
慕y2741 小时前
Java学习第七十二部分——Zookeeper
java·学习·java-zookeeper
★YUI★2 小时前
学习游戏制作记录(剑投掷技能)7.26
学习·游戏·unity·c#
蓝桉8022 小时前
opencv学习(图像金字塔)
人工智能·opencv·学习
誰能久伴不乏3 小时前
Linux 系统调用详解:操作文件的常用系统调用
服务器·网络·servlet
rannn_1113 小时前
Java学习|黑马笔记|Day23】网络编程、反射、动态代理
java·笔记·后端·学习
go54631584653 小时前
中文语音识别与偏误检测系统开发
开发语言·人工智能·学习·生成对抗网络·数学建模·语音识别
好奇龙猫4 小时前
日语学习-日语知识点小记-构建基础-JLPT-N3阶段(9):ようなN
学习
牵牛老人4 小时前
OpenCV学习探秘之二 :数字图像的矩阵原理,OpenCV图像类与常用函数接口说明,及其常见操作核心技术详解
opencv·学习·矩阵