- 浏览: 51723 次
- 性别:
- 来自: 洛阳
文章分类
最新评论
servlet监听器功能讲解及代码案例
监听器的功能很强大,但是往往一些初级工程师会忽略她,那么今天就对servlet的监听器很久域对象做一个分析及代码演示,分类如下图
那么我们分为三部分来讲解(案例按着 后面的来,还有一些监听器接口由于不经常用就不做分析例如 session的绑定 钝化活化 等):
一、application的监听 一般用来启动定时任务、初始化数据、加载配置文件
二、session的监听 --一般用来统计在线人数等
三、request的监听 --一般用来统计网站请求人数等
action
一、对application的监听
application在我们服务器中只会出现一次,是在项目启动的时候,那么我们这时候想可不可以给他加个监听那么在项目启动的时候我们就可以处理一些自己的事情 比如项目启动的时候我们初始化一下数据、启动一些定时任务 那么这样我们就不用再去操心这几个功能了,因为在项目启动的时候已经帮我们完成了
一般监听器都是一个普通的类然后实现了一节监听器的接口,那么我们接下里接写个项目启动监听到application的案例
监听器代码
public class ContextLinstener implements ServletContextListener{ @Override public void contextInitialized(ServletContextEvent sce) {//初始化项目启动 application产生 则触发该方法 System.out.println("====开始初始化----区县---数据======"); CacheData.getCitys();//实现类里面是静态f方法 System.out.println("==========初始化数据----区县---结束,开始初始化省市数据=========="); CacheData.getProvinces(); System.out.println("============初始化数据----省市---结束========"); //启动任务 System.out.println("=============启动定时任务读取用户生日数据=========="); TimeTask.timer4();//调用定时任务 } @Override public void contextDestroyed(ServletContextEvent sce) {//关闭 // TODO Auto-generated method stub //项目关闭的时候触发 } }
CacheData类里面的代码
public class CacheData { public static List<CityModel> cms=new ArrayList<>(); //静态变量是全局的 使用静态缓存的数据时 写CacheData.cms就行了 public static List<ProvinceModel> pms=new ArrayList<>(); public static void getCitys(){ CityService cs=new CityService(); cms=cs.doGetCitys(); System.out.println("区县总共"+cms.size()+"条数据"); } public static void getProvinces(){ ProvinceService ps=new ProvinceService(); pms=ps.doGetProvinces(); System.out.println("省市总共"+pms.size()+"条数据"); } }
TimeTask类里面的代码
public class TimeTask { public static void main(String[] args) { //timer1(); //timer2(); //timer3(); timer4(); } // 第一种方法:设定指定任务task在指定时间time执行 schedule(TimerTask task, Date time) public static void timer1() { Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { System.out.println("-------设定要指定任务--------"); } }, 2000);// 设定指定的时间time,此处为2000毫秒 } // 第二种方法:设定指定任务task在指定延迟delay后进行固定延迟peroid的执行 // schedule(TimerTask task, long delay, long period) public static void timer2() { Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { System.out.println("-------设定要指定任务--------"); } }, 1000, 1000); } // 第三种方法:设定指定任务task在指定延迟delay后进行固定频率peroid的执行。 // scheduleAtFixedRate(TimerTask task, long delay, long period) public static void timer3() { Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { public void run() { System.out.println("-------设定要指定任务--------"); } }, 1000, 2000); } // 第四种方法:安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行. // Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period) public static void timer4() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 16); // 控制时 calendar.set(Calendar.MINUTE, 9); // 控制分 calendar.set(Calendar.SECOND, 0); // 控制秒 Date time = calendar.getTime(); // 得出执行任务的时间,此处为今天的1点 // System.out.println(time); Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { public void run() { System.out.println("-------开始跑批,查询今日过生日的人--------"); //跑批,得出有谁今天谁生日 //发短信 或者邮件 } }, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行 } }
第二类监听器 session监听器
我们都知道session在用户访问的时候会产生那么这个时候我们写一个session的监听只要有用户访问都能知道,这个时候我们在applicationcontest中记录一下,当saeeion过时了 那么就把我们刚才记录
的数据减去就好了
session监听器代码如下
public class SessionLinstener implements HttpSessionListener { //要实现session监听的接口 只有这样当有用户访问产生sessiion时才能触发//sessionCreated public void sessionCreated(HttpSessionEvent se) { // TODO Auto-generated method stub System.out.println("session已经创建"); ServletContext context = se.getSession().getServletContext(); Integer count = (Integer) context.getAttribute("peopleOnline"); if (count == null) { count = 1; } else { count++; } context.setAttribute("peopleOnline", count); } /** * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent) */ public void sessionDestroyed(HttpSessionEvent se) { // TODO Auto-generated method stub System.out.println("session正在被销毁"); ServletContext context = se.getSession().getServletContext(); Integer count = (Integer) context.getAttribute("peopleOnline"); count--; context.setAttribute("peopleOnline", count); } } //那么我们记录的这个在线用户信息怎么打印或显示出来呢? //可以在jsp中这样写 当前在线人数为:${applicationScope.peopleOnline }
第三类监听 可以坚挺到request的创建和销毁,什么是request就是用户访问我们的网站任何一次请求都是requset,那么我们可以利用这一特性去记录我们网站的访问量
那么具体代码是怎么实现的呢?
public class RequestLinstener implements ServletRequestListener { /** * @see ServletRequestListener#requestInitialized(ServletRequestEvent) */ //同样的只用我们实现了ServletRequestListener接口在有请求的时候才能触发这个方法 public void requestInitialized(ServletRequestEvent sre) { // TODO Auto-generated method stub System.out.println("request被创建"); //统计网站访问量 ServletContext context = sre.getServletRequest().getServletContext(); Integer count = (Integer) context.getAttribute("requestCount"); if (count == null) { count = 1; } else { count++; } context.setAttribute("requestCount", count); } /** * @see ServletRequestListener#requestDestroyed(ServletRequestEvent) */ public void requestDestroyed(ServletRequestEvent sre) { // TODO Auto-generated method stub System.out.println("request正在销毁"); } } 那么这个数据我在页面上怎么显示出来呢? 访问量:${applicationScope.requestCount }
发表评论
-
Condition
2017-01-03 16:58 0condition的应用 -
java对sftp文件进行上传、下载、删除等操作,附详细demo
2016-12-22 18:01 1982这是自己总结的一个类,包含连接sftp,上传,下载等操作,附件 ... -
web.xml之session超时设置 以及设置session超时的几种方法
2016-10-20 16:39 1082web.xml之session超时设置 先说正题,web. ... -
web.xml之过滤器详解 以及常用过滤器demo
2016-10-20 14:15 2591web.xml之过滤器详解 一 ... -
poi导出excel清晰 步骤详解
2016-10-14 14:08 804poi导出excel清晰 步骤详解 一、本次生成excel ... -
struts2下载文件最简化版清晰详解
2016-10-14 11:20 580struts2下载文件最简化版清晰详解 一、应用场景如下: ... -
poi解析excel步骤详解
2016-10-14 10:42 2059poi解析excel步骤详解 一、本次解析excel应用场景 ... -
struts2文件上传详解
2016-10-13 11:26 760struts2文件上传详解 一、jsp代码 <fo ... -
ThreadLocal用法详解
2016-09-29 10:44 1552ThreadLocal用法详解 1.ThreadLocal的 ... -
JSONObject、JSONArray、xml的常用操作
2016-09-28 16:33 1320JSONObject、JSONArray、xml的常用操作 ... -
Rsa签名算法详解
2016-09-22 09:48 4557Rsa签名算法详解 签名生成规则与验证签名规则如下: ... -
Quartz定时任务的实现及详解
2016-09-21 18:03 2098Quartz定时任务的实现及详解 平常工作中经常遇到写定时任 ... -
四种线程池的特性以及测试代码
2016-09-21 09:20 865四种线程池的特点如下 ... -
操作json
2016-09-18 13:01 541总是记不住一些零碎的知识点,这次开个专栏来记录,不定期更新: ... -
日期类型转换
2016-09-18 12:50 494总是记不住一些零碎的知识点,这次开个专栏来记录,不定期更新: ... -
配置文件的读取与写入
2016-09-14 17:00 603读取配置文件: public static void m ... -
HttpPoster接口调用
2016-09-13 13:47 1576工作中经常用到的东西,这也是自己在公司的基础上改造的,感觉挺好 ... -
md5加密
2016-09-13 13:39 543md5工具类如下所示,可以直接拿走用,分享记录一下 pack ... -
AES加密与解密
2016-09-13 13:37 439这个其实是我们项目里面的一个工具类,给大家做一下分享 aes ... -
循环map取值的方法
2016-09-08 13:00 1485循环map取值的方法,如下所示: 方法一: Map< ...
相关推荐
本书系统地介绍Java EE的体系结构、JSP与Servlet在体系结构中的地位、应用服务器和主流开发工具,主要内容包括Web应用框架、Servlet、JSP、会话状态、EL和JSTL、监听器、过滤器、数据库、MVC等。 本书讲解详细且通俗...
需要用到数据库,过滤器,监听器。 购物车项目内容具体讲解请点击 http://t.csdn.cn/2rouA 进行简单了解与学习 全项目下载解压直接运行 链接:https://pan.baidu.com/s/1EHetk0f1KXoii-SfyrPOdw?pwd=jcj5 提取码...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个项目案例,...
涵盖JavaWEB 企业级开发所用到的HTML、CSS、JavaScript、jQuery、Ajax、JSON、XML、XML 解析、Servlet、JSP、MVC 设计模式、EL 表达式 、Cookie、HttpSession、监听器、过滤器等大部分技术。采用案例驱动教学,通过...
1.2.1 JSP、Servlet和JavaBean及 替代技术 14 1.2.2 JSF及替代技术 15 1.2.3 EJB组件技术简介 15 1.3 JBoss的下载和安装 15 1.3.1 下载和安装JBoss服务器 16 1.3.2 配置JBoss的服务端口 18 1.3.3 进入控制台 19 ...