Java Web监听器如何实现定时发送邮件

首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能,通过设定定时器的间隔时间,会自动在此间隔时间后执行预先安排好的任务(java.util. TimerTask)

由于我们希望当Web工程启动时,定时器能自动开始计时,这样在整个Web工程的生命期里,就会定时的执行任务,因此启动定时器的类不能是一般的类,此处用Servlet的监听器类来启动定时器,通过在配置文件里配置此监听器, 让其在工程启动时自动加载运行,存活期为整个Web工程生命期.

首先要去实现一个监听任务:

package com.sun.action;

import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * @author szy
 * @version 创建时间:2018-4-5 上午10:46:11
 *
 */
public class MyTimerTask implements ServletContextListener {

  private Timer timer = null;
  @Override
  public void contextDestroyed(ServletContextEvent event) {
    // TODO Auto-generated method stub

    timer.cancel();
     event.getServletContext().log("定时器销毁");

  }

  @Override
  public void contextInitialized(ServletContextEvent event) {
    // TODO Auto-generated method stub

    //在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能
     timer = new Timer(true);
     event.getServletContext().log("定时器已启动");//添加日志,可在tomcat日志中查看到
     //调用exportHistoryBean,0表示任务无延迟,5*1000表示每隔5秒执行任务,60*60*1000表示一个小时;
     //timer.schedule(new SendEmail(event.getServletContext()),0,24*60*60*1000);
     timer.schedule(new SendEmail(event.getServletContext()),0,5*1000);
  }
}

  然后实现监听的方法类:

package com.sun.action;

import java.util.TimerTask;

import javax.servlet.ServletContext;

/**
 * @author szy
 * @version 创建时间:2018-4-5 上午10:50:00
 *
 */
public class SendEmail extends TimerTask {

  private ServletContext context = null;
  public SendEmail(ServletContext context)
  {
   this.context = context;
  }

  @Override
  public void run() {
    // TODO Auto-generated method stub
    System.out.println("您的邮件已发送,清注意查收");
  }

}

  完成后,配置监听到web.xml里面去。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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">
 <display-name>TimerWeb</display-name>
 <welcome-file-list>
  <welcome-file>index.html</welcome-file>
  <welcome-file>index.htm</welcome-file>
  <welcome-file>index.jsp</welcome-file>
  <welcome-file>default.html</welcome-file>
  <welcome-file>default.htm</welcome-file>
  <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
 <listener>
  <listener-class>com.sun.action.MyTimerTask</listener-class>
 </listener>
