前后端交互目录

  • servlet流程
  • servlet请求
  • JSON格式
  • 实现表格效果
    • 完整代码

servlet流程

流程图:
在这里插入图片描述

  • 客户端(浏览器):
    1. 技术栈:使用 jQuery + Ajax 发起异步请求。
    2. 请求配置: 请求路径:指定目标Servlet的URL。 请求方法:GET:用于查询数据,POST:用于增删改操作。 参数传递:键值对形式(如{name: “Alice”, age: 25})。
    3. 回调处理: 请求成功:通过success回调接收服务端返回的数据,并更新DOM。 请求失败:通过error回调处理异常(如网络错误、服务器报错)。
  • 服务端(Tomcat + Servlet):
    1. 请求接收: Tomcat作为Web容器解析HTTP请求,路由到对应的Servlet。 Servlet通过HttpServletRequest对象:
      获取参数:request.getParameter(“name”),识别方法:重写doGet()或doPost()处理对应请求。
    2. 业务逻辑: 执行核心业务(如数据验证、计算)。 操作数据库:通过JDBC/连接池执行SQL。
    3. 响应返回: 设置响应类型:response.setContentType(“application/json”)。 通过HttpServletResponse输出数据:response.getWriter().print(“{“status”:“success”}”)。
  • 数据库: 接收Servlet的SQL指令,执行增删改查操作,返回结果集(如查询数据)或影响行数(如增删改)。

完整流程示例:

  1. 用户点击页面按钮触发jQuery的Ajax POST请求,提交表单数据。
  2. Tomcat将请求转发至DataServlet.doPost()。
  3. Servlet解析参数,调用Service层插入数据库。
  4. 数据库返回插入成功,Servlet生成JSON响应{“code”:200, “msg”:“新增成功”}。
  5. Ajax的success回调解析JSON,提示用户“操作成功”。

servlet请求

有 url 和 type 就可以发起请求,如图:

在这里插入图片描述

url 请求路径 对应的是后端的服务生,WebContent是项目的根目录,根目录下可以直接访问对应的服务生
get 请求一般用于查找,post 请求一般用于增删改

下面进行如下操作:

在这里插入图片描述

参数域:data:{ }
请求当中所有的信息都在 request 中,后端接收参数用到的是 request.getParameter(),接收的参数都是String类型的数据,即使前端传的是数值型数据也会被转成String类型

此时可添加判断账户密码是否正确的操作(其中 equals 表示判断两个字符串是否相等,若相等为true):

	if(acc.equals("admin")&&pass.equals("123456")) {System.out.println("登陆成功");}else {System.out.println("登陆失败");}

后端给前端的返回信息都在 response 中,返回信息用到的是 response.getWriter().write() 方法,返回的信息仍为字符串类型。
请求成功(无论返回时登陆成功还是登陆失败,只要闭环的执行没有报错都是请求成功)的回调函数 success:function(value){ },返回的数据返回到形参value

    success:function(value){console.log(value)},error:function(){alert("出错啦")}

那么我们来验证一下:

在这里插入图片描述

打印的是"ok",没问题

但是当后端输入:

response.getWriter().write("登陆成功");

此时输出:
在这里插入图片描述

中文不识别出现乱码,返回信息 response.getWriter().write() 相当于其他程序的return功能,后面就不执行了,所以设置编码格式需要在此代码之前,设置返回与接收的编码格式为 utf-8

        response.setCharacterEncoding("utf-8");request.setCharacterEncoding("utf-8");

JSON格式

再一个问题,当要返回大量信息时,此时该如何输出呢,若人工分割字符串的话作量太大不现实
我们使用 JSON格式,JSON 是存储和交换文本信息的语法

当有数据时我们将其写成JSON格式:

在这里插入图片描述

但是此时打印出的是字符串
在这里插入图片描述

那么我们加一行代码:

response.setContentType("text/json;charset=utf-8");

这样就会将其按照 JSON 格式解析,打印结果如下:

在这里插入图片描述

后续可以直接对其进行操作

实现表格效果

代码截图如下(后面附有完整代码):

在这里插入图片描述

效果:

在这里插入图片描述

完整代码

