JavaWeb学习|JavaBean;MVC三层架构;Filter;Listener

1.JavaBean

实体类
JavaBean有特定的写法:
必须要有一个无参构造
属性必须私有化。
必须有对应的get/set方法
用来和数据库的字段做映射 ORM;
ORM:对象关系映射
表--->类
字段-->属性
行记录---->对象

2.<jsp:useBean 标签

 

3. MVC三层架构

4. Filter

Filter:过滤器,用来过滤网站的数据
处理中文乱码
登录验证....

弄一个过滤器的demo 空maven+web项目

导入依赖

 

创建一个过滤器继承对应接口

 

创建一个servlet

配置路由访问,发现出现乱码

在servlet中写如下字段再访问即可显示出汉字

 

对于每创建一个servlet就需要多加一个这个编码转换操作,非常复杂,故使用过滤器解决该问题

写好过滤器功能后,在web.xml中配置过滤器的过滤路径,这里故意将之前写的jsp页面配了两个路径,一个带/servlet一个不带,我们配的过滤器只要访问路径中带/servlet即可经过过滤器,不带则不通过过滤器

之后启动项目,对jsp页面文件进行访问,用不带/servlet的路径访问时,由于不经过过滤器,故过滤器中提供的编码转换未被使用,所以汉字仍为?,带/servlet路径时访问,则经过过滤器,放置在过滤器中的编码转换代码被运行,故访问页面中的汉字被成功显示出来

 

Web服务器关闭时,过滤器会被销毁,启动时,就会初始化

5.Listener

做一个统计网站在线访问人数的demo来理解Listener

创建一个监听器类,并实现相应接口

编写创建session或销毁session时需要执行的在线人数更新逻辑,创建session也就是打开一个浏览器的时候,销毁session也就是关闭一个浏览器的时候,一台电脑可用多个不同的浏览器来对同一个页面进行访问,来体验这个demo

index页面用来显示实时在线访问人数

 

在web.xml中注册我们写的监听器

 

设置session过期时间

 运行项目,访问首页

6.Filter实现权限拦截

用户登录之后才能进入主页!用户注销后就不能进入主页了!

创建一个主页

再创建一个登录的页面

 

同时再编写一个登录失败没权限的错误页面

 

在web.xml中配置登录页面提交后需要执行功能的servlet的路由

编写执行功能的servlet,先获取在登录页面提交的用户名,如果输入的内容为admin则将session的id存到session中去并转发至登录成功界面,如果输入内容不是admin,则转发至登录失败权限不足的错误页面

再在主页写一个注销的按键,方便用户注销下线,配的地址为一会要编写的执行注销逻辑的servlet的路由

编写执行注销逻辑的servlet,先去session中取id,如果取出不为空,说明用户登录着,将这个id移除出session,并且将页面转发至登录界面,让用户重新登录

web.xml中不要忘记配该servlet的路由,这里的路由与注销案件绑定的路由一致

如何避免用户登录前,直接通过主页的url直接进入主页呢?我们可以通过配置过滤器来进行拦截

如果说session中没取到id,则证明没登录,就算用户直接访问主页的url也不能成功,直接被转发到错误页面