</web-app>

 OK,通过Tomcat运行项目即可,可看到隔5s就会发送一条邮件,当然这里是模拟发送的邮件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Web容器启动过程中如何执行Java类

    1.监听(Listener) <!-- 配置监听 --> <listener> <listener-class>com.xian.jdbc.GetProperties</listener-class> </listener> package com.xian.jdbc; public class GetProperties{ } //implements ServletContextListener 可实现servlet的监听则启动中直接运行输出

  • 解决IDEA导入javaWeb项目注解爆红的问题

    出现此问题的原因一般都是jar包没有被扫描到: 解决办法: 1.在idea的设置里面如图: 如果有多个jar包文件夹就都给加进来 2.一般jdk版本正确的话,按照1的操作完之后,再重新编译一下就应该好了,如果还有问题,那就是jdk版本有问题了,那就更换一下jdk版本试试,如图 选择你本地的jdk路径,点击ok 修改这两个地方,然后点击apply,再点击ok.这样应该就好了. 到此这篇关于解决IDEA导入javaWeb项目注解爆红的问题的文章就介绍到这了,更多相关IDEA导入javaWeb项目注解

  • java web实现简单留言板功能

    本文实例为大家分享了java web实现简单留言板的具体代码,供大家参考,具体内容如下 一.目标 用户可以登录并记住密码进入留言板,添加留言,点击留言列表中的标题可显示该条留言全部内容. 二.相关知识 1.使用Cookie实现自动登录 用户第一次登录网站,服务器将用户名和密码以Cookie的形式发送到客户端.当客户之后再次访问该网站时,浏览器自动将Cookie文件中的用户名和密码随请求一起发送到服务器,服务器从Cookie中取出用户名和密码并且通过验证. 2.java类的定义与使用 定义java

  • 2020新版idea创建项目没有javaEE 没有Web选项的完美解决方法

    正常创建java项目 然后右击 点击第二个,添加框架 就可以看到啦 勾选web点击apply ok 就可以啦 总结 到此这篇关于2020新版idea创建项目没有javaEE 没有Web选项的完美解决方法的文章就介绍到这了,更多相关idea创建项目没有javaEE 没有Web选项内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • JAVA调用SAP WEBSERVICE服务实现流程图解

    调用SAP WebService服务需要转换操作 1.通过浏览器访问SAP WebService地址,进行验证并生成wsdl文件地址并不是可以直接转化的wsdl: 直接访问地址并进行验证后: 另存文件wsdl 2. 通过Idea生成java可执行代码存放wsdl 选中 wsdl文件,选择Tools ->WebService -> Generate Java Code From Wsdl- 最开始引用路径会是一个绝对路径,我们修改Service引用wsdl方式 3. 调用service 此时便可

  • InterlliJ IDEA2020新建java web项目找不到Static Web的解决

    由于IDEA版本更新,在新建工程的时候找不到Static Web,而且在插件里也找不到,没法下载. 如图:没有Static Web 新建项目的方法如下: File-->Project-->Java Enterprise-->Web Application--next 项目命名-->选择文件存放路径--Finish 在那个窗口新建由自己选择. 新建项目结构 运行效果 到这里就创建好了,根据自己的需求建文件就可以了. 到此这篇关于InterlliJ IDEA2020新建java web

  • 详解Java Web如何限制访问的IP的两种方法

    前一阵子因为在做项目时碰到了这个功能,现在好好总结一下,至于为什么要限制IP访问,我就不多说了.然后百度了一下,现在主要有两种方式去限制IP访问,第一种是最简单的方便的,第二种是通过过滤器来限制访问.下面我简单介绍一下第一种方式,着重介绍第二种. 第一种方式(Tomcat配置项配置允许或限制IP访问) 这种是最简单的快捷的,主要就涉及Tomcat的server.xml配置. 第一步:找到server.xml文件在哪,在Tomcat的目录下的conf文件夹下. 第二步:打开server.xml文件

  • Java Web制作登录验证码实现代码解析

    图例如下 具体操作如下: 新建一个servlet,代码如下:标记一个WebServlet, 1 @WebServlet(urlPatterns = {"/checkCode"}) //验证码Servlet 绘制验证码图片的核心代码: int width = 100; int height = 50; //创建图片对象 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); /

  • Java爬虫(Jsoup与WebDriver)的使用

    一.Jsoup爬虫 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. 以博客园首页为例 1.idea新建maven工程 pom.xml导入jsoup依赖 <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <

  • Java Web监听器如何实现定时发送邮件

    首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能,通过设定定时器的间隔时间,会自动在此间隔时间后执行预先安排好的任务(java.util. TimerTask) 由于我们希望当Web工程启动时,定时器能自动开始计时,这样在整个Web工程的生命期里,就会定时的执行任务,因此启动定时器的类不能是一般的类,此处用Servlet的监听器类来启动定时器,通过在配置文件里配置此监听器, 让其在工程启动时自动加载运行,存活期为整个Web工程生命期. 首先要去实现一个监听任务:

  • java web监听器统计在线用户及人数

    在线用户使用HttpSessionListener监听器统计  每当一个session会话建立  在线用户人数+1 每当一个session会话销毁 在线用户人数-1 使用ServletRequestListener监听器统计用户信息 每当一个request建立  将当前用户放入集合 每当session会话销毁  将当前用户移出集合 我使用的是Servlet3.0  监听器直接使用注解@webListener即可 不用在web.xml中布局 在web.xml中配置session-timeout标签

  • Java Web监听器Listener接口原理及用法实例

    监听器主要针对三个对象 ServletContext HttpSession ServletRequest 使用方式 创建*Listener接口的实现类 在web.xml中注册该类 在同时注册多个同接口的监听器时,执行顺序参照web.xml中的注册顺序 监听器监听类型 对象的创建和销毁 对象属性的添加.替换.移除 创建实现类 // 用于监听session创建和销毁的监听器 package listener; import javax.servlet.http.HttpSessionEvent;

  • 四步轻松搞定java web每天定时执行任务

    本文介绍了java web每天定时执行任务,分享给大家,具体如下: 第一步: package com.eh.util; import java.util.Calendar; import java.util.Date; import java.util.Timer; /** * java定时任务,每天定时执行任务 * @author wls * */ public class TimerManager { //时间间隔 private static final long PERIOD_DAY =

  • java web用servlet监听器实现显示在线人数

    本文实例为大家分享了java web用servlet监听器实现显示在线人数,供大家参考,具体内容如下 1.创建一个监听器 package com.listener; import javax.servlet.ServletContext; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; //使用监听器实现显示在线人数 public

  • Java Web开发中过滤器和监听器使用详解

    目录 1 Filter 1.1 Filter简介 1.2 Filter的快速入门 1.2.1 创建Filter类 1.2.2 访问index.jsp 1.3 Filter的拦截路径的配置 1.4 过滤器链 1.4.1 过滤器链简介 1.4.2 过滤器链的例子 2 Listener 2.1 概念 2.2 监听器的使用 1 Filter 1.1 Filter简介 Filter表示过滤器,是JavaWeb三大组件(Servlet.Filter.Listener)之一. 过滤器可以把资源的请求拦截下来,

  • 在Java Web项目中添加定时任务的方法

    在Java Web程序中加入定时任务,这里介绍两种方式:1.使用监听器注入:2.使用Spring注解@Scheduled注入. 推荐使用第二种形式. 一.使用监听器注入 ①:创建监听器类: import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class TimerDataTaskListener implements ServletContextListener

  • java使用监听器实现一个统计网站在线人数的示例

    本文主要介绍了java使用监听器实现一个统计网站在线人数的示例,具有一定的参考价值,有需要的朋友可以了解一下. (1)创建一个监听器实现类 要大致统计一个网站的在线人数,首先,可以通过ServletContextListener监听,当Web应用上下文启动时,在ServletContext中添加一个List,用来准备存放在线的用户名:然后,可以通过HttpSessionAttributeListener监听,当用户登录成功把用户名设置到Session中时同时将用户名存放到ServletConte

  • Java Web开发防止多用户重复登录的完美解决方案

    目前web项目中,很多情况都是可以让同一个账户信息在不同的登录入口登录这次,这样子就不那么美好了. 推荐阅读: Java 多用户登录限制的实现方法 现在有两种解决方案: 1.将用户的登录信息用一个标志位的字段保存起来,每次登录成功就标记1,注销登录就标记为0,当标记为1的时候不允许别人登录. 2.将用户的登录信息保存在application内置作用域内, 然后利用session监听器监听每一个登录用户的登录情况. 很显然,第一种方式 每次登录 都需要操作数据库,多了一些不必要的性能开销,而且在登

  • .NET实现定时发送邮件代码(两种方式)

    有时候我们或许会遇到想在某一个时刻给别人发送一封邮件,就像是在生日的时候,但是我们又怕到时候忘记了,这时就应该 使用发送定时邮件的功能,但是这个定时发送邮件功能是怎么实现的呢?下面用两种方式实现.net定时发送邮件代码,具体请看下面内容. 实现思路.需求添加一个全局应用程序类Global.asax 代码会在访问网站时运行 Global.asax代码: void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 Sys

随机推荐