java怎么监听多个组件,java web(五):java web三大组件之另外两个和八大监听器
java的三大组件指Servlet、Filter、Listener。八大监听器指八个接口。前面介绍了Servlet,现在介绍一下Filter拦截器以及拦截地址的设置,
Listener监听那些事件。
java web的cookie和session机制有篇博客讲的很好,有兴趣的博友可以去看看。地址:https://www.cnblogs.com/whgk/p/6422391.html
一:Filter
1.基本概念
Filter称之为过滤器,是用来做一些拦截的任务, 在Servlet接受请求之前,做一些事情,如果不满足限定,可以拒绝进入Servlet。
一个web项目中可以配置多个filter过滤器,浏览器访问静态资源如html、jsp、css或者访问动态资源servlet都会经过filter过滤器,满足条件,过滤器放行,否则直接返回。
2.使用
filter有很多用处,网上一搜,在filter层,来获取用户的身份,可以考虑在filter层做一些常规的校验(如参数校验,referer校验等),可以在filter层做
稳定性相关的工作(如全链路打点,可以在filter层分配一个traceId;也可以在这一层做限流等)。我最常见的是spring中的编码过滤器。我们通过编码过滤器认识filter。
代码:
package com.briup.servlet.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* Servlet Filter implementation class EncodingFilter
* 编码过滤器
*/
public class EncodingFilter implements Filter {
private String encoding;
public EncodingFilter() {}
public void destroy() {}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
//设置编码格式【只对post方式有效】;
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
//放行;
chain.doFilter(request, response);
System.out.println("servlet执行完毕,返回到filter");
}
public void init(FilterConfig fConfig) throws ServletException {
//我们把编码设置在web.xml中,如果需要改编码在配置文件中更改而不需要更改代码
encoding = fConfig.getInitParameter("encoding");
}
}
web.xml:
EncodingFilter
EncodingFilter
com.briup.servlet.filter.EncodingFilter
encoding
utf-8
EncodingFilter
/*
访问:http://127.0.0.1:7778/StudyServlet/HelloWorld或者http://127.0.0.1:7778/StudyServlet/success.html,控制台都会输出一句:"servlet执行完毕,返回到filter"。
3.拦截地址的配置
filter我主要想说的就是拦截地址如何配置了。
第一种 【匹配任意】
/*
第二种 【精确匹配】
/test_servlet
表示此拦截器只会拦截/test_servlet这一个路径
第三种 【扩展名匹配】
*.html
表示此拦截器只会拦截后缀名是.html的路径
第四种 【路径匹配】
/test/*
表示此拦截器拦截/test路径下的所有资源
注意:服务器内部跳转不会拦截,只会拦截浏览器发送的地址。
二:监听器
Servlet监听器的作用是监听Web容器的有效期事件,可以监听由于Web应用中状态改变而引起的Servlet容器产生的相应事件,然后接受并处理这些事件。
下面简单介绍这8个接口和其中的方法。
监听ServletContent(应用上下文)
1.ServletContentListener接口
Servlet的上下文监听,它主要实现监听ServletContext的创建和删除
(1)contextInitialized(ServletContextEvent event); //通知正在收听的对象,应用程序已经被加载和初始化。
(2)contextDestroyed(ServletCotextEvent event); // 通知正在收听的对象,应用程序已经被载出,即关闭。
2.ServletContextAttributeListener接口
应用上下文存、移除、更改数据进行监听。
(1)attributeAdded(ServletContextAttributeEvent event); //应用上下文存数据的时候触发【调用setAttribute方法】
(2)attributeRemoved(ServletContextAttributeEvent event); //ServletContent对象调用removeAttribute方法触发。
(3)attributeReplaced(ServletContextAttributeEvent event); //当存数据的时候,key值已经存在,value值被替换的时候触发。
监听session接口
3.HttpSessionListener接口
(1)sessionCreated(HttpSessionEvent even); //session被创建的时候触发。
(2)sessionDestroyed(HttpSessionEvent event); //session过期失效触发
4.HttpSessionAttributeListener
用法和ServletContextAttributeListener接口类似。
监听request接口
5.ServletRequestListener
6.ServletRequestAttributeListener
用法和上面类似。
7.HttpSessionActivationListener;
该接口实现监听HTTP会话active和passivate。
(1)attributeAdded(HttpSessionBindingEvent event); // 当有对象加入session的范围时,通知正在收听的对象
(2)attributeReplaced(HttpSessionBindingEvent event); //当在session的范围有对象取代另一个对象时,通知正在收听的对象。
(3)attributeRemoved(HttpSessionBindingEvent event); //当有对象从session的范围有对象取代另一个对象时,通知正在收听的对象 。
其中HttpSessionBindingEvent类主要有三个方法:getName()、getSession()和getValue()
8.HttpBindingListener;
接口实现监听HTTP会话中对象的绑定信息。
(1)alueBound(HttpSessionBindingEvent event); //当有对象加入session的范围时会被自动调用
(2)valueUnBound(HttpSessionBindingEvent event); //当有对象从session的范围内移除时会被自动调用
注:本文一部分是参考网上资料的。
java基础 五 java注释 关键字 标识符
一:java有三大注释: 1:当行注释: 使用://开始进行注释. 2:多行注释: /**/ 在/*和*/之间的内容 会被编译器忽略. 3:文档注释: /***/ /**注释信息*/和多行注释是一 ...
Java基础(五)-Java序列化与反序列化
.output_wrapper pre code { font-family: Consolas, Inconsolata, Courier, monospace; display: block !i ...
java web 三大组件
JavaWeb三大组件 Servlet,Filter,Listener. Servlet Servlet的作用 在Java web b/s架构中,servlet扮演了重要的角色,作为一个中转处理的容器 ...
java Web三大组件--过滤器
参考博客:http://www.cnblogs.com/coderland/p/5902878.html https://www.cnblogs.com/HigginCui/p/5772514.htm ...
JAVA首选五款开源Web开发框架
Spring Spring是一个开源的Java/Java EE全功能栈应用程序框架,在JavaEE社区中非常受欢迎,以Apache许可证形式发布,也有.NET平台上的移植版本. Struts2 Str ...
Java Web(五) JSP详解(四大作用域九大内置对象等)
前面讲解了Servlet,了解了Servlet的继承结构,生命周期等,并且在其中的ServletConfig和ServletContext对象有了一些比较详细的了解,但是我们会发现在Servlet中编 ...
Java Web之Servlet的三大作用域对象
Servlet的作用域是干嘛的?答案就是共享数据而存在的,如图: 下面通过代码演示来具体讲解一下三大作用域 我们新建两个类 package main.com.vae.scope; import jav ...
用 Java 技术创建 RESTful Web 服务--转载
简介 JAX-RS (JSR-311) 是为 Java EE 环境下的 RESTful 服务能力提供的一种规范.它能提供对传统的基于 SOAP 的 Web 服务的一种可行替代. 在本文中,了解 JAX ...
Java和PHP在Web开发方面的比较
比较 PHP和JSP这两个Web开发技术,在目前的情况是其实是比较PHP和Java的Web开发.以下是我就几个主要方面进行的比较: 一. 语言比较 PHP是解释执行的服务器脚本语言,首先php有简单容 ...
随机推荐
完美解决,浏览器下拉显示网址问题 | 完美解决,使用原生 scroll 写下拉刷新
在 web 开发过程中我们经常遇到,不想让用户下拉看到我的地址,也有时候在 div 中没有惯性滚动,就此也出了 iScroll 这种关于滚动条的框架,但是就为了一个体验去使用一个框架好像又不值得,今天 ...
iOS进阶篇索引,标记和自定义的table
一.带索引目录的表视图 ①效果图 图1 带索引的列表 ② 数据源 本想获取通讯录中得名字,但为了用模拟器调试方便,就写死了数据,所以也只写了部分字母,总之有那么点意思就成 @interface Vie ...
zabbix监控模式、分布式、自动化
适用场景: 1.监控主机多,性能瓶颈 2.多机房,防火墙 zabbix监控模式 针对agent来说 - 被动模式 - 主动模式(主动汇报服务端) 1)当监控主机超过300台,建议使用主动模式 2)当队 ...
整除的尾数[HDU2099]
整除的尾数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
Web版RSS阅读器(二)——使用dTree树形加载rss订阅分组列表
在上一边博客中已经讲过如何读取rss订阅文件了.这次就把订阅的文件读取到页面上,使用树形结构进行加载显示. 不打算使用 ...
poj 2828 线段树
http://poj.org/problem?id=2828 学到的思维: 1.变化的或者后来的优先影响前面的,那么从最后一个往前看,最后一个就成了 确定的, 而且后来的也能够确定----假设从前往后 ...
杂记-python
1.在cmd输入python -V显示当前python的版本信息,一定是大写的V 2.输入python,进入python解释器里面 3.在解释器中,输入exit()或者quit()会退出,一定要加括号 ...
linux 时间和时区设置
在linux中与时间相关的文件有 /etc/localtime /etc/timezone 其中,/etc/localtime是用来描述本机时间,而 /etc/timezone是用来描述本机所属的时区 ...
Spring的IOC/DI使用到的技术
一.了解Spring IOC/DI 1:Spring有两大核心技术,控制反转(Inversion of Control, IOC)/依赖注入(Dependency Injection,DI)和面向切面 ...
java怎么监听多个组件,java web(五):java web三大组件之另外两个和八大监听器相关推荐
- java 多线程监听同一个端口_使用多线程在Java服务器中同时侦听两个端口
我正在构建一个简单的Java服务器,该服务器使用两个ServerSocket实例同时在两个端口上同时侦听客户端请求.这是服务器的代码: import java.io.PrintWriter; impo ...
- java如何监听以太坊交易
2019独角兽企业重金招聘Python工程师标准>>> 你可以在web3j库的帮助下使用java轻松监听以太坊交易,但此库无法监听Erc20 Token交易. 要监听Erc20Tok ...
- java bean 监听_事件监听器?将JavaBeans接通起来的方法
摘 要 JavaBeans 通 过 事 件( 封 装 着 与 所 发 生 情 况 有 关 的 数 据 的 对 象) 与 其 它 软 件 组 件 进 行 通 讯. 本 文 将 向 你 展 示 如 何 利 ...
- java jmenu 监听_Java中用得比较顺手的事件监听
第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...
- 事件监听机制(一)Java事件监听
事件监听机制(一)Java事件监听 事件监听实现流程 事件对象: 继承自java.util.EventObject对象,由开发者自行定义实现. 事件源: 就是触发事件的源头,不同的事件源会触发不同的事 ...
- JAVA实现监听U盘插入 扫描文件
JAVA实现监听U盘插入 想用Java实现监听USB端口是否有移动设备插入,然后操作移动设备内的文件.网站查找资料后发现有个jsr-80的项目,下面先介绍一下什么是JSR:JSR是Java Speci ...
- Java实现监听文件变化的三种方法,推荐第三种
背景 在研究规则引擎时,如果规则以文件的形式存储,那么就需要监听指定的目录或文件来感知规则是否变化,进而进行加载.当然,在其他业务场景下,比如想实现配置文件的动态加载.日志文件的监听.FTP文件变动监 ...
- java起socket监听,java socket 监听示例,javasocket,java socket监
java socket 监听示例,javasocket,java socket监 java socket监听示例: socket监听需要使用SocketServer类,如下代码:package cn. ...
- 【Java】监听jframe窗口大小改变函数:addComponentListener
问题描述:主要用于解决Jframe窗口大小变化时,里面的组件的位置也会自适应的移动. 相当于js里面的窗口大小改变监听函数: window.onresize = function(){//js脚本接口 ...
最新文章
- 你还在new对象吗?Java8通用Builder了解一下?
- Runtime.getRuntime()
- POJ 3030 Nasty Hacks (模拟题)
- Ueditor 自动换行,添加P标签问题
- OpenCV2.4.9 显示鼠标框选区域,其他部分全为零,鼠标创建ROI区域
- 关于wcf三大工具的使用(wsdl.exe svcutil.exe disco.exe)
- css的一种预处理器 sass
- 前端学习(1909)vue之电商管理系统电商系统之渲染修改用户的请求
- 开发函数计算的正确姿势 —— Fun validate 语法校验排错指南
- 暑假攻略:怎样让孩子过一个充实又省钱的假期
- iOS成长之button
- 物流知识分享——浅析库存日结作业
- y480 linux无线网卡驱动,联想y480无线网卡驱动下载-联想y480笔记本网卡驱动v15.0.0.75 官方版 - 极光下载站...
- ixigua解析_最新西瓜视频、今日头条视频地址解析获取API接口
- VMware虚拟机安装Ubuntu 2022最新版详细图文安装教程(VMware虚拟机安装+Ubuntu下载+VMware虚拟机配置运行)
- PPT如何导出高质量图片
- 最新电脑cpu性能排行服务器,服务器cpu性能如何 服务器cpu性能排行榜介绍【详解】...
- 语音变声器微信小程序源码/支持多种音效变声器小程序源码
- 中文分词器ICTCLAS使用方法(Java)
- 计算机休眠是打不开,电脑自动进入睡眠模式打不开是为什么
热门文章
- Blackey win10 + python3.6 + VSCode + tensorflow-gpu + keras + cuda8 + cuDN6N环境配置(转载)
- Nginx TCP代理
- Android 开关按钮切换,类似于iphone 效果,view实现
- ie6/IE8/IE9/谷歌以及火狐等浏览器下li 高度一致解决办法
- ASP.NET-第一天-HTML基础
- COM Surrogate 遇到问题需要关闭。我们对此引起的不便表示抱歉
- 多看看把,条件太多了--leetcode 93. 复原 IP 地址
- OpenCV计算机视觉编程攻略之用色调、饱和度和亮度表示颜色
- php绘制历史曲线,thinkphp浏览历史功能实现方法
- java中的for-each循环