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

【基于Servlet技术处理表单】

文章目录

    • 一、实验背景与目的
    • 二、实验设计与实现思路
      • 1. 功能架构
      • 2. 核心代码实现
      • 3. 测试用例
    • 总结

一、实验背景与目的

本次实验旨在深入理解Servlet工作原理,掌握JSP与Servlet的协同开发,实现前端表单与后端数据处理的交互。具体目标包括:设计包含文本输入框和按钮的表单,通过Servlet分析用户输入的字符串,提取其中的数字信息并返回结果。

二、实验设计与实现思路

1. 功能架构

  • 前端(JSP页面):提供用户输入界面,包含一个文本输入框和提交按钮,通过表单的action属性指定数据提交路径为/tq,采用POST方法发送请求。
  • 后端(Servlet):接收表单数据,遍历字符串逐个字符判断是否为数字,提取所有数字后通过请求属性传递回JSP页面,最终转发回前端显示结果。

2. 核心代码实现

(1)web.xml配置

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>tqServlet</servlet-name><servlet-class>tqServlet</servlet-class></servlet><servlet-mapping><servlet-name>tqServlet</servlet-name></servlet-mapping>
</web-app>

(2)Servlet逻辑

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class tqServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");String text= req.getParameter("text");System.out.println("text:"+text);String num="";for(int i=0;i<text.length();i++){char c=text.charAt(i);if(c>='0'&&c<='9'){num=num+c;}}if(num.length()==0){num="字符串不包含数字";}System.out.println("num:"+num);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

(3)JSP页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>数字提取</title><script src="js/sub.js"></script><link rel="stylesheet" href="css/login.css" type="text/css">
</head>
<body><div class="login"><form action="tq" method="post" id="myform" name="myform"><div class="container"><input type="text" name="text" placeholder="请输入字符串"><span class="left"></span></div><div class="result"><%=request.getAttribute("num")==null?"":request.getAttribute("num")%></div><div class="btn"><input type="submit" value="提取数字"></div></form>
</div></body>
</html>

3. 测试用例

  • 全数字输入:如“12345”,输出“12345”。
  • 数字与其他字符混合:如“a1b2c3”,输出“123”。
  • 无数字输入:如“abc汉字”,输出“字符串不包含数字”。

总结

本三种情况运行结果清晰。且错误输入的运行后提示信息正确。

在这里插入图片描述
遇到符合情况会直接输出数字。
在这里插入图片描述
输入字符和数字结合,会自动提取数字,实现全数字输出的结果。
在这里插入图片描述
若是输出中没有数字,会提示字符串不包含数字。

  • 遇到的问题
    1.编码问题:在Servlet中通过req.setCharacterEncoding("utf-8")解决中文乱码,确保前端表单数据与后端处理编码一致。
    2.请求转发与参数传递:使用request.setAttribute()存储处理结果,通过getRequestDispatcher().forward()将数据回传至JSP,避免直接响应输出导致的页面跳转数据丢失。
    3.字符遍历效率:最初考虑使用正则表达式\\d匹配数字,后选择逐字符判断,在简单场景下更易理解和维护,体现了“合适技术优于复杂方案”的工程思维。
  • 心得:我深刻理解Servlet作为“请求-响应”处理器的生命周期,doGetdoPost方法的差异化处理,以及通过web.xml配置URL映射的底层逻辑。
    本次实验让我从“理论认知”过渡到“实战落地”。过去认为Servlet只是JavaEE的一个组件,实际操作中却发现它是连接前端页面与后端逻辑的核心桥梁。每一次请求的接收、处理与响应,都涉及网络通信、数据解析、业务逻辑和视图渲染的协同,这让我对Web开发的分层架构有了更立体的理解。
    实验中实现的数字提取功能虽简单,但为复杂Web应用奠定了基石。未来我计划深入学习Spring MVC等框架,探索RESTful接口设计和异步请求处理,同时加强前端技术(如Vue.js)的学习,成为能兼顾前后端的全栈开发者。这次实验不仅是一次课程作业,更是我踏入Web开发领域的起点——让我明白,真正的技术成长,始于对每一个小功能的认真打磨。

相关文章:

  • 目标检测:YOLOv11(Ultralytics)环境配置
  • Vue 3 的组合式 API-hooks
  • HTTPS协议原理
  • 软件包安装管理Gitlab
  • PyTorch 根据官网命令行无法安装 GPU 版本 解决办法
  • MyBatis 详解
  • ffmpeg命令(一):信息查询命令
  • 日志查询:使用 less 命令搜索关键字的方法
  • Spring Boot 中使用 Netty
  • .Net 9 webapi使用Docker部署到Linux
  • Quipus,LightRag的Go版本的实现
  • 猫咪如厕检测与分类识别系统系列【九】视频检测区域在线绘制+支持摄像头+网络摄像头+整体构建【上】
  • 怎样完成本地模型知识库检索问答RAG
  • Linux命令+Git命令
  • mysql数据库的线程连接数、状态 、最大并发数、缓存等参数配置
  • Axios 介绍及使用指南
  • 字节跳动开源 Godel-Rescheduler:适用于云原生系统的全局最优重调度框架
  • 高并发三剑客-本地缓存之王Caffeine-01缓存应用
  • 《忘尘谷》音阶与调性解析
  • 非参数 Spearman 相关在多组学分析中的力量及AI拓展
  • BNEF:亚洲、中东和非洲是电力基础设施投资的最大机会所在
  • 十四届全国人大常委会第十五次会议继续审议民营经济促进法草案
  • 上海数学教育及数学科普专家陈永明去世,享年85岁
  • 高璞任中国第一汽车集团有限公司党委常委、副总经理
  • 起底网红热敷贴“苗古金贴”:“传承人”系AI生成,“千年秘方”实为贴牌货
  • 首映|马丽:真想抱抱臧姑娘,对她说辛苦了