Day12--Servlet实现前后端交互(案例:学生信息管理系统登录页面)

(在一个完整的项目架构中,servlet的角色和位置)
Servlet、GenericServlet和HttpServlet三者之间的关系是Java Web开发中的一个重要概念,它们共同构成了基于Java的服务器端程序的基础。以下是具体分析:
1. Servlet接口:
- 提供了生命周期方法init()、service()、destroy()和其他用于获取配置信息的方法。
- 是所有Servlet的根,定义了Servlet的基本框架和必须实现的方法。
2. GenericServlet抽象类:
- 实现了Servlet接口,并提供了这些方法的默认实现,包括init()和destroy()方法的空实现。
- 是一个抽象类,要求继承它的自定义Servlet类必须实现service()方法。
3. HttpServlet抽象类:
- 继承自GenericServlet,进一步简化了HTTP特定的处理,例如get和post请求的处理。
- 包含了处理HTTP协议的方法,如doGet()、doPost()等,使得创建特定于HTTP的Servlet变得简单。
总的来说,这三者的关系和特性,为Java Web开发提供了强大的动态内容生成能力,允许开发者根据HTTP请求的类型和内容,灵活地生成响应。在实际开发中,选择合适的父类继承或实现相应的接口,可以大大影响Servlet的开发效率和应用的性能
下面是案例:
在web目录下创建login.jsp文件并写入前端要显示的页面。
<%--Created by IntelliJ IDEA.User: 21222Date: 2024/7/29Time: 上午10:35To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<div class="box" style="width: 250px; height: 300px; background-color: bisque"><h1>学生信息管理系统登录页</h1>
<%--
这里的action就是webservlet注解里写的名字,运行后会自动到后端寻找
method就是请求方法post或者get--%><form action="login" method="post">账号<input type="text" name="user"><br>密码<input type="text" name="pw"><br><button>登录</button></form>
</div>
</body>
</html>
webServlet注解一定要加 / 否则运行会报工件错误!!!
如果需要接受中文参数到后端,在处理参数的第一行就要对编码进行设置,设置如下。
在这里进行逻辑判断,账号密码输入正确跳转到LoginSuccess错误就跳转到LoginFailed
注:这里从数据库获取数据我用的是mybatis,测试随意
@WebServlet("/login")
public class UserRes extends HttpServlet {//收参数@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=utf-8");String user = req.getParameter("user");String pw = req.getParameter("pw");System.out.println("user = " + user);System.out.println("pw = " + pw);List<Admin> admin = GetMapper.mapper.selectAdmin(user, pw);if (!admin.isEmpty()) {req.getRequestDispatcher("LoginSuccess").forward(req, resp);} elsereq.getRequestDispatcher("LoginFailed").forward(req, resp);}
}
当login失败时跳转到这个界面,通过后端渲染数据,传给前端
@WebServlet("/LoginFailed")
public class LoginFailed extends HttpServlet {//收参数@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置请求的字符编码为UTF-8,以确保接收到的数据正确解码。//设置响应的内容类型为"text/html;charset=utf-8",告诉浏览器返回的内容是HTML格式,并使用UTF-8字符集。//获取响应的PrintWriter对象,用于向客户端发送数据。req.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=utf-8");PrintWriter wr = resp.getWriter();wr.write("<!DOCTYPE html>");wr.write("<html>");wr.write("<head>");wr.write("<meta charset=\"utf-8\">");wr.write("<title>Login Failed</title>");wr.write("</head>");wr.write("<body>");wr.write("<h1 style='color:red; font-weight:bold'>Login Failed</h1>");wr.write("</body>");wr.write("</html>");}
}
当login成功时跳转到这个界面。
@WebServlet("/LoginSuccess")
public class LoginSuccess extends HttpServlet {//收参数@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("\"登录成功!!\" = " + "登录成功!!");ArrayList<Student> students = GetMapper.mapper.selectAll();System.out.println("students = " + students);}
}
相关文章:
Day12--Servlet实现前后端交互(案例:学生信息管理系统登录页面)
(在一个完整的项目架构中,servlet的角色和位置) Servlet、GenericServlet和HttpServlet三者之间的关系是Java Web开发中的一个重要概念,它们共同构成了基于Java的服务器端程序的基础。以下是具体分析: 1. Servlet接口…...
Android 安装应用-准备阶段
安装应用的准备阶段是在PackageManagerService类中的preparePackageLI(InstallArgs args, PackageInstalledInfo res),代码有些长,分段阅读。 分段一 分段一: GuardedBy("mInstallLock")private PrepareResult preparePackageLI(I…...
【JKI SMO】框架讲解(九)
本节内容将演示如何向SMO框架添加启动画面。 1.打开LabVIEW新建一个空白项目,并保存。 2.找到工具,打开SMO Editor。 3.新建一个SMO,选择SMO.UI.Splash。 4. 打开LabVIEW项目,可以看到项目里多了一个SystemSplash类。 打开Process…...
Linux通过Docker安装Microsoft Office+RDP远程控制
之前根据B站教程《在linux上安装微软office》:在linux上安装微软office_哔哩哔哩_bilibili 写过一篇使用KVM虚拟机安装Microsoft OfficeRDP远程控制的文章,根据B站的教程安装后,发现有远程控制延迟的问题,比如拖动Office窗口时会…...
利用Qt实现调用文字大模型的API,文心一言、通义千问、豆包、GPT、Gemini、Claude。
利用Qt实现调用文字大模型的API,文心一言、通义千问、豆包、GPT、Gemini、Claude。 下载地址: AI.xyz 1 Qt实现语言大模型API调用 视频——Qt实现语言大模型API调用 嘿,大家好!分享一个最近做的小项目 “AI.xyz” 基于Qt实现调用各家大模型…...
借助医疗保健专用的 LLM提高诊断支持与准确性
概述 最近的研究表明,大规模语言模型在医疗人工智能应用中非常有效。它们在诊断和临床支持系统中的有效性尤为明显,在这些系统中,它们已被证明能为各种医疗询问提供高度准确的答案(例如,医生在诊断过程中需要用到语言…...
微前端(qiankun)
微前端 特点:独立开发、独立部署,独立运行,增量升级 解决的问题:日常开发过程中,可能有很多老项目需要迭代,但是可能新的一些可能需要使用的依赖或者新的一些框架,老项目已经不满足,…...
速通c++(周二)
前言 Hello,大家好啊,我是文宇,不是文字,是文宇哦。 今天是速通c第二期。 运算符 c里的运算符种类有很多,因为这个教程是入门教程,所以只介绍其中我们会用到的几种。 算数运算 c中的算数运算有九个&a…...
拓扑未来物联网平台简介
拓扑未来物联网平台是基于Thingsboard二次开发的面向产业互联和智慧生活应用的物联网PaaS平台,支持适配各种网络环境和协议类型,可实现各种传感器和智能硬件的快速接入。有效降低物联网应用开发和部署成本,满足物联网领域设备连接、智能化改造…...
软件测试经理工作日常随记【7】-接口+UI自动化(多端集成测试)
软件测试经理工作日常随记【7】-UI自动化(多端集成测试) 自动化测试前篇在此 前言 今天开这篇的契机是,最近刚好是运维开发频繁更新证书的,每次更新都在0点,每次一更新都要走一次冒烟流程。为了不让我的美容觉被阉割…...
软考:软件设计师 — 9.数据流图
九. 数据流图 数据流图是下午场考试中第一个题目,分值 15 分。通常会考察实体名、存储名、加工名的补充,以及找到缺失的数据流并改正等。 1. 数据平衡原则 数据流的分析依赖于数据平衡原则。 父图与子图之间的平衡 父图与子图之间平衡是指任何一张 …...
收银系统源码-门店折扣活动应该怎么做
系统概况: 专门为零售行业的连锁店量身打造的收银系统,适用于常规超市、生鲜超市、水果店、便利店、零食专卖店、服装店、母婴用品、农贸市场等类型的门店使用。同时线上线下数据打通,线下收银的数据与小程序私域商城中的数据完全同步&#…...
Python数值计算(12)——线性插值
1. 概述 插值是根据已知的数据序列(可以理解为你坐标中一系列离散的点),找到其中的规律,然后根据找到的这个规律,来对其中尚未有数据记录的点进行数值估计的方法。最简单直观的一种插值方式是线性插值,它是…...
TypeScript(switch判断)
1.switch 语法用法 switch是对某个表达式的值做出判断。然后决定程序执行哪一段代码 case语句中指定的每个值必须具有与表达式兼容的类型 语法switch(表达式){ case 值1: 执行语句块1 break; case 值2: 执行语句块3 break; dfault: //如…...
血细胞自动检测与分类系统:深度学习与UI界面的结合
一、项目概述 项目背景 在医学实验室中,血细胞的检测和分类是诊断和研究的重要环节。传统方法依赖于人工显微镜检查,费时且容易出现误差。通过深度学习技术,特别是目标检测模型YOLO,可以实现自动化、快速且准确的血细胞检测和分…...
鸿蒙Flex布局
效果: 代码: 换行代码参数设置: wrap:FlexWrap.Wrap Entry Component struct FlexCase {State message: string Hello World;build() {Flex({direction:FlexDirection.Row,justifyContent:FlexAlign.SpaceAround,alignItems:ItemAlign.Cen…...
开发自己的 Web 框架
开发自己的 Web 框架 开发Web服务器主体程序开发Web框架程序使用模板来展示响应内容开发框架的路由列表功能采用装饰器的方式添加路由电影列表页面的开发案例 接收web服务器的动态资源请求,给web服务器提供处理动态资源请求的服务。根据请求资源路径的后缀名进行判断…...
用于自动驾驶的基于立体视觉的语义 3D 对象和自我运动跟踪
Stereo Vision-based Semantic 3D Object and Ego-motion Tracking for Autonomous Driving 论文 摘要: 我们提出了一种基于立体视觉的方法,用于在动态自动驾驶场景中跟踪相机自我运动和 3D 语义对象。我们建议使用易于标记的 2D 检测和离散视点分类以及…...
Spring@Autowired注解
Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。 因此,引入Autowired注解…...
32.x86游戏实战-使用物品call
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果 *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
