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

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.lryc.cn/news/120510.html

相关文章:

  • arx 外部参照文件(XREF)的添加、删除、卸载和重载_objectarx
  • 【博客699】docker daemon预置iptables剖析
  • Golang 中的交叉编译详解
  • Python中的诡异事:不可见字符!
  • 【uniapp】uniapp使用微信开发者工具制作骨架屏:
  • 【UE4 RTS】06-Camera Edge Scroll
  • 无涯教程-Perl - length函数
  • 怎样在 CentOS 里下载 RPM 包及其所有依赖包
  • 在Ubuntu上使用NFS挂载
  • 复现海康威视综合安防管理平台artemis接口Spring boot heapdump内存泄露漏洞
  • 哈希unordered系列介绍(上)
  • MySQL随心记第二篇
  • 0001nginx简介、相关模型与原理
  • elasticsearch简单入门语法
  • Python自动化测试用例:如何优雅的完成Json格式数据断言
  • 阿里云对象存储服务OSS
  • 第三节:在WORD为应用主窗口下关闭EXCEL的操作(1)
  • mybatis 缓存
  • 分布式Redis详解
  • 揭秘程序员和技师的7大共同点,最后一点绷不住了
  • SQL | 使用函数处理数据
  • 基于Dlib库+SVM+Tensorflow+PyQT5智能面相分析-机器学习算法应用(含全部工程源码)+训练及测试数据集
  • 【Flutter】【packages】simple_animations 简单的实现动画
  • python之matplotlib入门初体验:使用Matplotlib进行简单的图形绘制
  • [Linux kernel] [ARM64] boot 流程梳理
  • 重建二叉树
  • 支付整体架构
  • 百度智能云:千帆大模型平台接入Llama 2等33个大模型,上线103个Prompt模板
  • 烦人的幻灯片——拓扑排序
  • 无涯教程-Perl - ord函数