跪求短信发送的java实现类,java发送短信功能

本文目录一览:

跪求短信发送的java实现类,各位大哥大姐,帮帮俺。。。。

1.发送电子邮件

首先应该构建JavaMail的开发环境,在JDK中配置JavaMail的相关类和包。在构建JavaMail开发环境中,需要mail.jar和activation.jar这两个文件。这两个文件的获得可以通过SUN公司的官方网站下载。

JavaMail对STMP、POP3、IMAP提供支持,封装了电子邮件功能中的邮件对象、发送、身份验证、接收等功能。

在发送各种类型的邮件时,主要应用到下面几个类:

1)Session类。用户要想发送邮件首先需要创建Session类的对象,利用这个对象创建邮件对象、指定邮件服务器认证的客户端属性。它的类层次为javax.mail.Session。

2)InternetAddress类。邮件发送的地址类,类层次结构是javax.mail.internet.InternetAddress,它继承自抽象类javax.mail.Address。

3)MimeMessage类。邮件消息类,它的类层次结构是javax.mail.internet.MimeMessage,继承自抽象类javax.mail.Message。

4)Transport类。邮件发送类,它的类层次结构是javax.mail.Transport。

5)Authenticator类。授权者类,JavaMail通过使用Authenticator类以用户名、密码的方式访问那些受到保护的资源,在这里“资源”就是邮件服务器。其类层次结构为javax.mail.Authenticator。

6)Store类。用来从邮件服务器上接受邮件,其类层次结构为javax.mail.Store。

7)Folder类。邮件文件夹类,它的类层次结构为javax.mail.Folder。

实现过程:

%@ page import=”java.io.*”%

%@ page import=”java.util.*”%

%@ page import=”javax.mail.*”%

%@ page import=”javax.mail.internet.*”%

%@ page import=”javax.activation.*”%

%

try{

request.setCharacterEncoding(“gb2312”);

String from = request.getParameter(“jname”);

String to = request.getParameter(“sname”);

String subject = request.getParameter(“title”);

String messageText = request.getParameter(“message”);

String password = request.getParameter(“password”);

String S = request.getParameter(“jname”);

int n = S.indexOf(‘@’);

int m = S.length();

String server = S.substring(n+1,m);

//建立邮件会话

Properties pro = new Properties();

pro.put(“mail.smtp.host”,”smtp.”+server);

pro.put(“mail.stmp.auth”,”true”);

Session sess = Session.getInstance(pro);

sess.setDebug(true);

MimeMessage message = new MimeMessage(mess);//新建一个消息对象

//设置发件人

InternetAddress from_mail = new InternetAddress(from);

message.setFrom(from_mail);

//设置收件人

InternetAddress to_mail = new InternetAddress(to);

message.setRecipient(Message.RecipientType.TO,to_mail);

message.setSubject(subject);//设置主题

message.setText(messageText);//设置内容

message.setSentDate(new Date());//设置发送时间

//发送邮件

message.saveChanges();//保存邮件信息

Transport transport = sess.getTransport(“smtp”);

transport.connect(“smtp.”+server,from,password);

transport.sendMessage(message,message.getAllRecipients());

transport.close();

out.print(“邮件发送成功”);

}catch(Exception e){

out.print(“发送邮件失败,原因可能是ul”);

out.println(e.getMessage());

}

%

2.发送HTML格式的邮件

MimeMultipart对象来存储HTML文件的具体内容,在设置内容的同时应该设置对象的格式。

MimeMultipart类的类层次结构是javax.mail.Internet.MimeMultipart。一般保存电子邮件内容的容器是Multipart抽象类,它定义了增加、删除及获得电子邮件不同内容的方法。由于Multipart是抽象类,所以必须使用一个具体的子类,JavaMail API提供javax.mail.Internet.MimeMultipart类来使用MimeMessage对象。

语法:

Multipart mul = new MimeMultipart();

说明:使用MimeMultipart对象时常用的一个方法是addBodyPart(),它可以在电子邮件的内容里添加BodyPart对象,消息可以有很多部分,一个BodyPart可以代表一个部分。

MimeBodyPart类的类层次结构是javax.mail.Internet.MimeBodyPart。MimeBodyPart是BodyPart具体于MimeMessage的一个子类。MimeBodyPart对象代表一个MimeMessage对象内容的一部分,每个MimeBodyPart被认为由两部分组成:一个MIME类型和匹配这个类型的内容。

语法:

BodyPart mdp = new MimeBodyPart();//新建一个存放信件内容的BodyPart对象

