servlet中过滤器和监听器的使用

过滤器

概念:过滤器时servlet的一个组件,可以插入或者移除,可以拦截servlet的请求request和响应response,针对用户需要访问的数据或者资源做一些预处理的干预。

拦截请求的方式:

1.   /login.jsp --表示拦截login.jsp的请求
2.  /test/*  --表示拦截当前目录下/test子目录的所有资源
3.    *.jsp   --表示拦截所有以jsp后缀的文件请求
4.   / *  --表示当前目录下面的所有资源

监听器的概念

监听器也是servlet规范中定义一种组件,用来监听容器http请求-响应中的一些对象的生成和销毁操作。

生命周期的对象和绑定数据监听

HttpServletRequest:(周期)一次请求和响应的对象数据传递
	监听接口:ServletResquestListener
		--request的初始化
		--request的销毁
	绑定数据的接口:ServletReqestAttributeListener
		--request绑定数据
		--request移除数据
		--request更新或者替换数据
HttpSession:一次会话(可能会有多次请求和响应,除非会话被销毁或过期)--session.invalidate();
	监听接口:HttpSessionListener
		--session的创建-->id
		--session的销毁
ServletContext:容器关闭或者实例被移除
	监听接口:ServletContextListener
		--sc的创建
		--sc的销毁

下面是通过session绑定获取上下文

import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

@WebListener
public class MySessionListener implements HttpSessionListener {
    //判定当前人数
    private Integer count=0;
    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        //如果监听到了有新的session创建,说明有登录了
        count++;
        ServletContext sc=httpSessionEvent.getSession().getServletContext();
        sc.setAttribute("count",count);
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        //如果监听到了用户的session销毁,说明用户下线了,将在线用户数量--
        count--;
        ServletContext sc=httpSessionEvent.getSession().getServletContext();
        sc.setAttribute("count",count);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值