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

【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 日志落地模块功能功能扩展 一、日志消息格式化设计 日志格式化模块的作用:对日志消息进行格式化&#xff0c…...

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种花色,大小王各一张。…...

路径规划 | 飞蛾扑火算法求解二维栅格路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 路径规划 | 飞蛾扑火算法求解二维栅格路径规划(Matlab)。 飞蛾扑火算法(Firefly Algorithm)是一种基于自然界萤火虫行为的优化算法,在路径规划问题中也可以应…...

优化Cocos Creator 包体体积

优化Cocos Creator 包体体积 引言一、优化图片文件体积:二、优化声音文件体积:三、优化引擎代码体积:四、 优化字体字库文件大小: 引言 优化Cocos Creator项目的包体体积是一个常见且重要的任务,尤其是在移动设备和网…...

TCPDump协议分析工具

TCPDump协议分析工具 TCPDump是一个强大的命令行工具,用于捕获和分析网络数据包。它能够实时监控和记录网络流量,帮助网络管理员和安全专家排查网络问题、分析流量和检测网络攻击。以下是TCPDump的详细介绍,包括其安装、基本使用、过滤规则和…...

土壤分析仪:解密土壤之奥秘的科技先锋

在农业生产和生态保护的道路上,土壤的质量与状况一直是我们关注的焦点。土壤分析仪,作为现代科技在农业和环保领域的杰出代表,以其高效、精准的分析能力,为我们揭示了土壤的奥秘,为农业生产提供了科学指导,…...

计算1的数量

1. 计算1的数量 题目ID:9809必做题100分 最新提交: Accepted 100 分 历史最高: Accepted 100 分 时间限制: 1000ms 空间限制: 524288kB 题目描述 给定一个n*m的二进制矩阵,请你数一数矩阵中完全被0上下左右包围的1的数…...

Linux udp编程

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…...

【开源项目】Rust开发复制文件夹目录结构工具

说明 由于我经常需要在多个大容量的移动硬盘中查找和新增文件,我希望把硬盘的目录结构放到服务器的自建网盘中,因此开发了这个工具,使得在不同硬盘之间的文件管理变得更加便捷 项目地址:https://github.com/VinciYan/folder_clon…...

PostgreSQL的pg_dirtyread工具

PostgreSQL的pg_dirtyread工具 pg_dirtyread 是一个第三方PostgreSQL扩展,它允许用户读取数据库文件中的“脏”数据,即那些被标记为删除或不再可见的数据。这个扩展对于数据恢复和调试非常有用,尤其是在需要恢复被删除或更新前的数据时。 以…...

苹果梦碎:Vision Pro的辉煌与失落,苹果已决定暂停 Vision Pro 后续产品的研发工作

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 苹果Vision Pro:科技巨头的跌宕起伏 在科技的海洋中,苹果公司一直以其创新精神和卓越品质引领潮流。然而,即…...

推荐一款uniapp拖动验证码插件

插件地址:易盾验证码 - DCloud 插件市场 具体使用方式访问插件地址自行获取...