前端完整代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="js/jquery.js"></script>
<script>$(function(){$.ajax({url:"IndexServlet",  //请求路径type:"get",   //请求方式 get postdata:{account:"admin",password:"123456"},  //参数域success:function(value){console.log(value)for(var i=0;i<value.length;i++){$("tbody").append("<tr>"+"<td>"+value[i].id+"</td>"+"<td>"+value[i].name+"</td>"+"<td>"+value[i].sex+"</td>"+"<td>"+value[i].age+"</td>"+"</tr>")}},  //请求成功的回调函数error:function(){alert("出错啦")}  //请求失败的回调函数})})
</script>
</head>
<body><table border="1"><thead><tr><td>id</td><td>name</td><td>sex</td><td>age</td></tr></thead><tbody><!--<tr><td>id</td><td>name</td><td>sex</td><td>age</td></tr> --></tbody></table>
</body>
</html>

后端完整代码:

package com.qcby.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class IndexServlet*/
@WebServlet("/IndexServlet")
public class IndexServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public IndexServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("get请求收到了");String acc = request.getParameter("account");String pass = request.getParameter("password");if(acc.equals("admin")&&pass.equals("123456")) {System.out.println("登陆成功");}else {System.out.println("登陆失败");}response.setCharacterEncoding("utf-8");request.setCharacterEncoding("utf-8");response.setContentType("text/json;charset=utf-8");response.getWriter().write("[\r\n" + "    {\r\n" + "        \"id\": 1,\r\n" + "        \"name\": \"李华\",\r\n" + "        \"sex\": \"男\",\r\n" + "        \"age\": 21\r\n" + "    },\r\n" + "    {\r\n" + "        \"id\": 2,\r\n" + "        \"name\": \"小美\",\r\n" + "        \"sex\": \"女\",\r\n" + "        \"age\": 20\r\n" + "    },\r\n" + "    {\r\n" + "        \"id\": 3,\r\n" + "        \"name\": \"小帅\",\r\n" + "        \"sex\": \"男\",\r\n" + "        \"age\": 22\r\n" + "    },\r\n" + "    {\r\n" + "        \"id\": 4,\r\n" + "        \"name\": \"张大\",\r\n" + "        \"sex\": \"男\",\r\n" + "        \"age\": 24\r\n" + "    }\r\n" + "]");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("post请求收到了");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85442.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85442.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/85442.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4. 时间序列预测的自回归和自动方法(2)

ar_model.AutoReg 模型通过应用以下元素来估计参数 条件最大似然&#xff08;CML&#xff09;估计量&#xff1a;这是一种涉及条件对数似然函数最大化的方法&#xff0c;据此认为已知的参数要么由理论假设固定&#xff0c;要么更常见地由估计值代替&#xff08;LewiseBeck&…

MySQL(84)如何配置MySQL防火墙?

MySQL防火墙&#xff08;MySQL Enterprise Firewall&#xff09;是一种MySQL企业版特性&#xff0c;用于保护数据库免受SQL注入和其他恶意活动的攻击。它通过学习和监控合法SQL语句&#xff0c;创建一个允许列表&#xff0c;从而阻止未在列表中的SQL语句。 1. 启用MySQL防火墙…

优化 Python 爬虫性能:异步爬取新浪财经大数据

一、同步爬虫的瓶颈 传统的同步爬虫&#xff08;如requestsBeautifulSoup&#xff09;在请求网页时&#xff0c;必须等待服务器返回响应后才能继续下一个请求。这种阻塞式I/O操作在面对大量数据时存在以下问题&#xff1a; 速度慢&#xff1a;每个请求必须串行执行&#xff0…

Visual Studio Code (VSCode) Python 开发环境配置完整指南

一、安装准备 1. 安装 VSCode 官网下载: Visual Studio Code - Code Editing. Redefined安装时建议勾选: "添加到PATH" (方便终端调用)"注册为受支持的文件类型编辑器"2. 安装 Python 官网下载: Download Python | Python.org安装时勾选: "Add Pytho…

智能数据标签引擎:企业级分类分级与动态管控实践

在数字化转型浪潮中&#xff0c;企业数据量呈爆发式增长&#xff0c;数据的多样性和复杂性也不断提升。如何对海量数据进行高效分类分级&#xff0c;并实施动态管控&#xff0c;成为企业释放数据价值、保障数据安全的关键挑战。智能数据标签引擎应运而生&#xff0c;它通过引入…

Redis(1)——RDB持久化

在追求极致性能的 Redis 世界里&#xff0c;数据安全是永恒的主题。作为内存数据库&#xff0c;Redis 重启或宕机意味着数据丢失的风险。RDB (Redis Database) 持久化&#xff0c;又称快照持久化&#xff0c;是 Redis 提供的最经典、最高效的数据落地方案之一。它通过生成某个时…

深度剖析无感刷新Token:领码SPARK平台赋能微服务认证的智能实践

摘要 在现代微服务架构与数字化转型大潮中&#xff0c;用户身份认证的连续性与安全性尤为关键。无感刷新Token技术通过智能的双Token机制&#xff0c;确保用户访问凭证在不打扰用户的前提下自动续期&#xff0c;避免因Token过期导致的频繁登录中断。本文结合领码SPARK融合平台的…

声网对话式 AI:开启我的编程进阶之旅

转行学习编程时&#xff0c;复杂的代码逻辑常让我无从下手&#xff0c;直到遇见声网对话式AI。它像一位耐心的导师&#xff0c;不仅用通俗易懂的语言帮我理解Python循环嵌套等难点&#xff0c;还提供实际代码示例。当我开发学生成绩管理系统时&#xff0c;它甚至直接生成框架代…

精准护理,点亮进行性核上性麻痹患者生活希望

进行性核上性麻痹&#xff08;PSP&#xff09;是一种罕见的神经系统变性疾病&#xff0c;主要表现为姿势平衡障碍、眼球运动障碍、吞咽困难等症状。科学的健康护理能有效延缓病情进展&#xff0c;提升患者生活质量&#xff0c;可从以下方面着手。 ​在饮食护理上&#xff0c;因…

记录一次 Oracle 表空间不足问题的解决过程

记录一次 Oracle 表空间不足问题的解决过程 6月14日&#xff0c;某医院信息科用户反映无法提交门诊病例&#xff0c;门诊处方也无法开立。其他功能是正常的。考虑可能是与门诊病例有关的表空间用完了。 Oracle表空间的数据文件默认是可以自动增长的&#xff0c;但是单个文件的…

2024 年 11 月公链行业研报:比特币创历史新高引领市场全面上涨

比特币屡创历史新高&#xff0c;主导市场全面上涨&#xff0c;同时 Layer 1 表现强劲&#xff0c;而 Layer 2 格局持续演变。 2024 年 11 月公链研报 作者&#xff1a;Stella L (stellafootprint.network) 数据来源&#xff1a;Footprint Analytics 公链研究页面 2024 年 11…

MAX4622ESE+T双5Ω模拟开关在低失真音频路由中的实测:0.5Ω匹配度如何改善THD性能

一、产品概述&#xff1a;精密信号切换的硬件基石 MAX4622ESET是一款双通道SPDT&#xff08;单刀双掷&#xff09;模拟开关&#xff0c;采用5Ω超低导通电阻设计&#xff08;典型值3Ω&#xff09;&#xff0c;专为高精度信号路由场景优化。其核心价值在于通过单片CMOS架构实现…

高并发秒杀系统(Redis分布式锁优化与库存防超卖实战)

本文通过日活百万级的电商秒杀案例&#xff0c;深度剖析分库分表路由算法在高并发场景下的落地实践。结合Redis分布式锁的优化方案解决库存超卖问题&#xff0c;包含完整架构设计、代码实现及压测数据对比。全文包含12个核心代码片段和8类技术图表&#xff0c;来自线上生产环境…

从loader和plugin开始了解webpack

目录 一、webpack中loader和plugin的区别1. Loader&#xff08;每个 Loader 是一个函数或对象&#xff09;2.plugin&#xff08;每个 Plugin 是一个实例&#xff09;3.自定义loader和plugin 二、Babel的功能三、Plugin中的compiler和compilation对象1. compiler对象2. compilat…

36-Oracle Statistics Gathering(统计信息收集)

小伙伴们&#xff0c;有没有因为统计信息不准&#xff0c;导致了业务卡顿&#xff0c;各种状况频出&#xff0c;这几天在实践和实操的过程中&#xff0c;时不时就需要进行统计信息的收集。同时统计信息收集的动作也是OCM必考内容。 数据库中的数据是地图&#xff0c;统计信息是…

Linux驱动程序(PWM接口)与超声波测距

一、利用阿里云服务器实现树莓派外网访问&#xff08;SSH 反向代理&#xff09; 1. 树莓派端配置 步骤 1&#xff1a;安装 SSH 服务&#xff08;若未安装&#xff09; sudo apt-get install openssh-server 步骤 2&#xff1a;创建反向代理连接 -p 22&#xff1a;指定阿里…

Web攻防-XSS跨站文件类型功能逻辑SVGPDFSWFHTMLXMLPMessageLocalStorage

知识点&#xff1a; 1、Web攻防-XSS跨站-文件类型-html&pdf&swf&svg&xml 2、Web攻防-XSS跨站-功能逻辑-postMessage&localStorage 一、演示案例-WEB攻防-XSS跨站-文件类型触发XSS-SVG&PDF&SWF&HTML&XML等 1、SVG-XSS SVG(Scalable Vect…

强大模型通过自我和解进步——Unsupervised Elicitation of Language Models——论文阅读笔记

本周关注的工作是&#xff1a;Unsupervised Elicitation of Language Models 这篇文章通篇体现了这样一件事——香蕉皮大需要香蕉大&#xff01; 一句话总结 首先注意&#xff1a;这个工作不是面向对齐的&#xff0c;而是写【如何准备】对齐任务的Reward Model需要的数据集的…

Qt—(Qt初识,槽,信号,事件)

一 Qt初识 暂时不写了 我的理解是类似于c#&#xff0c;是一个组件库&#xff0c;不局限是一个组件框架。 二 Qt Core Qt Core 是 Qt 框架的基础模块&#xff0c;提供非 GUI 的核心功能&#xff1a; 核心类&#xff1a;QObject&#xff08;信号槽机制&#xff09;、QEvent&…

深度学习——基于卷积神经网络实现食物图像分类【2】(数据增强)

文章目录 引言一、项目概述二、环境准备三、数据预处理3.1 数据增强与标准化3.2 数据集准备 四、自定义数据集类五、构建CNN模型六、训练与评估6.1 训练函数6.2 评估函数6.3 训练流程 七、关键技术与优化八、常见问题与解决九、完整代码十、总结 引言 本文将详细介绍如何使用P…