【服务器端表单字符验证】

文章目录

一、实验目的

掌握JSP表单验证在服务器端的实现技术,实现对用户输入字符的非空及长度为5的验证,返回对应提示信息并优化用户交互。

二、核心代码实现

  1. 前端表单
html 复制代码
<form action="validate.jsp" method="post"> 
  <table align="center">
    <tr><td><h1>请输入任意字符(5个):</h1></td></tr>
    <tr><td>
      <input type="text" id="input" name="input"> 
      <input type="submit" value="判断">
    </td></tr>
  </table>  
  <script>document.getElementById("input").focus();</script>
</form>
  • 表单提交至validate.jspname="input"需与后端参数名一致
  • JavaScript实现页面加载时输入框自动聚焦
  1. 服务端验证
jsp 复制代码
<%@ page contentType="text/html; charset=UTF-8" %>
<%
request.setCharacterEncoding("utf-8");
String input = request.getParameter("input");
int length = (input != null) ? input.length() : 0;

if (length == 0) { %>
  <script>alert("输入不能为空!"); window.location.href = "index.html";</script>
<% } else if (length != 5) { %>
  <script>alert("输入字符数目不为5!"); window.location.href = "index.html";</script>
<% } else { %>
  <script>alert("输入格式正确!"); window.location.href = "index.html";</script>
<% } %>
  • 处理中文乱码:request.setCharacterEncoding("utf-8")
  • 空值保护:避免null指针异常,先判断输入是否存在再获取长度

三、调试关键问题

  1. 中文乱码

    • 原因:未统一请求与页面编码
    • 解决:JSP顶部添加charset=UTF-8,并设置请求编码
  2. 空输入报错

    • 原因:未处理用户直接提交空表单的情况
    • 解决:增加input != null判断,默认长度为0
  3. 交互优化

    • 输入不符合要求时,跳转回表单页面并自动聚焦输入框,方便重新输入

四、总结

  • 实验结果展示

登录界面。

输入正确的话会提示"输入格式正确"
空输入的话,会提示"输入不能为空",返回后输入框清空并聚焦

输入的字符数错误会提示"输入字符数目不为5",返回后输入框重置

  • 这次实验让我真正理解了 "Web 开发无小事"------ 哪怕是一个简单的表单验证,也需要考虑编码、交互、安全、异常处理等多个维度。从表单搭建到服务端逻辑实现,再到调试优化,完整经历了Web开发中表单验证的全流程。深刻体会到后端验证在数据合法性校验中的关键作用,也对前后端交互细节有了更直观的认识。
  • 遇到的困难:
    漏掉name属性导致后端获取不到数据;
    未处理空输入导致程序崩溃。键
  • 改进方向
    后续可增加前端实时字符长度提示,减少无效提交
    尝试用Servlet分离业务逻辑,使JSP专注页面展示
    用页面内的动态提示(如红色字体)替代弹窗,避免多次跳转影响体验
相关推荐
学嵌入式的小杨同学5 分钟前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
毕设源码-朱学姐35 分钟前
【开题答辩全过程】以 基于JavaWeb的网上家具商城设计与实现为例,包含答辩的问题和答案
java
mftang2 小时前
Python 字符串拼接成字节详解
开发语言·python
jasligea2 小时前
构建个人智能助手
开发语言·python·自然语言处理
kokunka2 小时前
【源码+注释】纯C++小游戏开发之射击小球游戏
开发语言·c++·游戏
C雨后彩虹2 小时前
CAS与其他并发方案的对比及面试常见问题
java·面试·cas·同步·异步·
云栖梦泽3 小时前
易语言开发从入门到精通:补充篇·网络编程进阶+实用爬虫开发·API集成·代理IP配置·异步请求·防封禁优化
开发语言
java1234_小锋3 小时前
Java高频面试题:SpringBoot为什么要禁止循环依赖?
java·开发语言·面试
铅笔侠_小龙虾3 小时前
Flutter Demo
开发语言·javascript·flutter
2501_944525543 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter