博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Listener--域对象属性变化监听器([ServletRequest | HttpSession | ServletContext] AttributeListener)API详解
阅读量:2442 次
发布时间:2019-05-10

本文共 5357 字,大约阅读时间需要 17 分钟。

监听三大域对象的属性变化的监听器

  • ServletRequestAttributeListener
  • ServletContextAttributeListener
  • HttpSessionAttributeListener

域对象的通用方法:

  • setAttribute(name, value):

    触发添加属性的监听器的方法
    触发修改属性的监听器的方法

  • getAttribute(name):

  • removeAttribute(name):

    触发删除属性的监听器的方法

ServletContextAttibuteListener监听器的方法

//监听添加属性的方法@Overridepublic void attributeAdded(ServletContextAttributeEvent scab){
//获取到添加的属性 System.out.println("添加属性:" + scab.getName() + ":" + scab.getValue());}
//监听删除属性的方法@Overridepublic void attributeRemoved(ServletContextAttributeEvent scab){
//获取到删除的属性 System.out.println("删除属性:" + scab.getName() + ":" + scab.getValue());}
//监听修改属性的方法@Overridepublic void attributeReplaced(ServletContextAttributeEvent scab){
//获取到修改的属性 System.out.println("修改属性:" + scab.getName() + ":" + scab.getValue());}

HttpSessionAttributeListener监听器(同上)

ServletRequestAriibuteListenr监听器(同上)

实例:

监听器:

package pers.zhang.listener;import javax.servlet.*;import javax.servlet.http.HttpSessionAttributeListener;import javax.servlet.http.HttpSessionBindingEvent;/** * @author zhang * @date 2019/9/20 - 8:53a */public class MyAttributeListener implements ServletRequestAttributeListener, HttpSessionAttributeListener, ServletContextAttributeListener {
//监听ServletContext属性添加 @Override public void attributeAdded(ServletContextAttributeEvent scab) {
System.out.println("添加属性:" + scab.getName() + ":" + scab.getValue()); } //监听ServletContext属性删除 @Override public void attributeRemoved(ServletContextAttributeEvent scab) {
System.out.println("删除属性:" + scab.getName() + ":" + scab.getValue()); } //监听ServletContext属性修改 @Override public void attributeReplaced(ServletContextAttributeEvent scab) {
System.out.println("修改属性:" + scab.getName() + ":" + scab.getValue()); } //监听ServletRequest属性增加 @Override public void attributeAdded(ServletRequestAttributeEvent srab) {
System.out.println("添加属性:" + srab.getName() + ":" + srab.getValue()); } //监听ServletRequest属性删除 @Override public void attributeRemoved(ServletRequestAttributeEvent srab) {
System.out.println("删除属性:" + srab.getName() + ":" + srab.getValue()); } //监听ServletRequest属性修改 @Override public void attributeReplaced(ServletRequestAttributeEvent srab) {
System.out.println("修改属性:" + srab.getName() + ":" + srab.getValue()); } //监听HttpSession属性增加 @Override public void attributeAdded(HttpSessionBindingEvent hsb) {
System.out.println("增加属性:" + hsb.getName() + ":" + hsb.getValue()); } //监听HttpSession属性删除 @Override public void attributeRemoved(HttpSessionBindingEvent hsb) {
System.out.println("删除属性:" + hsb.getName() + ":" + hsb.getValue()); } //监听HttpSession属性修改 @Override public void attributeReplaced(HttpSessionBindingEvent hsb) {
System.out.println("修改属性:" + hsb.getName() + ":" + hsb.getValue()); }}

注册:

pers.zhang.listener.MyAttributeListener

Servlet:

package pers.zhang.servlet;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;/** * @author zhang * @date 2019/9/20 - 10:16 */public class MyAtttibuteServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//request域 //增加属性 request.setAttribute("request","addRequest"); //修改属性 request.setAttribute("request", "updateRequest"); //删除属性 request.removeAttribute("request"); System.out.println("************************************************************"); //sesion域 HttpSession session = request.getSession(true); //增加属性 session.setAttribute("session", "addSession"); //修改属性 session.setAttribute("session", "updateSession"); //删除属性 session.removeAttribute("session"); System.out.println("************************************************************"); //servletContext域 ServletContext servletContext = getServletContext(); //增加属性 servletContext.setAttribute("servletContext", "addServletContext"); //修改属性 servletContext.setAttribute("servletContext", "updateServletContext"); //删除属性 servletContext.removeAttribute("servletContext"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response); }}

配置:

myAttributeServlet
pers.zhang.servlet.MyAtttibuteServlet
myAttributeServlet
/myAttribute

启动服务器,并访问/myAttribute,控制台输出:

修改属性:org.apache.catalina.ASYNC_SUPPORTED:true添加属性:request:addRequest修改属性:request:addRequest删除属性:request:updateRequest************************************************************增加属性:session:addSession修改属性:session:addSession删除属性:session:updateSession************************************************************添加属性:servletContext:addServletContext修改属性:servletContext:addServletContext删除属性:servletContext:updateServletContext

转载地址:http://uisqb.baihongyu.com/

你可能感兴趣的文章
在JavaScript中优化switch语句
查看>>
express 模板引擎_了解Express模板引擎
查看>>
如何在CentOS 8上安装Node.js
查看>>
如何在Ubuntu 20.04上安装Git
查看>>
javascript深度图_在JavaScript中深度克隆对象(及其工作方式)
查看>>
centos ssh密钥_如何在CentOS 8上设置SSH密钥
查看>>
debian 10 安装_如何在Debian 10上安装Webmin
查看>>
使用CentOS 8进行初始服务器设置
查看>>
ecmascript v3_节点v12中的新ECMAScript模块简介
查看>>
盖茨比乔布斯_通过盖茨比使用Airtable
查看>>
mern技术栈好处?_如何开始使用MERN堆栈
查看>>
路由器接路由器_路由器之战:到达路由器vsReact路由器
查看>>
rxjs 搜索_如何使用RxJS构建搜索栏
查看>>
如何在Debian 10上安装MariaDB
查看>>
go函数的可变长参数_如何在Go中使用可变参数函数
查看>>
debian 服务器_使用Debian 10进行初始服务器设置
查看>>
joi 参数验证_使用Joi进行节点API架构验证
查看>>
react-notifications-component,一个强大的React Notifications库
查看>>
如何在Debian 10上设置SSH密钥
查看>>
如何在Debian 10上安装Node.js
查看>>