第一天实习:组件开发初探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等比较少用。