本文目錄一覽:
- 1、跪求短訊發送的java實現類,各位大哥大姐,幫幫俺。。。。
- 2、如何用JAVA實現發送手機短訊
- 3、java如何實現發送短訊驗證碼功能?
- 4、java怎麼實現群發短訊的功能
- 5、如何用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