小仙女—过滤器(filter)、监听器(listener)

本文详细阐述了SessionID的工作原理,包括浏览器与服务器间如何通过SessionID建立会话,以及会话的生命周期管理。同时介绍了过滤器(filter)的作用及配置方法,并解释了监听器(listener)的功能和实现步骤。

过滤器(filter)、监听器(listener)

---------------------------------------------------------------------------------------------------------------------------

SessionID原理概述:

  • 浏览器发送一次请求到服务器,服务器首先判断,该请求是否携带一个SessionID值
  • 如果这次请求没有携带一个SessionID值,服务器就知道了,这是第一次来访问该服务器
  • 浏览器与该服务器开始建立会话
  • 服务器会在相应请求的同时,将产生一个SessionID,作为该次会话的标识
  • 再把这个SessionID发给浏览器,浏览器就拥有一个SessionID了
  • 当再次访问该服务器时,浏览器会携带那个SessionID,被传到服务器
  • 服务器首先判断该请求是否携带一个SessionID值,此时有了,代表这不是一个新的会话的请求
  • 如果浏览器两个请求之间的时间太长,超出服务器等待的时间,服务器会删除这个session对象
  • 删除后,再次发送到该服务器,因为服务器里没有这个session对象了,就不能判断请求是否携带SessionID值
  • 也就是说判断不出来,就认为这是一个新的会话开始,又会产生一个SessionID,作为这次新会话的标识
  • 又把这个SessionID发给浏览器,浏览器就拥有一个新的SessionID了
  • 在会话开始时,服务器会自动分配一个空间(session对象),SessionID就在session对象里

-----------------------------------------------------------------------------

filter翻译为过滤器。在web项目中,经常需要在正式处理请求前,做一些特殊的处理或常用的例程,于是就发明了这个filter。

作用:
  • 过滤非法文字和信息。
  • 设置统一字符编码。
  • 对用户进行登录验证 。
  • 改变图片文件格式。
  • 对相应内容做压缩处理。
  • 对XML的输出使用XSLT来进行转换。
步骤:
  • 第一步:通过在web.xml中的元素和元素来配置filter,以决定用户请求的URL应被哪些filter类来处理一次。
<!--web.xml配置过滤器-->
  <filter>
        <filter-name>FirstFilter</filter-name>
        <!--配置FirstFilter过滤器类-->
        <filter-class>com.yy.servlet.web.filter.FirstFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>FirstFilter</filter-name>
        <!--(代表整个web项目都要过滤,如果指定某个url就只过滤这个url)-->
        <url-pattern>/*</url-pattern>
    </filter-mapping>
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 步骤二:编写filter的Servlet类。 
    • 我们的filter类需要实现父接口javax.servlet.Filter。
    • 实现父接口的各个方法。包括init(),doFilter(),destroy(),这3个方法。 
      • init()方法和destroy()方法分别用来初始化和销毁时调用。
      • init()方法在 Filter 生命周期中仅执行一次。服务器启动时就会执行。
      • destory()方法在Filter的生命周期中仅执行一次,即Web容器卸载Filter对象之前调用它。主要做释放资源的操作。
    • 对doFilter(req,resp,chain)方法操作。
    • chain.doFilter(request,response)。

注意:chain参数则通过调用自己的doFilter方法来将请求向下传递,如果没有调用doFilter()方法,则相当于阻止了本次请求。 
创建如下:

/*这个是FirstFilter过滤器类*/
package com.yy.servlet.web.filter;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class FirstFilter implements javax.servlet.Filter{

    public void destroy() {
        // TODO Auto-generated method stub

    }

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain filter) throws IOException, ServletException {
        /*如果没有调用doFilter()方法,则相当于阻止了本次请求。*/
        filter.doFilter(request, response);

        System.out.println("filter is ok");
    }

    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }

}

 什么是监听器

servlet规范当中定义的一种特殊的组件,用来监听servlet容器产生的事件并进行响应的处理。

2.1.2. 生命周期相关的事件

容器创建或者销毁request,session,ServletContext(上下文/环境)时产生的事件(统计在线人数)。

2.1.3. 绑定数据相关的事件

调用了以上三个对象(request,response,ServletContext)的setAttribute,removeAttribute方法时产生的事件。

2.1.4. 如何编写监听器

step1,写一个java类,实现相应的监听器接口(共有8个接口)。要依据监听的事件类型来选择相应的监听器接口,比如要监听session对象的创建和销毁,要实现HttpSessionListener。

step2,在监听器接口方法中,实现相应的监听处理逻辑。比如,session对象被删除了,将人数减1。

step3,注册(在web.xml文件中配置即可)。

2.1.5. 编写Java类

copytextpop-up

     
  1. public class CountListener implements HttpSessionListener{
  2.  
  3. private int count = 0;
  4.  
  5. public void sessionCreated(HttpSessionEvent arg0){
  6. System.out.println("sessionCreated…");
  7. count ++;
  8. }
  9.  
  10. public sessionDestroyed(HttpSessionEvent arg0){
  11. System.out.println("session destroyed…");
  12. count--;
  13. }
  14. }
public class CountListener implements HttpSessionListener{
 
private int count = 0;
 
public void sessionCreated(HttpSessionEvent arg0){
System.out.println("sessionCreated…");
count ++;
}
 
public sessionDestroyed(HttpSessionEvent arg0){
System.out.println("session destroyed…");
count--;
}
}





   
内容概要:本文档是一份关于交换路由配置的学习笔记,系统地介绍了网络设备的远程管理、交换机与路由器的核心配置技术。内容涵盖Telnet、SSH、Console三种远程控制方式的配置方法;详细讲解了VLAN划分原理及Access、Trunk、Hybrid端口的工作机制,以及端口镜像、端口汇聚、端口隔离等交换技术;深入解析了STP、MSTP、RSTP生成树协议的作用与配置步骤;在路由部分,涵盖了IP地址配置、DHCP服务部署(接口池与全局池)、NAT转换(静态与动态)、静态路由、RIP与OSPF动态路由协议的配置,并介绍了策略路由和ACL访问控制列表的应用;最后简要说明了华为防火墙的安全区域划分与基本安全策略配置。; 适合人群:具备一定网络基础知识,从事网络工程、运维或相关技术岗位1-3年的技术人员,以及准备参加HCIA/CCNA等认证考试的学习者。; 使用场景及目标:①掌握企业网络中常见的交换与路由配置技能,提升实际操作能力;②理解VLAN、STP、OSPF、NAT、ACL等核心技术原理并能独立完成中小型网络搭建与调试;③通过命令示例熟悉华为设备CLI配置逻辑,为项目实施和故障排查提供参考。; 阅读建议:此笔记以实用配置为主,建议结合模拟器(如eNSP或Packet Tracer)动手实践每一条命令,对照拓扑理解数据流向,重点关注VLAN间通信、路由选择机制、安全策略控制等关键环节,并注意不同设备型号间的命令差异。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值