String messageText = “Hello World!”;

//定义MIME类型为text/html,并设置MimeBodyPart的内容

mdp.setContent(messageText,”text/html”);

实现过程:

%@ page import=”java.io.*”%

%@ page import=”java.util.*”%

%@ page import=”javax.mail.*”%

%@ page import=”javax.mail.internet.*”%

%@ page import=”javax.activation.*”%

%

try{

request.setCharacterEncoding(“gb2312”);

String from_mail = request.getParameter(“sname”);

String to_mail = request.getParameter(“rname”);

String subject = request.getParameter(“title”);

String messageText = request.getParameter(“message”);

String password = request.getParameter(“password”);

String S = request.getParameter(“sname”);

int n = S.indexOf(‘@’);

int m = S.length();

String server = S.substring(n+1,m);

Properties prop = new Properties();

prop.put(“mail.smtp.host”,”smtp.”+server);

prop.put(“mail.smtp.auth”,”true”);

Session sess = Session.getInstance(prop);

sess.setDebug(true);

MimeMessage message = new MimeMessage(sess);

//给消息对象设置收件人、发件人、主题、发信时间

InternetAddress from = new InternetAddress(from_mail);

message.setFrom(from);

InternetAddress to = new InternetAddress(to_mail);

message.setRecipient(Message.RecipientType.TO,to);

message.setSubject(subject);

message.setSentDate(new Date());

Multipart mul = new Multipart();//新建一个MimeMultipart对象来存放多个BodyPart对象

BodyPart mdp = new MimeBodyPart();//新建一个存放信件内容的BodyPart对象

mdp.setContent(messageText,”text/html;charset=gb2312″);

mul.addBodyPart(mdp);//将含有信件内容的BodyPart加入到MimeMultipart对象中

message.saveChanges();

Transport transport = sess.getTransport(“smtp”);

transport.connect(“smtp.”+server,from_mail,password);

transport.sendMessage(message,message.getAllRecipients());

transport.close();

out.println(“邮件发送成功!”);

}catch(Exception e){

out.print(“发送邮件失败,原因可能是ul”);

out.println(e.getMessage());

}

%

3.带附件的邮件发送

一般,在设计带有附件的邮件发送程序时可以遵循以下步骤:

1)发送带有附件的邮件需要建立邮件的各个邮件体部分,在第一个部分(即邮件内容文字)后增加一个具有DataHandler的附件。

2)如果将文件作为附件发送,则要建立FileDataSource类型的对象作为附件数据源;如果从URL读取数据作为附件发送,则要建立URLDataSource类型的对象作为附件数据源。

3)将数据源(FileDataSource或是URLDataSource)对象作为DataHandler类的构造方法的参数传入,从而建立一个DataHandler对象作为数据源的DataHandler。

4)将这个DataHandler设置为邮件体部分的DataHandler,这样就完成了邮件体与附件之间的关联工作。下面的工作就是用BodyPart的setFileName()方法设置附件名为原文件名。

5)将两个邮件体放入到Multipart,设置邮件内容为这个容器的Multipart,发送邮件。

实现过程:

%@ page import=”java.io.*”%

%@ page import=”java.util.*”%

%@ page import=”javax.mail.*”%

%@ page import=”javax.mail.internet.*”%

%@ page import=”javax.activation.*”%

%@ page import=”java.net.*”%

%

try{

request.setCharacterEncoding(“gb2312”);

String from_mail = request.getParameter(“sname”);

Stirng to_mail = request.getParameter(“rname”);

String from_psd = request.getParameter(“password”);

String title = request.getParameter(“title”);

String content = request.getParameter(“content”);

String path = request.getParameter(“attachement”);

String S = request.getParameter(“sname”);

int n = S.indexOf(‘@’);

int m = S.length();

String server = S.substring(n+1,m);

Properties prop = new Properties();

prop.put(“mail.smtp.host”,”smtp.”+server);

prop.put(“mail.smtp.auth”,”true”);

Session sess = Session.getInstance(prop);

session.setDebug(true);

MimeMessage message = new MimeMessage(sess);

//给消息对象设置收件人、发件人、主题

InternetAddress from = new InternetAddress(from_mail);

message.setFrom(from);

InternetAddress to = new InternetAddress(to_mail);

message.setRecipient(Message.RecipientType.TO,to);

message.setSubject(title);

Multipart mul = new MimeMultipart();//新建一个MimeMultipart对象来存放多个BodyPart对象

BodyPart mdp = new MimeBodyPart();//新建一个存放信件内容的BodyPart对象

mdp.setContent(content,”text/html;charset=gb2312″);

mul.addBodyPart(mdp);//将含有信件内容的BodyPart加入到MimeMultipart对象中

//设置信件的附件

mdp = new MimeBodyPart();//新建一个存放附件的BodyPart

DataHandler handler = new DataHandler(“JAVAMAIL附件测试”,”text/plain;charset=gb2312″);//新建一个DataHandler对象,并设置其内容、格式和编码方式

mdp.setFileName(“mrsoft”);//可以和源文件名不一致

mdp.setDataHandler(handler);

mul.addBodyPart(mdp);

message.setContent(mul);//把mul作为消息对象的内容

message.saveChanges();

Transport transport = sess.getTransport(“smtp”);

transport.connect(“smtp.”+server,from_mail,from_psd);

transport.sendMessage(message,message.getAllRecipients());

transport.close();

out.println(“附件发送成功!”);

}catch(Exception ex){

out.print(“邮件发送失败,原因可能是:ul”);

out.println(ex.getMessage());

}

