【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对象与数据库表进行映射,并实现了数据的查询操作。

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

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

相关文章

UI设计工具选择指南:Sketch、XD、Figma、即时设计

在数字产品设计产业链中,UI设计师往往起着连接前后的作用。产品经理从一个“需求”开始,制定一个抽象的产品概念原型。UI设计师通过视觉呈现将抽象概念具体化,完成线框图交互逻辑视觉用户体验,最终输出高保真原型,并将…

threadx netxduo stm32f407上实现http server

这次用的是CubeIDE CubeMX 要把NX_APP的mem分配的大一些,在app_azure_rtos.c中,我给的是40*1024,如果给的不够,会导致后面无法分配pool和thread等等 需要用到filex 要在CubeMX里面勾选上,还要用到http_server和dhcp …

1. InternLM - 入门岛

第1关 Linux 基础知识 1. 完成SSH连接与端口映射并运行hello_world.py SSH连接配置 # wsl2中生成密钥对(~/.ssh/id_rsa, ~/.ssh/id_rsa.pub) ssh-keygen -t rsa# 将id_rsa.pub在internStudio作为公钥导入SSH登录 $ ssh -p 38871 rootssh.intern-ai.o…

汽车免拆诊断案例 | 奥迪 Q7 e-tron无法通过插电式充电器充电

故障现象 车主反映,车辆无法使用自带的插电式充电器充电。(这种充电方法是“Mode 2充电”,3针插头,10 A,2.2 kW) 接车后验证故障,将Type 2充电插头连接到车辆时,充电口锁定销循环三…

3DSC(3D形状上下文特征)

形状上下文(shape context简写为SC)由Serge Belongie等人于2002年首次提出,是一种很流行的二维形状特征描述子,多用于目标识别和形状特征匹配。 2004年,Andrea Frome等人将形状上下文的工作从二维数据迁移到三维数据上提出了3D形状上下文(3DSC) 原理解析 2DSC的算法流程…

Git的基本知识点 + GitBash安装Pacman + Git命令含有中文,终端输出中文乱码

Git的基本知识点:整理自以下作者的文章繁华似锦Fighting的文章https://www.jianshu.com/nb/49854893另外还补充了git ls-file、.gitignore 等内容,涉及具体操作,还有命令总结。简略版可以看以上作者的文章,详细版可以看网盘里面的…

【STM32学习】stm32cubemx基础配置,点亮/闪烁一个LED灯

1、cubemx开始 打开cubemx,在help栏中,点击,选择安装你所需要的stm32芯片版本, 打开后,选择你所配置的芯片型号,如我配置的是stm32f4系列,勾选,点击Install。 安装好后,…

HybridCLR原理中的重点总结

