基于Servlet简易学生信息管理系统
本次设计的学生信息管理系统,能提供以下功能:
(1) 输入入学生信息并保存
(2) 显示所有学生信息
(3) 查询学生信息
(4) 修改学生信息并保存
(5) 删除学生信息
系统架构:
后端:Servlet+Spring
前端:JSP
数据库连接池技术:Druid
数据库操作:JdbcTemplate
系统数据结构及其输入规则:
(1)学生信息包括姓名、性别、籍贯、qq、email等;
(2)录入的学生信息要求用mysql保存,并可以对其进行浏览、查询、修改、删除等基本操作;
(3)学生信息的显示要求有一定的规范格式;
(4)对学生信息应能够分别按姓名、籍贯、eamil方式进行查询,要求能返回所有符合条件的学生的信息;
(5)对学生信息的修改应逐个地进行,一个学生信息的更改不应影响其他的学生记录;
登录页面:
登录接口代码:
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.设置编码request.setCharacterEncoding("utf-8");System.out.println("dd");//2.获取数据//2.1获取用户填写验证码String verifycode = request.getParameter("verifycode");//3.验证码校验HttpSession session = request.getSession();String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");session.removeAttribute("CHECKCODE_SERVER");//确保验证码一次性System.out.println("checkcode_server:"+checkcode_server);System.out.println("verifycode:"+verifycode);if(null == checkcode_server || !checkcode_server.equals(verifycode)){//验证码不正确//提示信息request.setAttribute("login_msg","验证码错误!");//跳转登录页面request.getRequestDispatcher("/login.jsp").forward(request,response);return;}Map<String, String[]> map = request.getParameterMap();//4.封装User对象User user = new User();try {BeanUtils.populate(user,map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//5.调用Service查询UserService service = new UserServiceImpl();User loginStudent = service.login(user);//6.判断是否登录成功if(loginStudent != null){//登录成功//将用户存入sessionsession.setAttribute("user", loginStudent);//跳转页面response.sendRedirect(request.getContextPath()+"/findUserByPageServlet");}else{//登录失败//提示信息request.setAttribute("login_msg","用户名或密码错误!");//跳转登录页面request.getRequestDispatcher("/login.jsp").forward(request,response);}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}
}
用户注册接口代码:
@WebServlet("/registerUserServlet")
public class RegisterUserServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.设置编码request.setCharacterEncoding("utf-8");//2.获取参数Map<String, String[]> map = request.getParameterMap();//3.封装对象User user = new User();try {BeanUtils.populate(user,map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//4.调用Service保存UserService service = new UserServiceImpl();service.addUser(user);//5.跳转到userListServletresponse.sendRedirect(request.getContextPath()+"/login.jsp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}
}
学生信息界面:
分页查询接口:
@WebServlet("/findUserByPageServlet")
public class FindUserByPageServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");//1.获取参数String currentPage = request.getParameter("currentPage");//当前页码String rows = request.getParameter("rows");//每页显示条数if(currentPage == null || "".equals(currentPage)){currentPage = "1";}if(rows == null || "".equals(rows)){rows = "5";}//获取条件查询参数Map<String, String[]> condition = request.getParameterMap();//2.调用service查询StudentService service = new StudentServiceImpl();PageBean<Student> pb = service.findUserByPage(currentPage,rows,condition);System.out.println(pb);//3.将PageBean存入requestrequest.setAttribute("pb",pb);request.setAttribute("condition",condition);//将查询条件存入request//4.转发到list.jsprequest.getRequestDispatcher("/list.jsp").forward(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}
}
修改学生信息接口:
@WebServlet("/updateUserServlet")
public class UpdateUserServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.设置编码request.setCharacterEncoding("utf-8");//2.获取mapMap<String, String[]> map = request.getParameterMap();//3.封装对象Student student = new Student();try {BeanUtils.populate(student,map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//4.调用Service修改StudentService service = new StudentServiceImpl();service.updateUser(student);//5.跳转到查询所有Servletresponse.sendRedirect(request.getContextPath()+"/findUserByPageServlet");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}
}
添加学生信息接口:
@WebServlet("/addUserServlet")
public class AddUserServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.设置编码request.setCharacterEncoding("utf-8");//2.获取参数Map<String, String[]> map = request.getParameterMap();//3.封装对象System.out.println("fjasf");Student student = new Student();try {BeanUtils.populate(student,map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//4.调用Service保存StudentService service = new StudentServiceImpl();service.addUser(student);//5.跳转到userListServletresponse.sendRedirect(request.getContextPath()+"/findUserByPageServlet");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}
}
该系统主要是基于Servlet开发的学生信息管理系统,代码架构简单,适合刚学习Servlet的新手学习,可作为课设使用!
源码免费获取:前往《星梦Blog》小程序即可获取
相关文章:
基于Servlet简易学生信息管理系统
本次设计的学生信息管理系统,能提供以下功能: (1) 输入入学生信息并保存 (2) 显示所有学生信息 (3) 查询学生信息 (4) 修改学生信息并保存 (…...
IDEA编写SpringBoot项目时使用Lombok报错“找不到符号”的原因和解决
目录 概述|背景 报错解析 解决方法 IDEA配置解决 Pom配置插件解决 概述|背景 报错发生背景:在SpringBoot项目中引入Lombok依赖并使用后出现"找不到符号"的问题。 本文讨论在上述背景下发生的报错原因和解决办法,如果仅为了解决BUG不论原…...
JVM图文入门
往期推荐 【已解决】redisCache注解失效,没写cacheConfig_com.howbuy.cachemanagement.client.redisclient#incr-CSDN博客 【已解决】OSS配置问题_keyuewenhua.oss-cn-beijing.aliyuncs-CSDN博客 【排坑】云服务器docker部署前后端分离项目域名解析OSS-CSDN博客 微服…...
【算法】动态规划专题⑨ —— 二维费用背包问题 python
目录 前置知识进入正题实战演练 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 python 进入正题 二维费用背包问题 方法思路 二维费用背包问题在传统背包问题的基础上增加了第二个维度的限制(如重量)。 每个物品具有两种费用&#x…...
链表专题-02
链表专题 /*** 链表的节点* param <E>*/ public class ListNode<E> {public E element;public ListNode<E> next;public ListNode() {}public ListNode(E element) {this.element element;}public ListNode(E element, ListNode<E> next) {this.eleme…...
亚远景-精通ASPICE:专业咨询助力汽车软件开发高效合规
在竞争日益激烈的汽车行业,软件开发已成为决定成败的关键因素。ASPICE(汽车软件过程改进和能力确定) 作为行业公认的软件开发框架,为汽车制造商和供应商提供了实现高效、合规开发的路线图。 然而,ASPICE 的实施并非易…...
HALCON 数据结构
目录 1. HALCON基本数据分类 1.1 图像相关数据 1.1.1 Image(图片) 1.1.2 Region(区域) 1.1.3 XLD(轮廓) 1.2 控制类数据 1.2.1 基本控制数据类型 1.2.2 handle(句柄) 2. 数组与字典 2.1 数组类型及特点 2.1.1 Iconic数组(Objects) 2.1.2 Control数组(Tu…...
动手写ORM框架 - GeeORM第一天 database/sql 基础
文章目录 1 初识 SQLite2 database/sql 标准库3 实现一个简单的 log 库4 核心结构 Session本文是7天用Go从零实现ORM框架GeeORM的第一篇。介绍了 SQLite 的基础操作(连接数据库,创建表、增删记录等)。使用 Go 语言标准库 database/sql 连接并操作 SQLite 数据库,并简单封装…...
ubuntu conda运行kivy时报“No matching FB config found”
错误描述:本人使用ubuntu自带的python环境运行kivy是没有问题的,就是在使用conda时发生了错误,去网上寻找报错原因,却一直没有头绪(这个问题有诸多问题导致的,不敢说用我的这个方法100%能好) 1…...
SSM开发(十一) mybatis关联关系多表查询(嵌套查询,举例说明)
目录 一、背景介绍 二、一对一查询(嵌套查询) 三、一对多查询(嵌套查询) 四、嵌套查询效率评估 注:关联查询则是指在一个查询中涉及到多个表的联合查询 一、背景介绍 当对数据库的操作涉及到多张表,这在面向对象语言如Java中就涉及到了对象与对象之间的关联关系。针对多…...
【AIGC】冷启动数据与多阶段训练在 DeepSeek 中的作用
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯冷启动数据的作用冷启动数据设计 💯多阶段训练的作用阶段 1:冷启动微调阶段 2:推理导向强化学习(RL࿰…...
Spring(26) spring-security-oauth2 官方表结构解析
目录 一、什么是 spring-security-oauth2?二、spring-security-oauth2 的表结构2.1 oauth_client_details 客户端详细信息表2.2 oauth_access_token 认证授权Token记录表2.3 oauth_refresh_token 刷新授权Token记录表2.4 oauth_code 授权Code记录表 一、什么是 spri…...
WPS如何接入DeepSeek(通过JS宏调用)
WPS如何接入DeepSeek 一、文本扩写二、校对三、翻译 本文介绍如何通过 WPS JS宏调用 DeepSeek 大模型,实现自动化文本扩写、校对和翻译等功能。 一、文本扩写 1、随便打开一个word文档,点击工具栏“工具”。 2、点击“开发工具”。 3、点击“查看代码”…...
项目的虚拟环境的搭建与pytorch依赖的下载
文章目录 配置环境 pytorch的使用需要安装对应的cuda 在PyTorch中使用CUDA, pytorch与cuda不同版本对应安装指南,查看CUDA版本,安装对应版本pytorch 【超详细教程】2024最新Pytorch安装教程(同时讲解安装CPU和GPU版本) 配置环境…...
[每周一更]-(第133期):Go中MapReduce架构思想的使用场景
文章目录 **MapReduce 工作流程**Go 中使用 MapReduce 的实现方式:**Go MapReduce 的特点****哪些场景适合使用 MapReduce?**使用场景1. 数据聚合2. 数据过滤3. 数据排序4. 数据转换5. 数据去重6. 数据分组7. 数据统计8.**统计文本中单词出现次数****代码…...
C 移位运算符
宏定义 #define GET_BIT(n) ((1 << (n))) 用于生成一个整数,该整数在第 n 位上是 1,其余位都是 0。这个宏通常用于位操作,比如设置、清除或检查某个特定位置的标志位。 1 << (n):这是位移操作符。它将数字 1 左移 n …...
redis高级数据结构布隆过滤器
文章目录 背景什么是布隆过滤器Redis 中的布隆过滤器布隆过滤器使用注意事项实现原理空间占用估计 背景 我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,它每次推荐时要去重,去掉那些已经看过的内容。问题来了,新闻…...
活动预告 |【Part1】Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识
课程介绍 通过参加“Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识”活动提升你的技能。在本次免费的介绍性活动中,你将获得所需的安全技能和培训,以创造影响力并利用机会推动职业发展。你将了解安全性、合规性和身份的基础知识…...
基于DeepSeek模型的思维导图智能系统
基于DeepSeek模型的思维导图智能系统 摘 要:本文研究了Prompt技术在自然语言处理(NLP)中的应用,重点探讨了其在用户输入语言转换任务中的作用。基于DeepSeek模型,文章通过设计不同的Prompt并结合API调用,…...
【玩转 Postman 接口测试与开发2_019】第15章:利用 Postman 初探 API 性能测试(含实战截图)
《API Testing and Development with Postman》最新第二版封面 文章目录 第十五章 API 接口性能测试1 性能负载的类型2 Postman 负载配置3 Postman 性能测试实战3.1 Fixed 型负载下的性能测试3.2 基于数据驱动的 Postman 接口性能测试 4 性能测试的注意事项 写在前面 终于来到了…...
使用 Three.js 实现炫酷的除夕烟花特效
1,前言 在除夕夜,璀璨的烟花点亮夜空,为节日增添了浓厚的喜庆氛围。在 Web 端,我们可以使用 Three.js 来模拟这种美轮美奂的烟花特效,让网页也能展现绚丽的节日气息。本文将介绍如何利用 Three.js 及其着色器技术&…...
【Redis keys命令有什么问题?】
Redis keys命令有什么问题? 性能问题实际使用中的限制替代方案示例讲解Redis keys命令的问题示例替代方案:使用SCAN命令Java代码示例性能问题 时间复杂度:keys命令的时间复杂度是O(n),其中n是Redis中键的总数。这意味着,当Redis中存储的键数量非常大时,执行keys命令会遍历…...
STC51案例操作
案例 1:LED 闪烁 功能描述:通过操作 P1 口寄存器,让连接在 P1.0 引脚的 LED 以一定间隔闪烁。 #include <reg51.h>// 延时函数 void delay(unsigned int time) {unsigned int i, j;for (i 0; i < time; i)for (j 0; j < 123; …...
顺丰数据分析(数据挖掘)面试题及参考答案
你觉得数据分析人员必备的技能有哪些? 数据分析人员需具备多方面技能,以应对复杂的数据处理与解读工作。 数据处理能力:这是基础且关键的技能。数据常以杂乱、不完整的形式存在,需通过清洗,去除重复、错误及缺失值数据,确保数据质量。例如,在电商销售数据中,可能存在价…...
【信息系统项目管理师-案例真题】2016下半年案例分析答案和详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一【问题1】4 分【问题2】12 分【问题3】3 分【问题4】6 分试题二【问题1】3 分【问题2】4 分【问题3】8 分【问题4】5 分【问题5】5 分试题三【问题1】4 分【问题2】8 分【问题3】5 分【问题4】8 分试题一…...
前端学习-页面尺寸事件以及阻止默认行为(三十三)
目录 前言 页面尺寸事件 语法 检测屏幕宽度 获取宽高 元素尺寸的位置 总结 示例代码 阻止默认行为 阻止冒泡 语法 阻止冒泡如何做 阻止元素默认行为如何做 总结 前言 晚上好各位 页面尺寸事件 会在窗口尺寸改变的时候触发条件 语法 window.addEventListener(…...
人工智能领域-CNN 卷积神经网络 性能调优
在自动驾驶领域,对卷积神经网络(CNN)进行性能调优至关重要,以下从数据处理、模型架构、训练过程、超参数调整和模型部署优化等多个方面为你详细介绍调优方法,并给出相应的代码示例。 1. 数据处理 数据增强࿱…...
STM32的HAL库开发---高级定时器---输出比较模式实验
一、高级定时器输出比较模式实验原理 定时器的输出比较模式总共有8种,本文使用其中的翻转模式,当TIMXCCR1TIMXCNT时,翻转OC1REF的电平,OC1REF为输出参考信号,高电平有效,OC1REF信号连接到0C1上面ÿ…...
DeepSeek使用技巧大全(含本地部署教程)
在人工智能技术日新月异的今天,DeepSeek 作为一款极具创新性和实用性的 AI,在众多同类产品中崭露头角,凭借其卓越的性能和丰富的功能,吸引了大量用户的关注。 DeepSeek 是一款由国内顶尖团队研发的人工智能,它基于先进…...
python安装mitmproxy遇到的问题
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple 加-i https://pypi.tuna.tsinghua.edu.cn/simple是为了加速下载。 1、vc build-tools 发现下面错误。 需要安装vc build-tools,有些py包需要vc来编译。 安装路径:Micr…...
基于HTML生成网页有什么优势
在互联网时代,网页是人们获取信息、交流互动的重要窗口,而基于HTML生成网页,是搭建网络大厦的关键。HTML语法简洁直观,标签和属性语义明确,新手也能迅速上手,创建包含基础元素的网页,极大降低了…...
c++ template-3
第 7 章 按值传递还是按引用传递 从一开始,C就提供了按值传递(call-by-value)和按引用传递(call-by-reference)两种参数传递方式,但是具体该怎么选择,有时并不容易确定:通常对复杂类…...
【实战篇】巧用 DeepSeek,让 Excel 数据处理更高效
一、为何选择用 DeepSeek 处理 Excel 在日常工作与生活里,Excel 是我们频繁使用的工具。不管是统计公司销售数据、分析学生成绩,还是梳理个人财务状况,Excel 凭借其强大的功能,如数据排序、筛选和简单公式计算,为我们提供了诸多便利。但当面对复杂的数据处理任务,比如从…...
【prompt实战】AI +OCR技术结合ChatGPT能力项目实践(BOL提单识别提取专家)
本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 1. 需求背景 2. 目标 3. BOL通用处理逻辑…...
黑马 Linux零基础快速入门到精通 笔记
初识Linux Linux简介 提及操作系统,我们可能最先想到的是windows和mac,这两者都属于个人桌面操作系统领域,而Linux则属于服务器操作系统领域。无论是后端软件、大数据系统、网页服务等等都需要运行在Linux操作系统上。 Linux是一个开源的操作…...
蓝桥杯真题 - 像素放置 - 题解
题目链接:https://www.lanqiao.cn/problems/3508/learning/ 个人评价:难度 3 星(满星:5) 前置知识:深度优先搜索 整体思路 深搜,在搜索过程中进行剪枝,剪枝有以下限制条件…...
即梦(Dreamina)技术浅析(六):多模态生成模型
多模态生成模型是即梦(Dreamina)的核心技术之一,旨在结合文本和图像信息,生成更符合用户需求的视觉内容。多模态生成模型通过整合不同类型的数据(如文本和图像),能够实现更丰富、更精准的生成效果。 1. 基本原理 1.1 多模态生成模型概述 多模态生成模型的目标是结合不…...
C++小等于的所有奇数和=最大奇数除2加1的平方。
缘由 三种思路解题:依据算术推导得到一个规律:小等于的所有奇数和等于最大奇数除以2加1的平方。将在后续发布,总计有十种推导出来的实现代码。 int a 0,aa 1,aaa 0;cin >> a; while (aa<a) aaa aa, aa 2;cout << aaa;i…...
react的antd表单校验,禁止输入空格并触发校验提示
首先需要用到form组件,在form.item内添加rules属性,写正则表达式 <Form.Itemlabel"员工姓名"name"name"rules{[{ required: true, message: 员工姓名 },{ pattern: /^(?!\s*$).$/, message: 不能全是空格 },]}> <Input p…...
Kubernetes架构原则和对象设计(三)
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes常见问题解答 本文主要对kubernetes的核心技术概念和核心A…...
Qt+海康虚拟相机的调试
做机器视觉项目的时候,在没有相机或需要把现场采集的图片在本地跑一下做测试时,可以使用海康的虚拟相机调试。以下是设置步骤: 1.安装好海康MVS软件,在菜单栏->工具选择虚拟相机工具,如下图: 2.打开虚拟…...
485网关数据收发测试
目录 1.UDP SERVER数据收发测试 使用产品: || ZQWL-GW1600NM 产品||【智嵌物联】智能网关型串口服务器 1.UDP SERVER数据收发测试 A(TX)连接RX B(RX)连接TX 打开1个网络调试助手,模拟用户的UDP客户端设…...
【C#】一维、二维、三维数组的使用
在C#中,数组是用于存储固定数量相同类型元素的数据结构。根据维度的不同,可以分为一维数组、二维数组(矩阵阵列)、三维数组等。每增加一个维度,数据的组织方式就会变得更加复杂。 一维数组 一维数组是最简单的数组形…...
65【服务器攻击原理讲解】
我们经常可能会听说,某某的服务器被打了,被打死了,这里的打死并不一是指服务器直接死机 服务器有2个决定性参数 1:宽带,宽带越大,能传输的数据就越多 2:CPU,CPU越好能处理的运算…...
用AI写游戏3——模拟发牌
提示词 写一个python程序 ,输入参数为玩家数,输出参数为每个玩家的3张扑克牌 # 写一个python程序 ,输入参数为玩家数,输出参数为每个玩家的3张扑克牌 # 为了实现这个功能,我们可以使用Python的标准库random来生成随机…...
React 生命周期函数详解
React 组件在其生命周期中有多个阶段,每个阶段都有特定的生命周期函数(Lifecycle Methods)。这些函数允许你在组件的不同阶段执行特定的操作。以下是 React 组件生命周期的主要阶段及其对应的生命周期函数,并结合了 React 16.3 的…...
android 动态库加载机制
省流:android 不兼容 glibc,而是写了一套独立的 c 运行时库 (bionic libc),为移动设备和 google 自己推的东西做了大量优化。在这套工具链里,aosp 实现了一个兼容 bionic libc 的链接器,放到系统中代替 ld。 这个链接…...
PyTorch torch.sign函数介绍
torch.sign 是 PyTorch 库中用于计算输入张量每个元素符号的函数。下面从功能概述、函数原型、参数解释、返回值、使用示例以及与相关函数对比等方面详细介绍 torch.sign。 功能概述 torch.sign 函数会返回一个与输入张量形状相同的新张量,其中每个元素的值表示输…...
Flink CDC YAML:面向数据集成的 API 设计
摘要:本文整理自阿里云智能集团 、Flink PMC Member & Committer 徐榜江(雪尽)老师在 Flink Forward Asia 2024 数据集成(一)专场中的分享。主要分为以下四个方面: Flink CDC YAML API Transform A…...
计算机网络知识速记:TCP 与 UDP
计算机网络知识速记:TCP 与 UDP 一、概念 TCP (Transmission Control Protocol): 一个面向连接的协议,确保数据在传输过程中完整无误。通过建立连接和数据确认机制,提高数据传输的可靠性。是面向字节传输的。 UDP (User Datagram Protocol)…...