跪求短訊發送的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/zh-hk/n/317885.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XBLCO的頭像XBLCO
上一篇 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

發表回復

登錄後才能評論