最新要闻
- 热推荐:电动车生产基地杀到欧洲?比亚迪最新回应来了
- 天天日报丨无2D版!《阿凡达2》预售开启:平均票价68元 首映口碑好评爆棚
- 【世界新要闻】备受年轻人追捧的“网红餐厅”有多坑?不服不行
- 快播:实火!《阿凡达2:水之道》预售首日总票房突破千万
- 小米13系列发布会时间偷跑 最新售价信息曝光:3999/4999元起售
- 天天头条:中国石化又一次产出99.999%高纯度氢:每年2100吨
- 即时看!12306购票页面变了:已取消查验核酸弹窗
- 天天观热点:双11期间快递达42.7亿件 你的收到了吗?
- 【快播报】员工爆料奶茶店用过期原料 老板:事儿太多
- 【全球热闻】刘海屏iPhone用上灵动岛:越狱软件开发者推出“灵动刘海”
- 路怒可怕!出租车插队未果隧道逼停保时捷 还质问开豪车了不起:罚600扣1分
- 节省1000元成本 特斯拉减配辅助停车的超声波雷达:把新车主们坑惨了
- 暴雪《魔兽世界》停服或致大量游戏工作室倒闭:代打行业寒冬
- 加绒款同价:361° 纯色卫衣/运动裤69元大促(40元券)
- Intel晒新显卡驱动表现:DX9游戏性能提升达80%
- 全球限量5000台!ThinkPad X1 Carbon 30周年纪念版即将上市
手机
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
票房这么火爆,如何请视障人士“看”一场电影?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
- 票房这么火爆,如何请视障人士“看”一场电影?
家电
当前最新:JavaWeb三大组件(Servlet、Filter、Listener)
前言
JavaWeb三大组件指的是:Servlet 程序、Filter 过滤器、Listener 监听器,它们在JavaWeb开发中分别提供不同的功能,然而很多人有只用过Servlet、Filter,很少接触到Listener,甚至有些人对然而很多人有只用过Servlet都不熟悉,因为在企业开发中,都是使用框架的封装好的,很少接触到原生的JavaWeb组件,充其量就是使用Filter拦截请求,过滤响应,所以很多人上来就直接学框架。
(相关资料图)
其实这种做法很不可取,虽然随着技术的发展,已经没有人再使用原生JavaWeb开发了,加之前后端分离,像JSP、JDBC等技术都没有了专门学习的必要了。但是JavaWeb的三大组件却是十分重要,框架都是对原生JavaWeb进行封装的结果,像SpringMVC的核心就是Servlet,涉及到Listener的框架就更多了,而Filter不仅在框架使用,日常开发中也经常被用到,所以要深入理解框架,就必须熟练掌握JavaWeb的三大组件。
一、Servlet 程序
Servlet是什么?
Servlet是JavaEE规范(接口)之一;Servlet是运行在服务器(Web容器Tomcat等)上的一个 java 小程序,它用来接收客户端发送过来的请求进行处理,并响应数据给客户端。Servlet及相对的对象,都由Tomcat创建,我们只是使用。
Servlet需要完成3个任务:
- 接收请求:将客户端发送过来的请求封装成ServletRequest对象(包含请求头、参数等各种信息)
- 处理请求:在service方法中接收参数,并且进行处理请求。
- 数据响应:请求处理完成后,通过转发(forward)或者重定向(redirect)到某个页面。
转发(forward)或者重定向(redirect)的区别?本质:forward是HttpServletRequest的方法,redirect是HttpServletResponse的方法。现象及结果:1. forward客户端只发了一次请求,在服务端进行转发行为,可以共享数据(request中参数),浏览器URL不改变。2. redirect是服务端向客户端完成响应后,客户端再次发起一个请求,不可以共享数据(request中参数),请求了两次,浏览器URL改变。
Servlet的生命周期
执行 Servlet 构造器方法第一步,在web.xml中的servlet中配置 load-on-startup 的值 ≥ 0 时,表示应用启动时就创建这个servlet。否则,第一次访问的时候调用。
执行 init 初始化方法第二步,第一次访问的时候调用。
执行 service 方法第三步,每次访问都会调用。
执行 destroy 销毁方法第四步,在 web 工程停止的时候调用。
通过实现 Servlet 接口 实现Servlet程序
- 实现Servlet接口,重写service方法,处理请求,并响应数据
- 在web.xml中配置servlet程序的访问地址。
web.xml 中的配置:
HelloServlet com.demo.servlet.HelloServlet HelloServlet /hello
通过继承 HttpServlet 实现Servlet程序(推荐,一般开发中使用这种方式)
- 继承 HttpServlet类,按业务需求重写doGet 或 doPost 方法,处理请求
- 到 web.xml 中的配置 Servlet 程序的访问地址
代码比实现Servlet接口的方式更加简单,不需要进行请求的类型转换,配置与实现Servlet接口的方式一样,所以这里不做演示
ServletConfig(Servlet程序的配置信息类)
在Servlet 程序创建时,就会创建一个对应的 ServletConfig 对象。
它的三大作用:
- 获取web.xml 中 Servlet 程序的别名 servlet-name 的值
- 获取web.xml 中 Servlet 程序的获取初始化参数 init-param
- 获取 ServletContext 对象
ServletContext (Servlet上下文) 接口
- 每个web项目只有一个ServletContext对象,在web工程部署启动的时候创建,在工程停止的时候关闭。
- ServletContext 对象是一个域对象(可以像Map一样存储数据的对象。域指的是作用域,这里是整个web工程)。
ServletContext 类的四个作用:
- 获取 web.xml 中配置的上下文参数 context-param
- getContextPath()获取当前的工程路径,格式: /工程路径
- getRealPath()获取工程部署后在服务器硬盘上的绝对路径
- 像 Map 一样存取数据
HttpServletRequest 和 HttpServletResponse
HttpServletRequest
HttpServletRequest继承了ServletRequest,每次请求进入tomcat服务器,tomcat容器就会把请求过来的 HTTP 协议信息解析好封装到 Request 对象中。然后传递到 service 方法(doGet 和 doPost)中给我们使用。我们可以通过 HttpServletRequest 对象,获取到所有请求的信息
HttpServletResponse
HttpServletResponse 类和 HttpServletRequest 类一样。每次请求进来,Tomcat 服务器都会创建一个 Response 对象传递给 Servlet 程序去使用。通过 HttpServletResponsee 对象来进行设置返回给客户端的信息
解决请求的中文乱码
- Get请求:获取请求参数,先以 iso8859-1 进行编码,再以 utf-8 进行解
- Post请求:调用req.setCharacterEncoding("UTF-8"), 设置请求体的字符集为 UTF-8;
解决响应的中文乱码
方案一(推荐):
// 它会同时设置服务器和客户端都使用 UTF-8 字符集,还设置了响应头// 此方法一定要在获取流对象之前调用才有效resp.setContentType("text/html; charset=UTF-8")
方案二(不推荐):
// 设置服务器字符集为 UTF-8resp.setCharacterEncoding("UTF-8");// 通过响应头,设置浏览器也使用 UTF-8 字符集resp.setHeader("Content-Type", "text/html; charset=UTF-8"
Filter
Filter 是JavaEE规范(接口)之一;Filter 过滤器它的作用是:拦截请求,过滤响应。
常见应用场景:1、权限检查2、日记操作3、事务管理……等等
Filter 过滤器的使用步骤:
1、实现 Filter 接口,实现过滤方法 doFilter()2、到 web.xml 中去配置 Filter 的拦截路径
web.xml 中的配置:
AdminFilter com.demo.filter.AdminFilter AdminFilter /admin/*
Filter 的生命周期
- 构造器方法
- init 初始化方法第 1,2 步,在 web 工程启动的时候执行(Filter 已经创建)
- doFilter 过滤方法第 3 步,每次拦截到请求,就会执行
- destroy 销毁第 4 步,停止 web 工程的时候,就会执行(停止 web 工程,也会销毁 Filter 过滤器)
FilterConfig(Filter过滤器配置类)
Tomcat 每次创建 Filter 的时候,也会同时创建一个 FilterConfig 类,这里包含了 Filter 配置文件的配置信息。
FilterConfig 类的作用是获取 filter 过滤器的配置内容:
- 获取 Filter 的名称 filter-name 的内容
- 获取在 Filter 中配置的 init-param 初始化参数
- 获取 ServletContext 对象
FilterChain 过滤器链
在多个Filter执行的时候,它们执行的优先顺序由它们在web.xml中从上到下配置的filter-mapping顺序决定,与filter的配置顺序无关!!!
过滤器链(多个Filter执行)的特点:
- 所有filter和目标资源默认都执行在一个线程中。
- 多个filter共同执行的时候,它们使用的是同一个Request对象。
Filter 的3种拦截路径匹配规则:
- 精确匹配
/target.jsp - 目录匹配
/admin/* - 后缀名匹配
*.html Filter 过滤器它只关心请求的地址是否匹配,不关心请求的资源是否存在!!!
Listener
用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。本质是观察者模式。Servlet监听器:Servlet规范中定义的一种特殊类,它用于监听Web应用程序中的ServletContext,HttpSession 和HttpServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。
监听器分为3类
- 域对象监听器
- 域对象的属性域监听器
- Session域中数据的监听器
八大监听器
- ServletContextListener监听ServletContext对象的创建与销毁
在SpringMVC中,有个ContextLoaderListener,这个监听器就实现了ServletContextListener接口,表示对ServletContext对象本身的生命周期进行监控2. HttpSessionListener监听HttpSession对象的创建与销毁3. ServletRequestListener监听ServletRequest对象的创建与销毁4. ServletContextAttributeListener监听ServletContext中属性的创建、修改和销毁5. HttpSessionAttributeListener监听HttpSession中属性的创建、修改和销毁6. ServletRequestAttributeListener监听ServletRequest中属性的创建、修改和销毁7. HttpSessionBindingListener监听某个对象在Session域中的创建与移除8. HttpSessionActivationListener监听某个对象在Session中的序列化与反序列化。
Listener 监听器的使用步骤:
- 实现八大监听器中相应一种,重写相应的方法
- 到 web.xml 中去配置 Listener
web.xml 中的配置:
com.demo.listener.HelloListener
-
当前最新:JavaWeb三大组件(Servlet、Filter、Listener)
前言JavaWeb三大组件指的是:Servlet程序、Filter过滤器、Listener监听器,它们在JavaWeb开发中分别提供...
来源: 当前最新:JavaWeb三大组件(Servlet、Filter、Listener)
世界报道:蓝牙协议(HFP、HSP、A2DP、AVRCP)简介
大前端html基础学习04--文本溢出
热推荐:电动车生产基地杀到欧洲?比亚迪最新回应来了
天天日报丨无2D版!《阿凡达2》预售开启:平均票价68元 首映口碑好评爆棚
【世界新要闻】备受年轻人追捧的“网红餐厅”有多坑?不服不行
环球即时:Springboot处理跨域请求
shell编程时出现:未预期的符号 `then' 附近有语法错误 或者 : 行 : `then'
世界最新:CSS Margin中5个经典布局解决方案,重难点知识,记得收藏复习
快播:实火!《阿凡达2:水之道》预售首日总票房突破千万
小米13系列发布会时间偷跑 最新售价信息曝光:3999/4999元起售
天天头条:中国石化又一次产出99.999%高纯度氢:每年2100吨
即时看!12306购票页面变了:已取消查验核酸弹窗
天天观热点:双11期间快递达42.7亿件 你的收到了吗?
【快播报】员工爆料奶茶店用过期原料 老板:事儿太多
【全球热闻】刘海屏iPhone用上灵动岛:越狱软件开发者推出“灵动刘海”
路怒可怕!出租车插队未果隧道逼停保时捷 还质问开豪车了不起:罚600扣1分
节省1000元成本 特斯拉减配辅助停车的超声波雷达:把新车主们坑惨了
暴雪《魔兽世界》停服或致大量游戏工作室倒闭:代打行业寒冬
加绒款同价:361° 纯色卫衣/运动裤69元大促(40元券)
Intel晒新显卡驱动表现:DX9游戏性能提升达80%
每日快播:一键部署应用到远程服务器,IDEA 官方 Docker 插件太顶了!
Vue视频 | 【Vue2 + Vue3 前端教程】完整版
今日关注:记录--微信小程序获取用户信息的最新方法记录
当前短讯!12 虚拟机字节码执行引擎_字节码执行机制
CompletableFuture源码解析
全球限量5000台!ThinkPad X1 Carbon 30周年纪念版即将上市
最新资讯:老马也失蹄 吞剑大师嘴插5把剑出意外被刺穿内脏:宣布收山
NASA毅力号火星车和国际空间站上的SSD:出自群联之手
网友不知情下话费暴涨2倍至99元 客服:一般会提前通知
每日快讯!Redis配置、优化及相关命令
《阿凡达》为何时隔13年推出续作?卡梅隆回应:光剧本就写了4版
全球时讯:纯电越野车真香!奇瑞也来参一脚:邀网友共创、最多奖励5万
每日视讯:一天1500元 索赔77万元代步车费用!博主曝特斯拉“精彩”上诉状
黄牛栽了!急于出手RTX 4080
两轮电动车在印度卷起来了:5年/6万公里质保、1年免费充电
Power BI 15 DAY
【高精密时钟】NTP网络校时服务器在WIN平台下调试步骤
微头条丨Chatgpt注册全流程教程
KMP算法详解-字符串匹配
焦点信息:精美的web前端源码的特效
天天短讯!女子连续服用6片感冒药致肝衰竭 专家提醒:药不能随便吃
男子被狗舔伤口发视频炫耀狗子贴心:听网友劝后打狂犬疫苗
全球播报:乐视诉清华大学获赔:内网提供电影下载 7年前就关停了
国服腾讯、网易等谁来代理?暴雪《暗黑4》发售时间曝光:容量80GB
环球动态:男子醉驾撞树想溜 爱车自动报警 并发送了定位
全球热点!JS设计模式 之 发布-订阅模式
最近沉迷Redis网络模型,无法自拔!终于知道Redis为啥这么快了
热点聚焦:行为管理(锐捷行业网关篇)
全球时讯:文盘Rust -- r2d2 实现redis连接池
前端精准测试实践
世界速递!JavaScript中 FileReader 对象详解
【世界报资讯】大数据-数据仓库-实时数仓架构分析
热头条丨JAVA8 函数式编程(1)- Lambda表达式
易基因|m6A去甲基化酶ALKBH5通过降低PHF20 mRNA甲基化抑制结直肠癌进展 | 肿瘤研究
焦点日报:火山引擎 DataTester:如何用 A/B 测试做产品增长?
WTM+InfluxDB时序数据库数据查询并放到DataTable中
中科慧政 & JNPF :全面开启智慧政务,灵活满足政务办公需求
【焦点热闻】南墙WAF-最好的免费Web应用防火墙
天天关注:高光时刻 | 方正璞华联合开发的「人力资源法律服务共享平台」在创新创业大赛中获奖
全球新消息丨95年属猪的2019年运势
【环球热闻】绳责的意思(绳责)
天天动态:水滴筹标题范文(水滴筹标题怎么写)
今头条!应用昆虫学(应用昆虫学报)
环球头条:工厂找哪个网站?
焦点信息:促排卵期间注意哪些事项(促排卵期间注意事项)
天天资讯:越南旅游签证办理流程及费用(越南旅游签证办理流程)
全球快报:空鼻症是什么样(空鼻症是什么病)
【天天新视野】电脑桌面怎么恢复到原来的样子(电脑桌面怎么恢复到原来的样子)
每日信息:闲鱼卖二手
微资讯!西藏万隆虫草鹿鞭王
环球观焦点:77电玩城(77dizhi)
热头条丨低温性能革命性进步!宁德时代:钠电池有望装车500公里续航车型
当前播报:非典是哪一年一共死多少人(非典是哪一年)
天天热讯:空调显示屏上显示df是什么意思(空调运行中显示屏出现字母df是什么意思)
全球报道:我国现存新能源汽车相关企业56.8万家,仅2021年新增17万家
全球要闻:日本电子巨头罗姆将量产下一代半导体:提高用电效率、增加电动车续航里程
环球今日报丨传感器和处理器如何打造更智能、更自主的机器人?
世界即时:如何实现工业自动化?传感器对于工业自动化有什么样的意义
天天新动态:工业自动化如何实现?
当前焦点!使用cpolar(内网穿透)最低成本搭建网站
如何在Windows AD域中驻留ACL后门
当前热点-灵感来自微信:微软计划开发一站式“超级应用”
环球即时看!惊险!SUV被货车顶上铁轨 火车驶来瞬间逃离
玩家们都嫌太贵!曝英伟达考虑将RTX 4080降价
世界讯息:AI生成裸照谁之过?真相恐怕和你想的不一样
3小时超值!《阿凡达2》电影票价普遍低于50元 IMAX版80元
Redis 的 keys 命令你知道有多慢吗?
“抽烟哥”红到国外 田协紧急倡议应积极正向:全马冲进3个半小时是狠人
世界百事通!RTX 4080全球销售疲软:太贵了我再等等
《阿凡达2》伦敦首映式
惊险一幕!后车记录仪拍下特斯拉失控瞬间 网友分析司机被特斯拉辅助“救”两次
今日大雪:仲冬时节正式开始 全国大部气温回升雨雪稀少
每日观察!《原神》3.3版本今日上线:风元素新角色来了 还有原石可领
葡萄牙6-1大胜瑞士 C罗31场首发终结:加练千个西班牙点球大战仍出局 连续三届无缘8强
看齐QQ音乐?Apple Music新功能来了:支持iPhone、iPad唱卡拉OK
安兔兔11月iOS设备好评榜出炉:iPhone 14全系未上榜
SpringBoot构建RESTful风格应用
环球速讯:Kubernetes单机创建MySQL+Tomcat演示程序:《Kubernetes权威指南》第一章demo报错踩坑
全球最新:npm或者yarn安装sharp太慢、失败等问题