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三大组件之另外两个和八大监听器相关推荐

  1. java 多线程监听同一个端口_使用多线程在Java服务器中同时侦听两个端口

    我正在构建一个简单的Java服务器,该服务器使用两个ServerSocket实例同时在两个端口上同时侦听客户端请求.这是服务器的代码: import java.io.PrintWriter; impo ...

  2. java如何监听以太坊交易

    2019独角兽企业重金招聘Python工程师标准>>> 你可以在web3j库的帮助下使用java轻松监听以太坊交易,但此库无法监听Erc20 Token交易. 要监听Erc20Tok ...

  3. java bean 监听_事件监听器?将JavaBeans接通起来的方法

    摘 要 JavaBeans 通 过 事 件( 封 装 着 与 所 发 生 情 况 有 关 的 数 据 的 对 象) 与 其 它 软 件 组 件 进 行 通 讯. 本 文 将 向 你 展 示 如 何 利 ...

  4. java jmenu 监听_Java中用得比较顺手的事件监听

    第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...

  5. 事件监听机制(一)Java事件监听

    事件监听机制(一)Java事件监听 事件监听实现流程 事件对象: 继承自java.util.EventObject对象,由开发者自行定义实现. 事件源: 就是触发事件的源头,不同的事件源会触发不同的事 ...

  6. JAVA实现监听U盘插入 扫描文件

    JAVA实现监听U盘插入 想用Java实现监听USB端口是否有移动设备插入,然后操作移动设备内的文件.网站查找资料后发现有个jsr-80的项目,下面先介绍一下什么是JSR:JSR是Java Speci ...

  7. Java实现监听文件变化的三种方法,推荐第三种

    背景 在研究规则引擎时,如果规则以文件的形式存储,那么就需要监听指定的目录或文件来感知规则是否变化,进而进行加载.当然,在其他业务场景下,比如想实现配置文件的动态加载.日志文件的监听.FTP文件变动监 ...

  8. java起socket监听,java socket 监听示例,javasocket,java socket监

    java socket 监听示例,javasocket,java socket监 java socket监听示例: socket监听需要使用SocketServer类,如下代码:package cn. ...

  9. 【Java】监听jframe窗口大小改变函数:addComponentListener

    问题描述:主要用于解决Jframe窗口大小变化时,里面的组件的位置也会自适应的移动. 相当于js里面的窗口大小改变监听函数: window.onresize = function(){//js脚本接口 ...

最新文章

  1. 你还在new对象吗?Java8通用Builder了解一下?
  2. Runtime.getRuntime()
  3. POJ 3030 Nasty Hacks (模拟题)
  4. Ueditor 自动换行,添加P标签问题
  5. OpenCV2.4.9 显示鼠标框选区域,其他部分全为零,鼠标创建ROI区域
  6. 关于wcf三大工具的使用(wsdl.exe svcutil.exe disco.exe)
  7. css的一种预处理器 sass
  8. 前端学习(1909)vue之电商管理系统电商系统之渲染修改用户的请求
  9. 开发函数计算的正确姿势 —— Fun validate 语法校验排错指南
  10. 暑假攻略:怎样让孩子过一个充实又省钱的假期
  11. iOS成长之button
  12. 物流知识分享——浅析库存日结作业
  13. y480 linux无线网卡驱动,联想y480无线网卡驱动下载-联想y480笔记本网卡驱动v15.0.0.75 官方版 - 极光下载站...
  14. ixigua解析_最新西瓜视频、今日头条视频地址解析获取API接口
  15. VMware虚拟机安装Ubuntu 2022最新版详细图文安装教程(VMware虚拟机安装+Ubuntu下载+VMware虚拟机配置运行)
  16. PPT如何导出高质量图片
  17. 最新电脑cpu性能排行服务器,服务器cpu性能如何 服务器cpu性能排行榜介绍【详解】...
  18. 语音变声器微信小程序源码/支持多种音效变声器小程序源码
  19. 中文分词器ICTCLAS使用方法(Java)
  20. 计算机休眠是打不开,电脑自动进入睡眠模式打不开是为什么

热门文章

  1. Blackey win10 + python3.6 + VSCode + tensorflow-gpu + keras + cuda8 + cuDN6N环境配置(转载)
  2. Nginx TCP代理
  3. Android 开关按钮切换,类似于iphone 效果,view实现
  4. ie6/IE8/IE9/谷歌以及火狐等浏览器下li 高度一致解决办法
  5. ASP.NET-第一天-HTML基础
  6. COM Surrogate 遇到问题需要关闭。我们对此引起的不便表示抱歉
  7. 多看看把,条件太多了--leetcode 93. 复原 IP 地址
  8. OpenCV计算机视觉编程攻略之用色调、饱和度和亮度表示颜色
  9. php绘制历史曲线,thinkphp浏览历史功能实现方法
  10. java中的for-each循环