%

4.邮件群发

将收件人的地址设置为tomail+i的形式,利用For循环向这些地址发送邮件,以实现群发的目的。

利用Address类设置邮件信息的收件人和发件人信息,在创建了邮件地址类后,通过message的setFrom()方法设置邮件的发件人,代码如下:

message.setFrom(from_mail);

设置收件人地址时使用setRecipient()方法设置收信人地址,代码如下:

message.setRecipient(type,address);

参数type为收件人类型。可以使用以下3个常量来区分收件人的类型:

1)Message.RecipientType.TO–发送。

2)Message.RecipientType.CC–抄送。

3)Message.RecipientType.BCC–暗送。

说明:在日常的使用中,经常会用到抄送和暗送这两种形式的邮件发送。抄送和暗送虽然都是将一封E-mail同时发送到多个信箱,但是它们之

间有一定的区别的,其区别在于暗送隐藏了其他抄送人的地址,只让收信人看到自己的收信地址,可以起到保密和预防垃圾邮件的作用。

实现过程:

%@ page import=”java.io.*”%

%@ page import=”java.util.*”%

%@ page import=”javax.mail.*”%

%@ page import=”javax.mail.internet.*”%

%@ page import=”javax.activation.*”%

%

try{

int i = 1;

for(i=1;i4;i++){

request.setCharacterEncoding(“gb2312”);

String from = request.getParameter(“from_mail”);

String to = request.getParameter(“tomail”+i);

String subject = request.getParameter(“subject”);

String messageText = request.getParameter(“message”);

String password = request.getParameter(“password”);

String S = request.getParameter(“from_mail”);

int n = S.indexOf(‘@’);

int m = S.length();

String server = S.substring(n+1,m);

//建立邮件会话

Properties pro = new Properties();

pro.put(“mail.smtp.host”,”smtp.”+server);

pro.put(“mail.smtp.auth”,”true”);

Session sess = Session.getInstance(pro);

sess.setDebug(true);

MimeMessage message = new MimeMessage(sess);//新建一个消息对象

InternetAddress from_mail = new InternetAddress(from);//设置发件人

message.setFrom(from_mail);

//设置收件人

InternetAddress to = new InternetAddress(to);

message.setRecipient(Message.RecipientType.TO,to_mail);

message.setSubject(subject);//设置主题

message.setText(messageText);//设置内容

message.setSentDate(new Date());//设置发送时间

message.saveChanges();//保存邮件信息

Transport transport = sess.getTransport(“smtp”);

transport.connect(“smtp.”+server,from,password);

transport.sendMessage(message,message.getAllRecipients());

transport.close();

if(i==3){

out.print(“发送邮件成功”);

}

}

}catch(Exception e){

out.print(“发送邮件失败,原因可能是ul”);

out.println(e.getMessage());

}

%

5.Spring利用WebService发送手机短信

通过编程实现短信息的发送是一件比较繁琐的事情,目前一般的解决方法是通过计算机和手机的连线,使用手机编程语言编写相关的短信程序,而这种方法不仅需要耗费时间和精力,还需要有相应的硬件设施,并且必须懂得手机编程的相关知识。可以通过Web Service技术远程访问现有的短信发送服务器,并通过调用服务器的方法来发送短信。

技术要点:

