热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:监听器ServletRequestAttributeListener&ServletRequestListener详解

在web开发中,监听器不仅可以对Application监听,同时还可以对seesion和request对象进行监听;该文章主要

在web开发中,监听器不仅可以对Application监听,同时还可以对seesion和request对象进行监听;

该文章主要演示的是对request对象的创建和request属性的监听。

 

项目结构(红叉不需要关注,是maven环境的问题,不影响我们的主线)

技术分享图片

 

web.xml

"1.0" encoding="UTF-8"?>
"http://www.w3.org/2001/XMLSchema-instance"
xmlns
="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id
="WebApp_ID" version="3.0">
gzipfilter

class>request.RequestListenerclass>
class>request.RequestAttrListenerclass>


TestServlet
class>web.TestServletclass>


TestServlet
/servlet/test


index.jsp


 

pom.xml



javax.servlet
jstl
1.2
jar


javax.servlet
servlet-api
2.5
provided


javax.servlet.jsp
jsp-api
2.1
provided


 

RequestAttrListener

public class RequestAttrListener implements ServletRequestAttributeListener{
public void attributeAdded(ServletRequestAttributeEvent event) {
System.
out.println("request域添加了属性:" + event.getName() + "=" + event.getValue());
}
public void attributeRemoved(ServletRequestAttributeEvent event) {
System.
out.println("request域删除了属性:" + event.getName() + "=" + event.getValue());
}
public void attributeReplaced(ServletRequestAttributeEvent event) {
System.
out.println("request域修改了属性(这里展示的是被替换的):" + event.getName() + "=" + event.getValue());
}
}

 

RequestListener

public class RequestListener implements ServletRequestListener{
public void requestDestroyed(ServletRequestEvent even) {
System.
out.println("request对象销毁了 ......");
}
public void requestInitialized(ServletRequestEvent even) {
System.
out.println("request对象创建了 ......");
}
}

 

TestServlet

public class TestServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute(
"a", "aaaa");
request.setAttribute(
"a", "bbbb");
request.removeAttribute(
"a");
response.getOutputStream().print(
"over");
}
}

 

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path
= request.getContextPath();
String basePath
= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<base href="<%=basePath%>">

"pragma" cOntent="no-cache">
"cache-control" cOntent="no-cache">


"servlet/test">点点


 

访问测试:

  

http://localhost:8080/listener/

技术分享图片

技术分享图片

技术分享图片

 

 

 结果解析:

  

这三行是http://localhost:8080/listener/生成的
request对象创建了 ......
request域修改了属性(这里展示的是被替换的):org.apache.catalina.ASYNC_SUPPORTED
=true
request对象销毁了 ......
//以下是点击了index.jsp页面超链接生成的
request对象创建了 ......
request域修改了属性(这里展示的是被替换的):org.apache.catalina.ASYNC_SUPPORTED
=true
request域添加了属性:a
=aaaa
request域修改了属性(这里展示的是被替换的):a
=aaaa
request域删除了属性:a
=bbbb
request对象销毁了 ......

 





推荐阅读
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • 网站前端开发的核心理念与必备技能解析 ... [详细]
  • 代码:headersAccept:texthtml,applicationxhtml+xml,applicationxml;q0.9,imagewebp,image ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
  • 本文介绍了多种开源数据库及其核心数据结构和算法,包括MySQL的B+树、MVCC和WAL,MongoDB的tokuDB和cola,boltDB的追加仅树和mmap,levelDB的LSM树,以及内存缓存中的一致性哈希。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
author-avatar
手机用户2502853557
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有