【JavaWeb程序设计】Servlet(二)
目录
一、改进上一篇博客Servlet(一)的第一题
1. 运行截图
2. 建表
3. 实体类
4. JSP页面
4.1 login.jsp
4.2 loginSuccess.jsp
4.3 loginFail.jsp
5. mybatis-config.xml
6. 工具类:创建SqlSessionFactory实例,进行 MyBatis 的数据库操作
7. UserMapper.xml
8. UserMapper
9. Service层实现类
10. loginServlet
二、编写过滤器实现用户登录身份验证,防止未经登录用户越权访问页面。
1. 登录页面(login.jsp)
2. LoginFilter
3. LoginServlet
4. 运行截图
三、使用监听器对HttpSession实例变化状态进行监听,限制一个用户同一时间只能登陆一次。
1. 运行截图
2. JS代码
3. LoginSessionListener(登录监听)
4. LoginServlet(登录)
5. LogoutServlet(注销)
四、心得体会
一、改进上一篇博客Servlet(一)的第一题
【JavaWeb程序设计】Servlet(一)-CSDN博客文章浏览阅读205次。一、客户端通过login.jsp发出登录请求,请求提交到loginServlet处理。1. 运行截图2. 登录页面(login.jsp)3. loginServlet4. 登录成功页面(loginSuccess.jsp)5. 登录失败页面(loginFail.jsp)二、使用ServletConfig检索Servlet的初始化参数,请补充填写以下①-⑥空,并运行ConfigDemoServlet程序,将运行结果截图。1. 编写ConfigDemoServlet程序2. 修改whttps://blog.csdn.net/m0_67830223/article/details/140324353
原文链接如上,引入数据库,创建用户表,包括用户名和密码:客户端通过login.jsp发出登录请求,请求提交到loginServlet处理。如果用户名和密码跟用户表匹配则视为登录成功,跳转到loginSuccess.jsp页面,显示“欢迎你”+用户名;否则跳转到loginFail.jsp页面,显示“登录失败”,通过超链接返回login.jsp。
1. 运行截图
(1)输入数据库不存在的用户信息

显示登录失败

点击超链接返回登录页面

(2)输入存在数据库的用户信息

登录成功

2. 建表

3. 实体类

4. JSP页面
4.1 login.jsp
通过表单提交到loginServlet

4.2 loginSuccess.jsp

4.3 loginFail.jsp

5. mybatis-config.xml

6. 工具类:创建SqlSessionFactory实例,进行 MyBatis 的数据库操作

7. UserMapper.xml

8. UserMapper

9. Service层实现类

10. loginServlet

二、编写过滤器实现用户登录身份验证,防止未经登录用户越权访问页面。
用上一题写的JSP页面来测试,设置loginSuccess.jsp和loginFail.jsp这两个页面需要登录才可以访问。
1. 登录页面(login.jsp)

2. LoginFilter
根据用户请求的url判断是否有需要权限保护的页面,如果有,判断session中是否有用户信息,进而判断是否放行。


3. LoginServlet
根据用户输入数据去数据库查询有没有对应的记录来做判断。

其他部分跟第一题一样。
4. 运行截图
假设用户通过url越权访问loginSuccess.jsp

直接让用户重定向到登录页面

登录成功之后可以正常访问页面

直接访问登录失败页面

三、使用监听器对HttpSession实例变化状态进行监听,限制一个用户同一时间只能登陆一次。
验证方式:用两个浏览器登陆同一个账号,其中一个登陆成功,另外一个自动失效
本题依旧以第一题的登录页面为例,假设用户在一个浏览器登录成功,那么在另一个浏览器登录不上该账号。如果用户在登陆成功的页面选择注销账号,那么另一个浏览器则登录成功。
1. 运行截图
在EDGE浏览器登录并选择记住密码:


在电脑自带浏览器登录同一个账号,提示无法登录

左边的浏览器点击注销之后,跳转到登录页面并清除用户信息,同时在左边登录相同的账号。

右边的浏览器登录成功。

2. JS代码
(弹窗提示用户已登录过该账号),JSP同第一题一样