序言 该文章以一个新手的身份,讲一下自己学习的经过,大家更快的学习HrbirdCLR。 我之前的两个Unity项目中,都使用到了热更新功能,而热更新的技术栈都是用的HybridCLR。 第一个项目本身虽然已经集成好了热更逻辑(使用…

Java | Leetcode Java题解之第227题基本计算器II

题目&#xff1a; 题解&#xff1a; class Solution {public int calculate(String s) {Deque<Integer> stack new ArrayDeque<Integer>();char preSign ;int num 0;int n s.length();for (int i 0; i < n; i) {if (Character.isDigit(s.charAt(i))) {num…

Elasticseach学习

概念 是一个开源的分布式搜索引擎&#xff0c;可以应用于搜索、日志监控等 倒排索引 正向索引&#xff1a;基于文档id创建索引。查询词条时必须先找到文档&#xff0c;而后判断是否包含词条 倒排索引&#xff1a;对文档内容分词&#xff0c;对词条创建索引&#xff0c;并记录…

docker-compose mongodb 副本集

准备 cd /opt/mongos 把 3 个节点的数据目录创建好 mkdir -p ./mongos/{mongo1,mongo2,mongo3} mongodb 使用 keyFile 进行认证&#xff0c;副本集群中的每个节点的 mongodb 使用 keyFile 的内容作为认证其他成员的共享密码。mongodb 实例只有拥有正确的 keyFile 才可以加入副…

HCIP课堂笔记

第一章 1、数据转换---目标&#xff1a;抽象语言---二进制---电信号 2、应用程序---接收参数和指令&#xff08;编码&#xff1a;接收传递给计算机指令参数最终转换为二进制&#xff09; 3、二进制---电信号 4、对于整个互联网而言指定了统一的标准——OSI/RM参考模型 &…

GitLab和Git

GitLab保姆级教程 文章目录 GitLab保姆级教程一、GitLab安装二、添加组和用户三、新增项目四、Git上传项目说明五、命令行指引 根据以下说明从计算机中上传现有文件&#xff1a;六、创建与合并分支七、GitLab回滚到特定版本八、数据备份与恢复九、docker中创建gitlab GIT 常用命…

“金山-讯飞”杯2024年武汉理工大学程序设计竞赛 A. Mobiusp败走***(思维题-点双连通分量、连通性)

题目 思路来源 官方题解 题解 手玩发现&#xff0c;能换的话&#xff0c;当且仅当.和1在一个环里&#xff0c;而这就是点双连通分量 所以最优策略是先把.换到(x,y)的位置&#xff0c;然后判断.和1在不在一个环里 也就是&#xff1a; 1. 判断删掉1时&#xff0c;.和(x,y)联…

vue 搭建 pinia

文章目录 环境设置存储读取数据【 storeToRefs】借助storeToRefs将store中的数据转为ref对象&#xff0c;方便在模板中使用【getters】当state中的数据&#xff0c;需要经过处理后再使用时&#xff0c;可以使用getters配置【$subscribe】通过 store 的 $subscribe() 方法侦听 s…

SAP与易链SRM系统集成案例

一、项目环境 重庆润通控股&#xff08;集团&#xff09;有限公司成立于2007年&#xff0c;是一家集合汽柴油动力及终端、摩托车、储能电源、汽车零部件、金融服务等产业的多元化集团公司。现拥有员工超4000人&#xff0c;业务遍布全球80多个国家及地区&#xff0c;2021年营…

文件加密软件谁好用丨2024文件加密软件TOP6推荐

在数字化时代&#xff0c;数据安全已成为企业和个人不可忽视的重要议题。随着数据泄露事件频发&#xff0c;文件加密软件成为了保护敏感信息的首选工具。 本文将为您推荐2024年度最值得信赖的六大文件加密软件&#xff0c;帮助您选择最适合自己需求的加密工具。 1. 域智盾 软…

手机容器化 安装docker

旧手机-基于Termux容器化 1、安装app 在手机上安装Termux或ZeroTermux&#xff08;Termux扩展&#xff09; 1.1 切换源 注&#xff1a;可以将termux进行换源&#xff0c;最好采用国内源&#xff0c;例如&#xff1a;清华源等 更新包列表和升级包&#xff08;可选&#xff0…

数智驱动丨zAIoT 连续落地军工、科研院所和机械制造场景,推动数智化转型升级...

引言 在这个万物互联的时代&#xff0c;科技的进步正以不可阻挡之势&#xff0c;深刻地影响并重塑我们的生产和生活方式。数智化转型升级在各个领域展现出强大的动力&#xff0c;已经成为推动社会向前发展的关键力量。 最近&#xff0c;云和恩墨自主研发的数据智能分析处理平台…

FUSE(用户空间文件系统)命令参数

GPT-4 (OpenAI) FUSE (Filesystem in Userspace)是一个允许创建用户空间文件系统的接口。它提供了一个API&#xff0c;让开发者在未修改内核代码的情况下&#xff0c;通过自己的程序实现文件系统。FUSE 文件系统通常通过 mount 命令来挂载&#xff0c;而且这个命令可以接受各…