调用获得(static类型,直接通过类名称进行调用):
---------------------------
短信验证码的发送(这里使用云片短息服务平台)
导入jar
//TODO//********发送手机验证码使用Ajax跳入action执行指定方法在action中调用第三方平台发送短信*******$.post("/shop/SendSMS.action",{"phone":$("#phone").val()});跳到指定的action中,发送验证码之后不需要任何跳转,如下代码:
就是上面这个apikey(注册免费送10条,用完的话你可以花50大洋,购买1000条短信服务)
然后表单中输入正确的验证码,既可以完成注册
------------------------------
MD5加密
1packageutil;23importjava.math.BigInteger;4importjava.security.MessageDigest;5importjava.security.NoSuchAlgorithmException;67importorg.junit.Test;89publicclassMD5Utils{10/**11*使用md5的算法进行加密12*/13publicstaticStringmd5(StringplainText){14byte[]secretBytes=null;15try{16secretBytes=MessageDigest.getInstance("md5").digest(17plainText.getBytes());18}catch(NoSuchAlgorithmExceptione){19thrownewRuntimeException("没有md5这个算法!");20}21Stringmd5code=newBigInteger(1,secretBytes).toString(16);//16进制数字22//如果生成数字未满32位,需要前面补023for(inti=0;i<32-md5code.length();i++){24md5code="0"+md5code;25}26returnmd5code;27}28@Test29publicvoidtest(){30System.out.println(md5("12345"));31}32}单元测试结果:
827ccb0eea8a706c4c34a16891f84e7b
通过类.方法名直接调用类中的静态方法
-------------------------------------------------------------------------------
jquery焦点事件,判断用户输入的手机号是否已经注册
(表单失去焦点之后,通过post异步方式,把手机号提交给相应action,然后做判断,并把后端数据,传给前端)
jsp页面:
struts.xml
action中代码:
//检查手机号是否已经注册了并把查询结果按照字符串的方式传递到前端在ajax回调函数获取publicvoidcheck(){Stringphone=ServletActionContext.getRequest().getParameter("phone");Stringcheckresult=null;if(!userService.check(phone)){checkresult="false";}else{checkresult="true";}try{ServletActionContext.getResponse().setCharacterEncoding("utf-8");//设置字符编码ServletActionContext.getResponse().getWriter().write(checkresult);//把传递的内容传递到前端在回调函数中可以获得}catch(IOExceptione){e.printStackTrace();}}ServletActionContext.getResponse().getWriter().write(checkresult);//把传递的内容传递到前端在回调函数中可以获得
运行效果:
--------------------------------------------------------
动态设置标签的id值,并且单击该标签之后,获得设置的id
------------------------------------------------------
点击button,跳转到后台action
----------------------------------
巧妙设置id
先看下面的截图:
使用例子:
//购物车计算functionchangeNum(numId,flag,pid,uid){varnumId=document.getElementById(numId);if(flag=="minus"){if(numId.value<=1){//alert("商品不能小于一件");win.alert("好易购-商品数量警告","商品不能小于一件!");returnfalse;}else{//发送ajax减少购物车中的商品数量$.post("${pageContext.request.contextPath}/CartAction_changeNumber",{"product.pid":pid,"flag":flag,"user.uid":uid},function(data){if(data=="UpdateSuccess"){numId.value=parseInt(numId.value)-1;//点击减号页面上的数值-1虽然数据库改变了但是不刷新页面该值是不会变化的所以就在更新数据之后直接改变页面上的显示值productCount();//调整数量之后,执行该函数把订单总价改变}});}}else{//发送ajax添加购物车中的商品数量$.post("${pageContext.request.contextPath}/CartAction_changeNumber",{"product.pid":pid,"flag":flag,"user.uid":uid},function(data){if(data=="UpdateSuccess"){numId.value=parseInt(numId.value)+1;productCount();//调整数量之后,执行该函数把订单总价改变}});}}
上面的三条语句在页面的显示效果就是图中的三个标记,一个+,一个-,还有一c个就是input
使用varStatus属性就是为了保证在单击每一行的时候,在js中获得的input表单对象
代码实践:
--------------------------------------------
--------------------------------------
提交,调用js代码:
在js中完成数据的设置,然后传递给action
或者:
打印结果:
需要注意的是,这个循环只循环了一次,为什么呢,因为从前端得到的数据是一个字符数组,而且所有的数据全部在下标为0的地方,即arrty[0]="21,49,36"
所以要想使用这些数据,还需要进一步转化,把他编程一个一个数字,放在list集合中
1//得到前端传递过来的数据2String[]pidstr=ServletActionContext.getRequest().getParameterValues("s");3//获得字符串4Stringstr=pidstr[0];5//把字符串转换为字符数组6String[]pidstring=newString[]{};//创建字符数组7pidstring=str.split(",");//把str字符串按分号进行分割把分割得到每一个部分存入字符串数组中8//需要把字符串数组转换成list数组9ListpidList=Arrays.asList(pidstring);然后对list集合就可以方便的进行遍历,取出其中的每一个值了
-----------------------------------------
-------------
------------------------------------------------------------------------
接入第三方支付平台,完成真正的支付
支付平台(当然像淘宝,京东这样的大公司都有自己的支付平台):
1.易宝支付
2.连连支付
3.国付宝
支付流程:
接入的时候是需要企业级资质的
注册之后获得一个key=账号(区别不同的企业,将来转账的RMB都将流向该企业注册时填写的账号上)以及value=秘钥(用于加密对比防止数据被篡改)
这个key和value是可以使用的
订单提交之后,选择在线支付
选择对应银行之后,点击下一步:提交表单
银行标识发送给目标action,完成数据的封装准备,以及数据的加密
下面看该action中的代码:
这是银行支付页面,然后支付成功之后会跳入回调的地址,也在提交数据中包含(支付成功,自动执行该方法,前提:必须配置好,不然回调之后,出现404,但是此时已经支付成功了)
回调地址也作为数据传递给了第三方平台
Callback就是回调地址:支付成功之后,跳入该地址:所以需要配置好
回调action(在该action中,可以完成支付成功之后需要进行的操作):
读秒之后,自动跳入反馈页面/payresult.jsp
读取propperties文件中的内容
---------------------------------------------------------