在web.xml中配置的过滤器的过滤路由就是将访问主页时的路由经过过滤器,主页的jsp文件在sys目录下,则访问主页的路由必然携带/sys,故我们直接配置过滤路由为/sys/*即可,访问路径中只要带有/sys则必然通过过滤器

 

 

 

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

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

相关文章

Mybatis 初识

目录 1. MyBatis入门 1.1 MyBatis的定义 1.2 MyBatis的核心 MyBatis的核心 JDBC 的操作回顾 1.3 MyBatis的执行流程 MyBatis基本工作原理 2. MyBatis的使用 2.1 MyBatis环境搭建 2.1.1 创建数据库和表 2.1.2 添加MyBatis框架支持 老项目添加MyBatis 新项目添加MyBatis 2.1.3 设…

考研算法38天:反序输出 【字符串的翻转】

题目 题目收获 很简单的一道题&#xff0c;但是还是有收获的&#xff0c;我发现我连scanf的字符串输入都忘记咋用了。。。。。我一开始写的 #include <iostream> #include <cstring> using namespace std;void deserve(string &str){int n str.size();int…

【HBZ分享】ES索引分片的写入原理 及 流程

当一条数据写到ES要经历哪些过程&#xff1f; 当插入一条新的数据时&#xff0c; 数据会进入Translog 和 MemoryBuffer两个内存中&#xff0c;并添加了事务日志&#xff0c;此时该文档不可查询当translog大到一定程度时&#xff0c;会发生一个commit操作&#xff0c;也就是全量…

css小练习:案例6.炫彩加载

一.效果浏览图 二.实现思路 html部分 HTML 写了一个加载动画效果&#xff0c;使用了一个包含多个 <span> 元素的 <div> 元素&#xff0c;并为每个 <span> 元素设置了一个自定义属性 --i。 这段代码创建了一个简单的动态加载动画&#xff0c;由20个垂直排列的…

【go语言基础】结构体struct

主要是敲代码&#xff0c;敲的过程中会慢慢体会。 1.概念 结构体是用户定义的类型&#xff0c;表示若干字段的集合&#xff0c;目的是将数据整合在一起。 简单的说&#xff0c;类似Java中的实体类。存储某个实体属性的集合。 2.结构体声明 注意&#xff1a;结构体名字&…

Flask实现接口mock,安装及使用教程(一)

1、什么是接口mock 主要是针对单元测试的应用&#xff0c;它可以很方便的解除单元测试中各种依赖&#xff0c;大大的降低了编写单元测试的难度 2、什么是mock server 正常情况下&#xff1a;测试客户端——测试——> 被测系统 ——依赖——>外部服务依赖 在被测系统和…

AI:01-基于机器学习的深度学习的玫瑰花种类的识别

文章目录 一、数据集介绍二、数据预处理三、模型构建四、模型训练五、模型评估六、模型训练七、模型评估八、总结深度学习技术在图像识别领域有着广泛的应用,其中一种应用就是玫瑰花种类的识别。在本文中,我们将介绍如何使用机器学习和深度学习技术来实现玫瑰花种类的识别,并…

运维监控学习1

1、监控对象&#xff1a; 1、监控对象的理解&#xff1b;CPU是怎么工作的&#xff1b; 2、监控对象的指标&#xff1a;CPU使用率&#xff1b;上下文切换&#xff1b; 3、确定性能基准线&#xff1a;CPU负载多少才算高&#xff1b; 2、监控范围&#xff1a; 1、硬件监控&#x…

“掌握类与对象,点亮编程之路“(下)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:《C语言入门知识》&#x1f649; &#x1f649; 内容推荐:“掌握类与对象&#xff0c;点亮编程之路“(上)&#x1f649; &#x1f439;今日诗词:春风得意马蹄疾&#xff0c;一日看尽长安花&#x1f439; 目录 &…

mysql-数据库-在表中添加数据三种方式

创建数据库和表 mysql> create database mydb4; Query OK, 1 row affected (0.01 sec)mysql> use mydb4; Database changed mysql> create table stu_info(-> stu_id int primary key auto_increment comment 学号,-> stu_name varchar(30) not null comment …

flume系列之:监控zookeeper的flume配置写入节点,新增和删除flume agent节点,通过ansible自动部署和卸载flume agent

flume系列之:监控zookeeper的flume配置写入节点,新增和删除flume agent节点,通过ansible自动部署和卸载flume agent 一、相关技术二、流程梳理三、部署和删除flume agent效果四、监控zookeeper节点五、新增zookeeper节点部署flume agent六、删除zookeeper节点删除flume agen…

计算机网络和 Internet 的基本概念

计算机网络和互联网&#xff08;Internet&#xff09;是现代计算机科技中的重要概念。它们为计算机之间的通信和数据交换提供了基础架构。以下是它们的基本概念&#xff1a; **计算机网络&#xff1a;** 计算机网络是指将多台计算机连接在一起&#xff0c;以便它们可以共享资…

vscode里面报:‘xxx‘ is assigned a value but never used.解决办法

const setCurPage: React.Dispatch<React.SetStateAction<number>> 已声明“setCurPage”&#xff0c;但从未读取其值。ts(6133) setCurPage is assigned a value but never used.eslinttypescript-eslint/no-unused-vars 出现这个报错是eslint导致的&#xff0…

P450进阶款无人机室内定位功能研测

在以往的Prometheus 450&#xff08;P450&#xff09;无人机上&#xff0c;我们搭载的是Intel Realsense T265定位模块&#xff0c;使用USB连接方式挂载到机载计算机allspark上&#xff0c;通过机载上SDK驱动T265运行并输出SLAM信息&#xff0c;以此来实现室内定位功能。 为进…

倒数纪念日-生日提醒事项时间管理倒计时软件

倒数纪念日​​​​​​​是一款功能强大的时间管理、事项提醒软件。帮你更好的管理倒数日、纪念日、生日、节假日、还款日等各种重要日子&#xff0c;通知提醒&#xff0c;让你不再错过生命中的每一个重要日子。 【功能简介】 分类管理&#xff1a;倒数日、纪念日、自定义分类…

腾讯云10万日活服务器配置怎么选?费用多少?

日活10万的小程序或APP使用腾讯云服务器配置怎么选&#xff1f;腾讯云10万人服务器配置多少钱一年&#xff1f;可以选择腾讯云4核8G12M轻量应用服务器或8核16G18M服务器&#xff0c;云服务器CVM的话可以选择标准型S5实例&#xff0c;腾讯云服务器网来详细说下腾讯云日活10万服务…

AJAX-笔记(持续更新中)

文章目录 Day1 Ajax入门1.AJAX概念和axios的使用2. 认识URL3.URL的查询参数4.常用的请求方法和数据提交5.HTTP协议-报文6.接口文档7.form-serialize插件8.案例用户登录 Day2 Ajax综合案bootstrap弹框图书管理图片上传更换背景个人信息设置 Day3 AJAX原理XMLHttpRequestPromise封…

SQL常见命令语句

1.连接数据库 mysql (-h IP) -u root -p 密码2.查看数据库 show databases3.使用数据库 use db_name4.查看表 show tables [from db_name]5.查看表结构 desc tb_name6.创建、删除、选择数据库 create database db_namedrop database db_nameuse db_name7.数据类型 参考链…

kvm not all arguments converted during string

kylin virt-manager 远程镜像制作问题记录(not all arguments ) 项目场景&#xff1a; 服务器端安装的OS版本&#xff1a;Kylin-Server-10-SP1-Release-Build20-20210518-arm64-2021-05-18 客户端安装的OS版本&#xff1a;Kylin-Server-10-SP1-Release-Build20-20210518-x86_…

【数据结构•堆】序列和的前n小元素(堆排序)

题目描述 问题&#xff1a;序列和的前n小元素 给出两个长度为n的有序表A和B, 在A和B中各任取一个, 可以得到 n^2 个和. 求这些和最小的n个。 输入输出格式 输入格式&#xff1a; 输入数据共三行。   第一行&#xff0c;一个整数值n &#xff08; n < 10^4 &#xff09…