利用现有资源:一个可发送短信的Web Service远程服务。这个Web Service是新浪网站提供的,它可供用户直接调用远程服务来发送消息。这个服务的服务名称是SMSWS,服务端口是SMSWebServiceSoapPort。在这个远程服务中提供了一个发送短消息的方法sendXml()。此方法的定义如下:

public String sendXml(String carrier,String id,String password,String toMobile,String message,String msgtype)

功能:根据用户给定的参数发送短信到目标用户的手机中。

参数说明:

sendXml()方法中的6个参数均为String类型,sendXml()方法的返回值也是String类型。以下是sendXml()方法中的6个参数的具体说明。

1)carrier:运营商名称,具体使用时此参数并没有什么具体要求,即这里面可以随便输入,输入的字符串不会在对方手机中有任何显示。

2)id:在新浪网上注册的手机号。使用新浪服务发送手机短信时,需要在新浪网站上进行手机注册,注册网址为:。

3)password:在新浪网成功注册手机后,新浪网所反馈来的密码。

4)toMobile:对方接收短信的手机号码。

5)message:所要发送短消息的内容。

6)msgtype:发送短消息的类型,由于发送的不是彩信,所以输入Text。

调用sendXml()方法需在Spring中配置JaxRpcPortProxyFactoryBean的实例,然后定义包含此方法的接口,Spring会自动获得远程服务的接口。

实现过程:

ApplicationContext ac = new ClassPathXmlApplicationContext(“applicationContext.xml”);

SMSWebService sendSms = (SMSWebService)ac.getBean(“helloWorldService”);

String carrier = “lzwsky”;

String id = userid.getText();

String password = passwordField.getText();

String toMobile = toMobileField.getText();

String message = messageField.getText();

String msgtype = “Text”;

sendSms.sendXml(carrier,id,password,toMobile,message,msgtype);

如何用JAVA实现发送手机短信

1.通过移动或联通短信网关发送短信,这需要通信服务商给你开通短信端口,发送短信协议各个服务商都不一样,比如移动的是cmpp2,cmpp3等

2.第二种是通过硬件设备发送短信,这个需要你有专门的硬件设备,比如一个上网卡或者一个手机模块,通过调用com遵从一些协议发送短信

单纯靠写代码是无法发短信的,至少要有一个WEBSERVICE接口或者硬件接口。

java如何实现发送短信验证码功能?

1、创建一个Http的模拟请求工具类,然后写一个POST方法或者GET方法

