第一天實習:組件開發初探html
個人第一個實習任務,是基於DWR和JDIY等輕量級工具,進行鍼對某一特定功能的組件的開發。前端
接到leader下發的項目原型圖以及數據庫模型,回去後自學了PowerDesigner、Axure8的基本使用,而後基於leader給的rp圖對項目每一個模塊作出進一步的分析、設計,針對每一個功能模塊涉及到的數據庫表、前端交互事件、BO層接口做出初步設計,補充到RP圖上。java
leader一次下發了六個組件任務,各個任務能夠獨立開發,又能夠組合使用,初步計劃是按照耦合度低—>高,逐個攻克。web
次日實習:數據庫
任務一:apache
開始着手短信組件的開發——短信組件主要包括 發送短信、發送驗證碼、覈對驗證碼、羣發短信等功能。安全
發送短信,使用了第三方平臺——中國網建短信接口平臺。session
所需jar包三個:app
實現發送短信的功能很簡單:拼接URL,向接口平臺提交發送請求便可,url中攜帶開發者在平臺的註冊帳戶名、接口密鑰、發送電話號碼、短信內容 框架
參數變量 | 說明 |
---|---|
Gbk編碼Url | http://gbk.sms.webchinese.cn/ |
Utf-8編碼Url | http://utf8.sms.webchinese.cn/ |
Uid | 本站用戶名(如您無本站用戶名請先註冊)[免費註冊] |
Key | 註冊時填寫的接口祕鑰(可到用戶平臺修改接口祕鑰)[馬上修改] 如須要加密參數,請把Key變量名改爲KeyMD5, KeyMD5=接口祕鑰32位MD5加密,大寫。 |
smsMob | 目的手機號碼(多個手機號請用半角逗號隔開) |
smsText | 短信內容,最多支持400個字,普通短信70個字/條,長短信64個字/條計費 |
短信發送後返回值 | 說 明 |
---|---|
-1 | 沒有該用戶帳戶 |
-2 | 接口密鑰不正確 [查看密鑰] 不是帳戶登錄密碼 |
-21 | MD5接口密鑰加密不正確 |
-3 | 短信數量不足 |
-11 | 該用戶被禁用 |
-14 | 短信內容出現非法字符 |
-4 | 手機號格式不正確 |
-41 | 手機號碼爲空 |
-42 | 短信內容爲空 |
-51 | 短信簽名格式不正確 接口簽名格式爲:【簽名內容】 |
-6 | IP限制 |
大於0 | 短信發送數量 |
3.JAVA開發樣例 import java.io.UnsupportedEncodingException; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; public class SendMsg_webchinese { public static void main(String[] args)throws Exception { HttpClient client = new HttpClient(); PostMethod post = new PostMethod("http://gbk.sms.webchinese.cn"); post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在頭文件中設置轉碼 NameValuePair[] data ={ new NameValuePair("Uid", "本站用戶名"),new NameValuePair("Key", "接口安全祕鑰"),new NameValuePair("smsMob","手機號碼"),new NameValuePair("smsText","驗證碼:8888")}; post.setRequestBody(data); client.executeMethod(post); Header[] headers = post.getResponseHeaders(); int statusCode = post.getStatusCode(); System.out.println("statusCode:"+statusCode); for(Header h : headers) { System.out.println(h.toString()); } String result = new String(post.getResponseBodyAsString().getBytes("gbk")); System.out.println(result); //打印返回消息狀態 post.releaseConnection(); } }
任務二:
短信發送後,須要在數據庫記錄。因爲是組件,因此不能使用Hibernate/Mybatis等框架,這裏選用了JDIY,一款小巧而友好的持久化工具。
JDIY的使用十分簡單:下載jar包,導入項目—>修改配置文件jdiy.xml—>在代碼中使用。
在代碼中使用主要分兩步:首先解析配置文件,建立JDIY上下文
//下面的URL對象用於指定jdiy.xml配置文件的位置(相對於class目錄): URL xmlLocation = Fs.getResource("jdiy.xml"); //指定您的應用程序根路徑地址(APP_ROOT),也能夠直接寫絕對路徑,例如:"e:\\myjava\\jdiy-test" String rootPath = Fs.getResource("../../").getPath(); //建立一個JDiy上下文對象: JDiyContext jdc = JDiyContext.newInstance(xmlLocation, rootPath);
而後,就能夠獲取dao(至關於框架中的sessionTemplate),建立查詢、插入、刪除等工做了。JDIY只使用了少許的方法,即實現了大部分數據庫操做。
具體操做教程見:http://www.jdiy.org/article.jd?smId=y0gusbjakv
摘抄三:
隨機6位數驗證碼生成:
String code=""+(1 + (int)(Math.random() * ((999999 - 1) + 1)));
摘抄四:
獲取當前時間、獲取當前時間X分鐘後時間:
Calendar calendar = Calendar.getInstance(); String curr=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());//獲取當前時間
calendar.add(Calendar.MINUTE, 2);//當前時間加2分鐘 String outdate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); //便可獲得當前時間2分鐘後時間
摘抄五:
單元測試須要3個jar包,測試註解經常使用@Test,運行時,測試類中@Test方法會按照定義順序執行。其餘@Before等比較少用。