当前位置: 首页 > news >正文

基于JSP内置对象的服务器端表单验证

实验五:基于JSP内置对象的服务器端表单验证

一、实验目标

掌握JSP表单验证在服务器端的实现技术。

二、设计思路

本实验设计一个简单的表单,用户输入任意字符后提交到服务器端,由JSP页面使用内置对象request接收用户输入,并在服务器端完成验证:

  • 判断输入是否为
  • 判断输入长度是否为5个字符

验证结果通过同一个JSP页面返回给用户

三、文件结构

本项目只需要2个文件:
FormValidation/
├── index.jsp # 表单页面
└── validate.jsp # 验证页面

四、核心代码

4.1 表单页面(index.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>表单验证实验</title><style>body {font-family: "微软雅黑";background-color: #f0f0f0;display: flex;justify-content: center;align-items: center;height: 100vh;}.container {background: white;padding: 30px;border-radius: 10px;box-shadow: 0 2px 10px rgba(0,0,0,0.1);width: 400px;text-align: center;}input {width: 80%;padding: 10px;margin: 15px 0;border: 1px solid #ccc;border-radius: 5px;font-size: 16px;}button {background-color: #4CAF50;color: white;padding: 10px 30px;border: none;border-radius: 5px;cursor: pointer;font-size: 16px;}button:hover {background-color: #45a049;}</style>
</head>
<body><div class="container"><h2>🔐 表单验证实验</h2><p>请输入 <strong>5个字符</strong>(不能为空)</p><form action="validate.jsp" method="post"><input type="text" name="userInput" placeholder="请输入5个字符" autofocus><br><button type="submit">判断</button></form></div>
</body>
</html>

4.2 验证页面(validate.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>验证结果</title><style>body {font-family: "微软雅黑";background-color: #f0f0f0;display: flex;justify-content: center;align-items: center;height: 100vh;}.container {background: white;padding: 30px;border-radius: 10px;box-shadow: 0 2px 10px rgba(0,0,0,0.1);width: 400px;text-align: center;}.success { color: green; font-size: 18px; margin: 20px 0; }.error { color: red; font-size: 18px; margin: 20px 0; }a { display: inline-block; margin-top: 20px; color: #4CAF50; text-decoration: none; }</style>
</head>
<body><div class="container"><h2>📋 验证结果</h2><%// 设置编码,防止中文乱码request.setCharacterEncoding("UTF-8");// 获取用户输入String input = request.getParameter("userInput");boolean isValid = false;String message = "";if (input == null || input.trim().isEmpty()) {message = "❌ 错误:输入不能为空!请输入5个字符。";} else if (input.trim().length() != 5) {message = "❌ 错误:输入必须是5个字符!您输入了 " + input.trim().length() + " 个字符。";} else {isValid = true;message = "✅ 正确!您的输入「" + input + "」符合要求(5个字符)。";}%><% if (isValid) { %><div class="success"><%= message %></div><% } else { %><div class="error"><%= message %></div><script>// 2秒后跳转回表单页面(清空并聚焦)setTimeout(function() {window.location.href = "index.jsp?clear=true";}, 2000);</script><% } %><a href="index.jsp">← 返回重新输入</a></div>
</body>
</html>

五、测试过程

网页的测试界面

屏幕截图 2026-05-08 155759

当输入的字符是空时,不符合要求

屏幕截图 2026-05-08 155928

当输入的字符小于5时

屏幕截图 2026-05-08 160117

当输入的字符大于5时

屏幕截图 2026-05-08 160130

当输入满足要求的字符时

屏幕截图 2026-05-08 160052

并上传云端用公网访问

屏幕截图 2026-05-08 162811

六、实验小结

遇到的问题及解决方法

问题1:中文乱码
现象:页面显示的提示信息为乱码
原因:表单提交时字符编码不一致
解决:在 JSP 开头加上 <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>,并用 request.setCharacterEncoding("UTF-8") 接收参数

问题2:验证失败后文本框没有清空

现象:验证失败后,返回表单页面仍显示之前输入的内容
原因:没有主动清空输入框的值
解决:在 JavaScript 中跳转前或跳转时传递参数 ?clear=true,在表单页面判断并清空

问题3:云服务器无法访问

现象:在本地浏览器无法访问 ECS 的 JSP 页面
原因:云服务器的安全组没有开放 8080 端口
解决:在阿里云控制台 → 安全组 → 添加入方向规则:端口 8080,授权对象 0.0.0.0/0

七、参考资料

《Web程序设计》,余元辉,清华大学出版社,2024.8

《JSP设计》(第三版),Hans Bergsten主编,林琪、朱涛江翻译 O'Reilly Media,Inc 2017年

http://www.jsqmd.com/news/777770/

相关文章:

  • 揭秘自学网络安全的三个必经成长阶段,保姆级路线图奉上,适合小白转行入门
  • 观察使用Taotoken聚合调用后月度AI模型API成本支出的明细与变化
  • 工业革命下制造业转型:技术驱动、就业重塑与工程师视角
  • 旗舰级 TWS 耳机选购指南:便携 HiFi 与高保真音质优选 - 行情观察室
  • 免费无广告照片去水印App推荐:2026手机去水印软件怎么选?免费照片去水印软件App盘点
  • 从账单明细反推API调用失败的可能原因
  • Intel VT-x虚拟化
  • 考研英语一、二大纲词汇表5500个单词电子版pdf(含正序版、乱序版和默写表)
  • 2026年乙酸钠厂家推荐:25%液体乙酸钠/结晶乙酸钠/碳源乙酸钠专业供应,泰州市兴华化学品有限公司选型参考 - 品牌推荐官
  • 成都企业 AI 私有知识库怎么升级为智能体?
  • 收藏必备!小白程序员必学:大模型Prompt注入攻防实战指南
  • Apk Tool逆向去除广告
  • PCB设计全流程解析:从原理图到生产文件的工程实践指南
  • AI获客手机哪家强?亲测案例分享! - 速递信息
  • 未来展会画面数量有望增多
  • 深度解析Dhizuku:掌握Android DeviceOwner权限共享的5大核心技术
  • CnOpenData 工业企业绿色发明授权专利质量统计表-一级子分类
  • 智慧树自动学习插件:3大核心功能让网课效率翻倍的终极指南
  • 比Zotero更适合中国科研人的文献管理软件?5款文献管理工具深度测评(含国产文献管理工具)
  • Amphenol ICC RJE1Y12A83152401工业网络线束解析
  • 1980~2025.12.31各省市区县地表PM2.5 质量浓度日度数据
  • 日本半导体产业整合困局:从ASIC到ASSP的转型挑战
  • 如何判断论文该用深度改写还是普通模式:嘎嘎降AI模式选择免费决策完整教程
  • 解决Eclipse插件构建问题
  • 5分钟彻底改造VLC播放器:5款惊艳皮肤让你的影音体验焕然一新
  • 航天总体设计大模型系统:揭秘行业领先的人工智能AI赋能方案
  • 2026不锈钢复合板源头厂家:不锈钢复合板源头工厂+热轧不锈钢复合板/不锈钢复合管生产厂家+耐磨陶瓷贴片管道厂家合集 - 栗子测评
  • 直线电机DDL是什么?与滚珠丝杠的区别与选型指南
  • 武汉博克展科技有限公司是不是骗人的
  • 基于Spring Boot的汽车维修管理系统的设计与实现毕设源码