/** * 文件说明 * @Description:扩展说明 * @Copyright: XXXX dreamtech.com.cn Inc. All right reserved * @Version: V6.0 */package com.demo.util; import java.io.IOException;import java.util.Map; import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.SimpleHttpConnectionManager;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.methods.PostMethod; /** * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser: feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX * @Version:V6.0 */public class HttpRequestUtil { /** * HttpClient 模拟POST请求 * 方法说明 * @Discription:扩展说明 * @param url * @param params * @return String * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser:feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX */ public static String postRequest(String url, MapString, String params) { //构造HttpClient的实例 HttpClient httpClient = new HttpClient(); //创建POST方法的实例 PostMethod postMethod = new PostMethod(url); //设置请求头信息 postMethod.setRequestHeader(“Connection”, “close”); //添加参数 for (Map.EntryString, String entry : params.entrySet()) { postMethod.addParameter(entry.getKey(), entry.getValue()); } //使用系统提供的默认的恢复策略,设置请求重试处理,用的是默认的重试处理:请求三次 httpClient.getParams().setBooleanParameter(“http.protocol.expect-continue”, false); //接收处理结果 String result = null; try { //执行Http Post请求 httpClient.executeMethod(postMethod); //返回处理结果 result = postMethod.getResponseBodyAsString(); } catch (HttpException e) { // 发生致命的异常,可能是协议不对或者返回的内容有问题 System.out.println(“请检查输入的URL!”); e.printStackTrace(); } catch (IOException e) { // 发生网络异常 System.out.println(“发生网络异常!”); e.printStackTrace(); } finally { //释放链接 postMethod.releaseConnection(); //关闭HttpClient实例 if (httpClient != null) { ((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown(); httpClient = null; } } return result; } /** * HttpClient 模拟GET请求 * 方法说明 * @Discription:扩展说明 * @param url * @param params * @return String * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser:feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX */ public static String getRequest(String url, MapString, String params) { //构造HttpClient实例 HttpClient client = new HttpClient(); //拼接参数 String paramStr = “”; for (String key : params.keySet()) { paramStr = paramStr + “” + key + “=” + params.get(key); } paramStr = paramStr.substring(1); //创建GET方法的实例 GetMethod method = new GetMethod(url + “?” + paramStr); //接收返回结果 String result = null; try { //执行HTTP GET方法请求 client.executeMethod(method); //返回处理结果 result = method.getResponseBodyAsString(); } catch (HttpException e) { // 发生致命的异常,可能是协议不对或者返回的内容有问题 System.out.println(“请检查输入的URL!”); e.printStackTrace(); } catch (IOException e) { // 发生网络异常 System.out.println(“发生网络异常!”); e.printStackTrace(); } finally { //释放链接 method.releaseConnection(); //关闭HttpClient实例 if (client != null) { ((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown(); client = null; } } return result; }}

2、在创建一个类,生成验证码,然后传递相应的参数(不同的短信平台接口会有不同的参数要求,这个一般短信平台提供的接口文档中都会有的,直接看文档然后按要求来即可)

/** * 文件说明 * @Description:扩展说明 * @Copyright: XXXX dreamtech.com.cn Inc. All right reserved * @Version: V6.0 */package com.demo.util; import java.net.URLEncoder;import java.util.HashMap;import java.util.Map; /** * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser: feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX * @Version:V6.0 */public class SendMsgUtil { /** * 发送短信消息 * 方法说明 * @Discription:扩展说明 * @param phones * @param content * @return * @return String * @Author: feizi * @Date: 2015年4月17日 下午7:18:08 * @ModifyUser:feizi * @ModifyDate: 2015年4月17日 下午7:18:08 */ @SuppressWarnings(“deprecation”) public static String sendMsg(String phones,String content){ //短信接口URL提交地址 String url = “短信接口URL提交地址”; MapString, String params = new HashMapString, String(); params.put(“zh”, “用户账号”); params.put(“mm”, “用户密码”); params.put(“dxlbid”, “短信类别编号”); params.put(“extno”, “扩展编号”); //手机号码,多个号码使用英文逗号进行分割 params.put(“hm”, phones); //将短信内容进行URLEncoder编码 params.put(“nr”, URLEncoder.encode(content)); return HttpRequestUtil.getRequest(url, params); } /** * 随机生成6位随机验证码 * 方法说明 * @Discription:扩展说明 * @return * @return String * @Author: feizi * @Date: 2015年4月17日 下午7:19:02 * @ModifyUser:feizi * @ModifyDate: 2015年4月17日 下午7:19:02 */ public static String createRandomVcode(){ //验证码 String vcode = “”; for (int i = 0; i 6; i++) { vcode = vcode + (int)(Math.random() * 9); } return vcode; } /** * 测试 * 方法说明 * @Discription:扩展说明 * @param args * @return void * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser:feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX */ public static void main(String[] args) {// System.out.println(SendMsgUtil.createRandomVcode());// System.out.println(“ecb=12”.substring(1)); System.out.println(sendMsg(“18123456789,15123456789”, “尊敬的用户,您的验证码为” + SendMsgUtil.createRandomVcode() + “,有效期为60秒,如有疑虑请详询XXX-XXX-XXXX【XXX中心】”)); }

然后执行一下,一般的情况下参数传递正确,按照接口文档的规范来操作的话,都会发送成功的,手机都能收到验证码的,然后可能会出现的问题就是:发送的短信内容有可能会出现中文乱码,然后就会发送不成功,按照短信平台的要求进行相应的编码即可。一般都会是UTF-8编码。

java怎么实现群发短信的功能

JAVA实现短信群发的步骤:

1、使用第三方短信平台服务商,接入短信服务;

2、调用短信提交页面发送请求;

3、服务器向第三方短信平台提交发送请求;

4、短信平台通过运营商将短信下发至用户的手机上。

以下是秒赛短信平台JAVA短信验证码接口代码示例

package test;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.net.URISyntaxException;

import java.net.URLEncoder;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.NameValuePair;

import org.apache.commons.httpclient.methods.PostMethod;

import org.apache.commons.lang3.StringUtils;

public class Apis {

// 短信发送接口的http地址,请咨询客服

private static String url = “xxxxxxxxxxxxxxxxxxxxxxxxxxxx”;

// 编码格式。发送编码格式统一用UTF-8

private static String ENCODING = “UTF-8”;

public static void main(String[] args) throws IOException, URISyntaxException {

// 账号

String account = “************************”;

// 密码

String pswd = “************************”;

// 修改为您要发送的手机号,多个用,分割

String mobile = “13*********”;

// 设置您要发送的内容

String msg = “【秒赛科技】您的验证码是:1234”;

// 发短信调用示例

System.out.println(Apis.send(account,pswd, mobile, msg));

}

/**

* 发送短信

*

* @param account

*            account

* @param pswd

*            pswd

* @param mobile

*            手机号码

* @param content

*            短信发送内容

*/

public static String send(String account,String pswd, String mobile, String msg) {

NameValuePair[] data = { new NameValuePair(“account”, account),

new NameValuePair(“pswd”, pswd),

new NameValuePair(“mobile”, mobile),

new NameValuePair(“msg”, msg),

new NameValuePair(“needstatus”, “true”),

new NameValuePair(“product”, “”) };

return doPost(url, data);

}

/**

* 基于HttpClient的post函数

* PH

* @param url

*            提交的URL

*

* @param data

*            提交NameValuePair参数

* @return 提交响应

*/

private static String doPost(String url, NameValuePair[] data) {

HttpClient client = new HttpClient();

PostMethod method = new PostMethod(url);

// method.setRequestHeader(“ContentType”,

// “application/x-www-form-urlencoded;charset=UTF-8”);

method.setRequestBody(data);

// client.getParams()。setContentCharset(“UTF-8”);

client.getParams()。setConnectionManagerTimeout(10000);

try {

client.executeMethod(method);

return method.getResponseBodyAsString();

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

如何用Java实现短信自动发送功能

方法一:

1.web.xml中配置listener

listener

listener-class

cn.com.jxlife.shs.web.action.csinquiry.surrender.MyListener

/listener-class

/listener

2.创建listener

import java.util.Timer;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

public class MyListener implements ServletContextListener {

private Timer timer = null;

@Override

public void contextInitialized(ServletContextEvent sce) {

timer = new Timer(true);

//设置任务计划,启动和间隔时间

timer.schedule(new MyTask(), 0, 3*60*1000);

//3分钟

//timer.schedule(new MyTask(), 0, 3*60*1000);

//在1秒后执行此任务,每次间隔2秒

//timer.schedule(new MyTask(), 1000, 2000);

}

@Override

public void contextDestroyed(ServletContextEvent sce) {

timer.cancel();

}

}

3.创建启动的类MyTask

import java.util.Date;

import java.util.TimerTask;

public class MyTask extends TimerTask {

@Override

public void run() {

System.out.println(“call at ” + (new Date()));

}

}

方法二:

spring 下实现定时工作的调度框架quartz

· 1。从下载quartz的开源包

quartz-1.7.3.tar.gz

3.07M

· 2。从quartz-1.7.3.tar.gz 找到quartz-1.7.3.jar,放到项目的classpath下

(放到webroot/WEB-INF/lib)下

· 3。定义一个需要时间调度的程序

package com.machome.quartz;

public class CustomJob1 {

public void onTimeWork() {

System.out.println(“数据备份任务启动”);

System.out.println(“…”);

System.out.println(“数据备份任务完成”);

}

}

· 4。剩余的工作就都在spring xml文件里完成了

!– 被调度的bean —

bean id=”job1″ class=”com.machome.quartz.CustomJob1″/bean

!– 定义任务对象 —

bean id=”jobtask1″

class=”org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean”

!– 被调度的bean —

property name=”targetObject”

ref bean=”job1″ /

/property

!– 被调度的bean中的被调度的方法 —

property name=”targetMethod”

valueonTimeWork/value

/property

/bean

!– 定义触发对象 —

bean id=”trigger1″

class=”org.springframework.scheduling.quartz.CronTriggerBean”

!– 任务对象 —

property name=”jobDetail”

ref bean=”jobtask1″ /

/property

!– cron表达式 —

property name=”cronExpression”

value10,15,20,25,30,35,40,45,50,55 * * * * ?/value

/property

/bean

!– 调度对象 —

!– 如果将lazy-init=’false’那么容器启动就会执行调度程序 —

bean id=”scheduler” lazy-init=”false”

class=”org.springframework.scheduling.quartz.SchedulerFactoryBean”

!– 触发对象 —

property name=”triggers”

list

ref bean=”trigger1″ /

/list

/property

/bean

· 5。 将spring 项目部署到TOMCAT或JBOSS服务器上

deploy项目

重启TOMCAT server

· 6。看结果:

cron表达式参考:Quartz的cron表达式

原创文章,作者:XBLCO,如若转载,请注明出处:https://www.506064.com/n/317885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
XBLCOXBLCO
上一篇 2025-01-11 16:28
下一篇 2025-01-11 16:28

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论