3. LoginSessionListener(登录监听)


4. LoginServlet(登录)


5. LogoutServlet(注销)

其他代码同第一题!!!
四、心得体会
(1)Servlet:Servlet是JavaWeb开发的核心组件之一,它可以接收HTTP请求并生成HTTP响应。通过编写Servlet,我们可以实现动态的Web页面和交互式的Web应用程序。我学会了如何编写Servlet,并通过处理请求参数、操作session和cookie等技术实现了用户登录功能。
(2)过滤器:过滤器是对Web请求进行预处理或后处理的组件,它可以在请求到达Servlet之前对请求进行过滤和修改。通过编写过滤器,我们可以对请求进行验证、权限控制、字符编码转换等操作。我学会了如何编写过滤器,并使用过滤器实现了用户登录状态验证的功能,在用户访问受限资源之前进行了身份验证。
(3)监听器:监听器是用于监听Web应用程序中事件的组件,它可以在事件发生时执行相应的操作。通过编写监听器,我们可以监听会话、请求、属性等事件,并根据需要进行处理。我学会了如何编写监听器,并使用监听器实现了用户登录和注销的功能,以及检测用户在其他机器上登录的情况。
(4)MyBatis:MyBatis是一个开源的持久层框架,它简化了数据库访问操作。通过使用MyBatis,我们可以通过编写简洁的SQL语句和映射配置文件来操作数据库,提高了开发效率。我学会了如何配置和使用MyBatis,通过映射文件将Java对象与数据库表进行映射,并实现了数据的查询操作。
相关文章:
【JavaWeb程序设计】Servlet(二)
目录 一、改进上一篇博客Servlet(一)的第一题 1. 运行截图 2. 建表 3. 实体类 4. JSP页面 4.1 login.jsp 4.2 loginSuccess.jsp 4.3 loginFail.jsp 5. mybatis-config.xml 6. 工具类:创建SqlSessionFactory实例,进行 My…...
php探针
php探针是用来探测空间、服务器运行状况和PHP信息用的,探针可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息。 下面就分享下我是怎样利用php探针来探测服务器网站空间速度、性能、安全功能等。 具体步骤如下: 1.从网上下…...
泰勒级数 (Taylor Series) 动画展示 包括源码
泰勒级数 (Taylor Series) 动画展示 包括源码 flyfish 泰勒级数(英语:Taylor series)用无限项连加式 - 级数来表示一个函数,这些相加的项由函数在某一点的导数求得。 定义了一个函数f(x)表示要近似的函数 sin ( x ) \sin(x) …...
蔚来汽车:拥抱TiDB,实现数据库性能与稳定性的飞跃
作者: Billdi表弟 原文来源: https://tidb.net/blog/449c3f5b 演讲嘉宾:吴记 蔚来汽车Tidb爱好者 整理编辑:黄漫绅(表妹)、李仲舒、吴记 本文来自 TiDB 社区合肥站走进蔚来汽车——来自吴记老师的演讲…...
【Django+Vue3 线上教育平台项目实战】构建高效线上教育平台之首页模块
文章目录 前言一、导航功能实现a.效果图:b.后端代码c.前端代码 二、轮播图功能实现a.效果图b.后端代码c.前端代码 三、标签栏功能实现a.效果图b.后端代码c.前端代码 四、侧边栏功能实现1.整体效果图2.侧边栏功能实现a.效果图b.后端代码c.前端代码 3.侧边栏展示分类及…...
对比 UUIDv1 和 UUIDv6
UUIDv6是UUIDv1的字段兼容版本,重新排序以改善数据库局部性。UUIDv6主要在使用UUIDv1的上下文中实现。不涉及遗留UUIDv1的系统应该改用UUIDv7。 与 UUIDv1 将时间戳分割成低、中、高三个部分不同,UUIDv6 改变了这一序列,使时间戳字节从最重要…...
记一次饱经挫折的阿里云ROS部署经历
前言 最近在参加的几个项目测评里,我发现**“一键部署”这功能真心好用,省下了不少宝贵时间和力气,再加上看到阿里云现在有个开源上云**的活动。趁着这波热潮,今天就聊聊怎么从头开始,一步步搞定阿里云的资源编排服务…...
代码运行故障排除:PyCharm中的问题解决指南
代码运行故障排除:PyCharm中的问题解决指南 引言 PyCharm,作为一款流行的集成开发环境(IDE),提供了强大的工具来支持Python开发。然而,即使是最先进的IDE也可能遇到代码无法运行的问题。这些问题可能由多…...
css实现渐进中嵌套渐进的方法
这是我们想要的实现效果: 思路: 1.有一个底色的背景渐变 2.需要几个小的块级元素做绝对定位通过渐变filter模糊来实现 注意:这里的采用的定位方法,所以在内部的元素一律要使用绝对定位,否则会出现层级的问题&…...
JavaWeb后端学习
Web:全球局域网,万维网,能通过浏览器访问的网站 Maven Apache旗下的一个开源项目,是一款用于管理和构建Java项目的工具 作用: 依赖管理:方便快捷的管理项目以来的资源(jar包)&am…...
VUE_TypeError: Cannot convert a BigInt value to a number at Math.pow 解决方法
错误信息 TypeError: Cannot convert a BigInt value to a number at Math.pow vue 或 react package.json添加 "browserslist": {"production": ["chrome > 67","edge > 79","firefox > 68","opera >…...
Linux下mysql数据库的导入与导出以及查看端口
一:Linux下导出数据库 1、基础导出 要在Linux系统中将MySQL数据库导出,通常使用mysqldump命令行工具。以下是一个基本的命令示例,用于导出整个数据库: mysqldump -u username -p database_name > export_filename.sql 其中&a…...
Open3d入门 一文读懂三维点云
三维点云技术的发展始于20世纪60年代,随着激光雷达和三维扫描技术的进步,在建筑、考古、地理信息系统和制造等领域得到了广泛应用。20世纪90年代,随着计算机处理能力的提升,点云数据的采集和处理变得更加高效,推动了自…...
pyinstaller系列教程(一)-基础介绍
1.介绍 PyInstaller是一个用于将Python应用程序打包为独立可执行文件的工具,它支持跨平台操作,包括Windows、Linux和MacOS等操作系统。特点如下: 跨平台支持:PyInstaller可以在多个操作系统上运行,并生成相应平台的可…...
echarts图表:类目轴
category 类目轴,适用于离散的类目数据。 例如商品名称、时间等。 类目轴上的每个刻度代表一个类目,刻度之间没有量的关系,只是简单的分类。 在类目轴上,数据点会对应到相应的类目上。...
SSM贫困生申请管理系统-计算机源码84308
摘要 随着教育信息化的不断推进,越来越多的高校开始借助信息技术手段提升贫困生申请管理的效率与准确性。为此,我们设计并实现了SSM贫困生申请管理系统,旨在通过信息化手段优化贫困生申请流程,提高管理效率,为贫困生提…...
[C++]——同步异步日志系统(5)
同步异步日志系统 一、日志消息格式化设计1.1 格式化子项类的定义和实现1.2 格式化类的定义和实现 二、日志落地类设计2.1 日志落地模块功能实现与测试2.2 日志落地模块功能功能扩展 一、日志消息格式化设计 日志格式化模块的作用:对日志消息进行格式化,…...
Qt项目:基于Qt实现的网络聊天室---TCP服务器和token验证
文章目录 TCP服务器设计客户端TCP管理者ChatServerAsioIOServicePoolSession层LogicSystem总结 token验证模块完善protoStatusServer验证token客户端处理登陆回包用户管理登陆界面 本篇完成的模块是TCP服务器的设计和token验证 TCP服务器设计 客户端TCP管理者 因为聊天服务要…...
深入理解C++构造函数
目录 1.引言 2.默认构造函数 3.自定义构造函数 4.带继承关系类的构造函数 5.带多重继承关系类的构造函数 6.带虚继承关系类的构造函数 7.总结 1.引言 对于学过C的来说,构造函数是非常熟悉不过的了。但是你真正了解它吗?构造函数内部初始化变量的顺…...
J025_斗地主游戏案例开发(简版)
一、需求描述 完成斗地主游戏的案例开发。 业务:总共有54张牌; 点数:3、4、5、6、7、8、9、10、J、Q、K、A、2 花色:黑桃、红桃、方片、梅花 大小王:大王、小王 点数分别要组合4种花色,大小王各一张。…...
STM32时钟系统架构与配置详解
1. STM32时钟系统架构解析STM32微控制器的时钟系统堪称整个芯片的"心脏",它决定了处理器内核、外设以及总线的工作节奏。与人体需要心脏提供血液循环类似,STM32的各个功能模块都需要时钟信号来同步工作。理解时钟系统对于嵌入式开发者而言&…...
深度强化学习在Python中的自动驾驶策略探索:运用DDPG与PPO算法技术实现及实验结果报告
python基于深度强化学习的自动驾驶策略研究 关键技术:DDPG、PPO算法、深度强化学习 内容包含:python程序实验结果报告深夜的模拟器里,一辆红色小车正在空荡的街道上蛇形前进,方向盘像喝醉似的左右乱转。这可不是什么灵异事件&…...
我被TRO了,到底该选和解还是应诉?
很多跨境卖家第一次遭遇TRO(临时限制令)时,往往是懵的:店铺被冻结、资金被锁、链接下架,一夜之间业务几乎停摆。这个时候最核心的问题只有一个——到底该和解,还是应诉?先说结论:没有…...
10款主流施工项目管理系统对比:建筑工程企业选型参考
本文将深入对比10款建筑工程项目管理系统:Worktile、Oracle Primavera P6、Oracle Aconex、Autodesk Build、Procore、Microsoft Project、Smartsheet、monday.com、Jira Confluence、广联达数字项目管理平台。文章将从定位、适用规模、部署方式、核心模块、安全合…...
嘎嘎降AI和去AIGC哪个更适合文科论文?深度对比评测
嘎嘎降AI和去AIGC哪个更适合文科论文?深度对比评测 选降AI工具看三点:达标率、价格、处理后文本质量。 按这标准我花了一周研究主流工具。结论先说:嘎嘎降AI(www.aigcleaner.com)最适合大多数人——4.8元一篇&#x…...
揭秘AI教材写作:掌握这些技巧,用AI写教材低查重不是梦
编写教材的过程,总是让我踩到“慢节奏”的不少雷区。尽管框架和材料已经准备齐全,却在内容创作上遭遇阻碍——有时候一句话反复修改半个小时,心里始终觉得没说到点子上;而章节之间的衔接,绞尽脑汁也难以找到合适的表达…...
终极指南:CSS解析器与PostCSS插件开发完全手册
终极指南:CSS解析器与PostCSS插件开发完全手册 【免费下载链接】awesome-css :art: A curated contents of amazing CSS :) 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-css GitHub 加速计划 / aw / awesome-css 项目是一个精心策划的 CSS 资源集合…...
LibreCAD:开源2D CAD解决方案的价值与实践指南
LibreCAD:开源2D CAD解决方案的价值与实践指南 【免费下载链接】LibreCAD LibreCAD is a cross-platform 2D CAD program written in C17. It can read DXF/DWG files and can write DXF/PDF/SVG files. It supports point/line/circle/ellipse/parabola/spline pri…...
SimWorks FDTD仿真结果可视化:从监视器数据到专业图表,手把手教你避开插值陷阱
SimWorks FDTD仿真结果可视化:从监视器数据到专业图表,手把手教你避开插值陷阱 电磁仿真工程师们常遇到这样的困境:明明仿真设置无误,计算结果却与预期存在微妙差异。问题的根源往往不在仿真过程本身,而在于后处理阶段…...
腾讯云推出“领域虾”CloudQ:把企业云上治理,装进你每天都在用的聊天框
好家伙,腾讯云又给龙虾市场上新了。最近,腾讯云官宣的 CloudQ IT 老师傅(全球首款 ITOM“领域虾”),直接把云上的技术难题给办了。你甚至都不用登录控制台、不用敲命令,在微信里聊聊天就能完成架构巡检、风…...
