快递查询接口 http://webservice.36wu.com/ExpressService.asmx
ip查询接口 http://webservice.36wu.com/ipService.asmx
天气预报接口 http://webservice.36wu.com/weatherService.asmx
身份证查询接口 http://webservice.36wu.com/IdCardService.asmx
手机归属地接口 http://webservice.36wu.com/MobilePhoneService.asmx
翻译接口 http://webservice.36wu.com/TranslationService.asmx
火车时刻接口:http://webservice.36wu.com/TrainService.asmx
股票查询接口http://webservice.36wu.com/StockService.asmx
-
webservice接口
2016-08-02 00:49:28webservice接口,一种是客户端,一种是服务端。 服务端用来编写接口供客户端调用。 利用myeclipse工具先创建一个web service project 然后创建一个类例如TestDemo的类 在类上面添加一个WebService的注释 然后...webservice接口,一种是客户端,一种是服务端。
服务端用来编写接口供客户端调用。
利用myeclipse工具先创建一个web service project
然后创建一个类例如TestDemo的类
在类上面添加一个WebService的注释
然后编写你要写的webservice的方法名称test
然后在主函数中加一个方法开启这个服务
@WebService
public class TestDemo{
/**
* @param value 要传递的值
*
* @return
*/
public String test(String value) {return "你所传入的值"+value;
}
/**
* @param args
*/
public static void main(String[] args) {
Endpoint.publish("http://127.0.0.1:8877/Test ", new TestDemo());
System.out.println("成功");
}
}运行时需要注意必须是jdk1.6以上的版本才能运行
这样一个webservice服务端就写好了,如果想测试,可将地址放到网页地址栏中进行测试http://127.0.0.1:8877/Test ?wsdl如果出现xml文件就证明服务端写好了。
这里的8877为端口号,自己可以设置,但不要跟熟知端口号冲突
然后是客户端,同样创建一个web service poject
然后在cmd窗口中输入wsimport -s 这里输入的是你创建项目的src的目录 -p 这里是产生的包名 -keep http://127.0.0.1:8877/Test?wsdl
然后刷新你的客户端的工程 会产生一个包
在包中创建一个测试类
public class TestMain {
/**
* @param args
*/
public static void main(String[] args) {
TestDemo td = new TestDemoService().getTestDemoPort();
String s = td.test("test");
System.out.println(s);
}
}如果执行程序输出为:你所传入的值test
证明客户端访问成功
这样客户端就建立好了
End
笔者技术真的是一般般,写这个为了加深理解的同时给害怕看源代码的朋友一点鼓励,所以笔者在写的过程中有查阅很多资料来努力减少错误,但是如有错漏之处,希望大神们指出,我会第一时间修改,以免误人子弟,也希望和笔者一样基础不够好的朋友不要畏惧看源码,源码看起来并不会很难,而且多看源代码会对Java更深刻的理解。
希望对你有帮助。喜欢的朋友可以关注我的公众号:从小白到架构师。我会每天更新学习内容的。
-
WebService接口
2015-09-22 11:10:03 -
Webservice接口
2014-03-24 11:20:00Webservice接口 快递查询接口 http://webservice.36wu.com/ExpressService.asmxip查询接口 http://webservice.36wu.com/ipService.asmx天气预报接口 http://webservice.36wu.com/weatherService.asmx...转载于:https://www.cnblogs.com/sunli4295/p/3620442.html
-
java调用webservice接口案例,service调用webservice接口
2020-11-19 10:28:51java调用webservice接口案例,精简,service调用webservice接口案例;不用生成一堆代码,逻辑清晰 -
Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
2014-06-25 15:27:40近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限,还请大家...近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限,还请大家见谅!
一:首先上几张案例截图,以便大家可以了解一下短信验证码的流程,这里我在做的过程中也参考了很多网站的短信验证码,比如:58同城,汽车之家等。
1.点击获取验证码之前的样式:
2.输入正确的手机号后点击获取验证码之后的样式:
3.如果手机号已经被注册的样式:
4.如果一个手机号一天发送超过3次就提示不能发送:
二:前台的注册页面的代码:reg.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <%@page import="cn.gov.csrc.base.action.FindAllData"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>中国证券会证券期货违法违规举报中心-注册</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="shortcut icon" type="image/x-icon" href="<%=request.getContextPath()%>/images/favicon.ico" /> <link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/main.css"> <link href="<%=request.getContextPath()%>/formValidator1/style/validator.css" rel="stylesheet" type="text/css" /> <style type="text/css"> button { background: #F0F0F0 repeat-x; padding-top: 3px; border-top : 1px solid #708090; border-right: 1px solid #708090; border-bottom: 1px solid #708090; border-left: 1px solid #708090; width: auto; line-height: 12pt; font-size : 10pt; cursor: hand; font-size: 10pt; border-top: 1px solid #708090; } </style> <script src="<%=request.getContextPath()%>/js/jquery-1.7.2.min.js" type="text/javascript"></script> <script src="<%=request.getContextPath()%>/formValidator1/formValidator-4.0.1.js" type="text/javascript"></script> <script src="<%=request.getContextPath()%>/formValidator1/formValidatorRegex.js" type="text/javascript"></script> <script src="<%=request.getContextPath()%>/js/register.js" type="text/javascript"></script> <script src="<%=request.getContextPath()%>/js/sms.js" type="text/javascript"></script> <script type="text/javascript"> function changeCheckNum() { var checkNumImage_ = document.getElementById("checkNumImage"); checkNumImage_.src = "${pageContext.request.contextPath}/image.jsp?timeStamp="+ new Date().getTime(); } </script> <script type="text/javascript"> var msg = "${message}"; if (msg != "") { alert(msg); } </script> </head> <body> <%@include file="/statics/top.jspf"%> <div class="center_division"> <div class="center_body"> <div class="center_menu"> <font color="#000000">当前位置:</font> <a href="<%=request.getContextPath()%>/statics/reg.jsp"><font color="#000000">用户注册</font></a> </div> </div> <div class="center_body_menu"> <s:form action="RegisterAction_register" id="form1" name="form1" method="post" namespace="/"> <table id="tb"> <tr> <td colspan="3" align="center" bgcolor="#DDDFE1">举报人基本信息</td> </tr> <tr> <td align="center" width="30%"> <img src="images/new_reg_xing.gif"/>用户名:</td> <td align="center" width="40%"> <s:textfield name="username" id="username" cssStyle="width:160px;height:24px;" onblur="checkusername()"/> </td> <td align="left" width="30%"> <span id="usernameTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>username</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>登录密码:</td> <td align="center" width="40%"> <s:password name="password" id="password" cssStyle="width:160px;height:24px;" onblur="checkpassword()"/> </td> <td align="left" width="30%"> <span id="passwordTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>password</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>确认密码:</td> <td align="center" width="40%"> <s:password name="passwordRepeat" id="passwordRepeat" cssStyle="width:160px;height:24px;" onblur="checkpasswrodb()"/> </td> <td align="left" width="30%"> <span id="passwordRepeatTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>passwordRepeat</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>姓 名:</td> <td align="center" width="40%"> <s:textfield name="nickname" id="nickname" cssStyle="width:160px;height:24px;" onblur="checknickname()"/> </td> <td align="left" width="30%"> <span id="nicknameTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>nickname</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%">性 别:</td> <td align="center" width="40%"> <s:radio list="#application.dataMap.get('10001')" name="jbSex" cssStyle="height:24px;"/> </td> <td align="left" width="30%"></td> </tr> <tr> <td align="center" width="30%">联系地址:</td> <td align="center" width="40%"> <s:textfield name="jbAddress" id="jbAddress" cssStyle="width:160px;height:24px;" /> </td> <td align="left" width="30%"> <span id="jbAddressTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>jbAddress</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>联系手机:</td> <td align="center" width="40%"> <s:textfield id="jbPhone" name="jbPhone" cssStyle="width:160px;height:24px;" onblur="checkjbPhone()"/> </td> <td align="left" width="30%"> <span id="jbPhoneTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>jbPhone</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center"><img src="images/new_reg_xing.gif"/>短信验证码:</td> <td align="left" colspan="2" style="padding-left: 112px;"> <s:textfield id="SmsCheckCode" name="SmsCheckCode" cssStyle="width:80px;height:24px;" maxLength="6" /> <span><input type="button" id="btnSendCode" name="btnSendCode" value="免费获取验证码" onclick="sendMessage()" /></span> <span id="SmsCheckCodeTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>SmsCheckCodeTip</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>证件类型:</td> <td align="center" width="40%"> <s:select list="#application.dataMap.get('10002')" label="" headerKey="" headerValue="--请选择--" value="1" listValue="value" onchange="enableCredentialsCode(this)" name="jbCredentialsName" id="jbCredentialsName" cssStyle="width:160px;height:24px;"/> </td> <td align="left" width="30%"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>jbCredentialsName</s:param> </s:fielderror> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>证件号码:</td> <td align="center" width="40%"> <s:textfield name="jbCredentialsCode" id="jbCredentialsCode" cssStyle="width:160px;height:24px;" onblur="checkjbCredentialsCode()"/> </td> <td align="left" width="30%"> <span id="jbCredentialsCodeTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>jbCredentialsCode</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%">单位名称:</td> <td align="center" width="40%"> <s:textfield name="jbCompanyName" id="jbCompanyName" cssStyle="width:160px;height:24px;" /> </td> <td align="left" width="30%"> <span id="jbCompanyNameTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>jbCompanyName</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"><img src="images/new_reg_xing.gif"/>所在地区:</td> <td align="center" width="40%"> <s:select list="#application.dataMap.get('10003')" label="" headerKey="" headerValue="--请选择--" listKey="key" cssStyle="width:160px;height:24px;" listValue="value" id="jbSourceArea" name="jbSourceArea" onblur="checkjbSourceArea()"/> </td> <td align="left" width="30%"> <span id="jbSourceAreaTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>jbSourceArea</s:param> </s:fielderror> </span> </td> </tr> <tr> <td align="center" width="30%"> <img src="images/new_reg_xing.gif"/>验证码:</td> <td align="center" width="40%"> <s:textfield id="checkNum" name="checkNum" cssStyle="width:60px;height:24px;" onblur="checkNumber()" maxLength="4"/> <img id="checkNumImage" src="${pageContext.request.contextPath}/image.jsp"> <a onClick="changeCheckNum()" title="点击换一张" style="cursor:hand;"> 换一张</a> </td> <td align="left" width="30%"> <span id="checkNumTip"> <s:fielderror cssStyle="color:red;padding-left:10px;"> <s:param>checkNumTip</s:param> </s:fielderror> </span> </td> </tr> <tr> <td colspan="3" style="vertical-align: top; padding-top: 5px;padding-bottom: 5px;"> <input type="submit" value="注册" style="width:50px; height:24px;"/> <input type="reset" value="重置" style="width:50px; height:24px;"/> </td> </tr> </table> </s:form> </div> </div> <%@include file="/common/buttom.jspf"%> </body> </html>
三:前台获取短信验证码的js:sms.jsvar InterValObj; //timer变量,控制时间 var count = 120; //间隔函数,1秒执行 var curCount;//当前剩余秒数 var code = ""; //验证码 var codeLength = 6;//验证码长度 function sendMessage() { curCount = count; var jbPhone = $("#jbPhone").val(); var jbPhoneTip = $("#jbPhoneTip").text(); if (jbPhone != "") { if(jbPhoneTip == "√ 该手机号码可以注册,输入正确" || jbPhoneTip == "√ 短信验证码已发到您的手机,请查收"){ // 产生验证码 for ( var i = 0; i < codeLength; i++) { code += parseInt(Math.random() * 9).toString(); } // 设置button效果,开始计时 $("#btnSendCode").attr("disabled", "true"); $("#btnSendCode").val("请在" + curCount + "秒内输入验证码"); InterValObj = window.setInterval(SetRemainTime, 1000); // 启动计时器,1秒执行一次 // 向后台发送处理数据 $.ajax({ type: "POST", // 用POST方式传输 dataType: "text", // 数据格式:JSON url: "UserAction_sms.action", // 目标地址 data: "jbPhone=" + jbPhone +"&code=" + code, error: function (XMLHttpRequest, textStatus, errorThrown) { }, success: function (data){ data = parseInt(data, 10); if(data == 1){ $("#jbPhoneTip").html("<font color='#339933'>√ 短信验证码已发到您的手机,请查收</font>"); }else if(data == 0){ $("#jbPhoneTip").html("<font color='red'>× 短信验证码发送失败,请重新发送</font>"); }else if(data == 2){ $("#jbPhoneTip").html("<font color='red'>× 该手机号码今天发送验证码过多</font>"); } } }); } }else{ $("#jbPhoneTip").html("<font color='red'>× 手机号码不能为空</font>"); } } //timer处理函数 function SetRemainTime() { if (curCount == 0) { window.clearInterval(InterValObj);// 停止计时器 $("#btnSendCode").removeAttr("disabled");// 启用按钮 $("#btnSendCode").val("重新发送验证码"); code = ""; // 清除验证码。如果不清除,过时间后,输入收到的验证码依然有效 }else { curCount--; $("#btnSendCode").val("请在" + curCount + "秒内输入验证码"); } } $(document).ready(function() { $("#SmsCheckCode").blur(function() { var SmsCheckCodeVal = $("#SmsCheckCode").val(); // 向后台发送处理数据 $.ajax({ url : "UserAction_checkCode.action", data : {SmsCheckCode : SmsCheckCodeVal}, type : "POST", dataType : "text", success : function(data) { data = parseInt(data, 10); if (data == 1) { $("#SmsCheckCodeTip").html("<font color='#339933'>√ 短信验证码正确,请继续</font>"); } else { $("#SmsCheckCodeTip").html("<font color='red'>× 短信验证码有误,请核实后重新填写</font>"); } } }); }); });
四:验证码用户名和手机号码的js:register.js
//去掉前后空格 function trim(str) { var strnew = str.replace(/^\s*|\s*$/g, ""); return strnew; } //用户名 function checkusername() { var username = document.form1.username.value; if (username == "" || !isNaN(username.charAt(0))) { document.getElementById("usernameTip").innerHTML = "<font color='red'>× 首字母不能为数字或者用户名不能为空</font>"; return false; } else if (username.length < 6 || username.length > 30) { document.getElementById("usernameTip").innerHTML = "<font color='red'>× 用户名长度为6-30位字符</font>"; return false; } else { document.getElementById("usernameTip").innerHTML = "<font color='#339933'>√ 用户名合格</font>"; // 向后台发送处理数据 $.ajax({ url : "UserAction_checkUserName.action",// 目标地址 data : {username : username}, // 目标参数 type : "POST", // 用POST方式传输 dataType : "text", // 数据格式:text success : function(data) { data = parseInt(data, 10); if (data != 0) { $("#usernameTip").html("<font color='red'>× 该用户名已经被注册,请重新输入</font>"); } else { $("#usernameTip").html("<font color='#339933'>√ 该用户名可以注册,输入正确</font>"); } } }); return true; } } // 登录密码 function checkpassword() { var password = document.form1.password.value; if (password.length < 6 || password.length > 30) { document.getElementById("passwordTip").innerHTML = "<font color='red'>× 密码长度不能小于6位,大于30位</font>"; return false; } else if (!isNaN(password)) { document.getElementById("passwordTip").innerHTML = "<font color='red'>× 密码不能全是数字</font>"; return false; } else { document.getElementById("passwordTip").innerHTML = "<font color='#339933'>√ 密码合格</font>"; return true; } } // 确认密码 function checkpasswrodb() { var password = document.form1.password.value; var passwordRepeat = document.form1.passwordRepeat.value; if (trim(password) != trim(passwordRepeat)) { document.getElementById("passwordRepeatTip").innerHTML = "<font color='red'>× 两次密码输入必须一致</font>"; return false; } else { document.getElementById("passwordRepeatTip").innerHTML = "<font color='#339933'>√ 密码输入一致</font>"; return true; } } // 姓名 function checknickname() { var nickname = document.form1.nickname.value; if (trim(nickname) == "") { document.getElementById("nicknameTip").innerHTML = "<font color='red'>× 姓名不能为空</font>"; return false; } else { document.getElementById("nicknameTip").innerHTML = "<font color='#339933'>√ 姓名输入正确</font>"; return true; } } // 联系手机(ajax验证手机号码是否已经存在) function checkjbPhone() { var jbPhone = document.form1.jbPhone.value; var re= /(^1[3|5|8][0-9]{9}$)/; if (trim(jbPhone) == "") { document.getElementById("jbPhoneTip").innerHTML = "<font color='red'>× 手机号码不能为空</font>"; return false; } else if(trim(jbPhone) != ""){ if(!re.test(jbPhone)){ document.getElementById("jbPhoneTip").innerHTML = "<font color='red'>× 请输入有效的手机号码</font>"; return false; }else{ document.getElementById("jbPhoneTip").innerHTML = "<font color='#339933'>√ 手机号码输入正确</font>"; // 向后台发送处理数据 $.ajax({ url : "UserAction_checkPhone.action",// 目标地址 data : {jbPhone : jbPhone}, // 目标参数 type : "POST", // 用POST方式传输 dataType : "text", // 数据格式:text success : function(data) { data = parseInt(data, 10); if (data != 0) { $("#jbPhoneTip").html("<font color='red'>× 该手机号码已经被注册,请重新输入</font>"); } else { $("#jbPhoneTip").html("<font color='#339933'>√ 该手机号码可以注册,输入正确</font>"); } } }); return true; } } } // 证件号码 function checkjbCredentialsCode() { var jbCredentialsCode = document.form1.jbCredentialsCode.value; var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if (trim(jbCredentialsCode) == "") { document.getElementById("jbCredentialsCodeTip").innerHTML = "<font color='red'>× 证件号码不能为空</font>"; return false; } else if(trim(jbCredentialsCode) != ""){ if(!reg.test(jbCredentialsCode)){ document.getElementById("jbCredentialsCodeTip").innerHTML = "<font color='red'>× 请输入合法的证件号码</font>"; return false; }else{ document.getElementById("jbCredentialsCodeTip").innerHTML = "<font color='#339933'>√ 证件号码输入正确</font>"; // 向后台发送处理数据 $.ajax({ url : "UserAction_checkCredentialsCode.action",// 目标地址 data : {jbCredentialsCode : jbCredentialsCode}, // 目标参数 type : "POST", // 用POST方式传输 dataType : "text", // 数据格式:text success : function(data) { data = parseInt(data, 10); if (data != 0) { $("#jbCredentialsCodeTip").html("<font color='red'>× 该证件号码已经被注册,请重新输入</font>"); } else { $("#jbCredentialsCodeTip").html("<font color='#339933'>√ 该证件号码可以注册,输入正确</font>"); } } }); return true; } } } // 所在地区 function checkjbSourceArea() { var jbSourceArea = document.form1.jbSourceArea.value; if (trim(jbSourceArea) == "") { document.getElementById("jbSourceAreaTip").innerHTML = "<font color='red'>× 请选择所在地区</font>"; return false; } else { document.getElementById("jbSourceAreaTip").innerHTML = "<font color='#339933'>√ 所在地区选择正确</font>"; return true; } } // 验证码 function checkNumber() { var checkNum = document.form1.checkNum.value; if (trim(checkNum) == "") { document.getElementById("checkNumTip").innerHTML = "<font color='red'>× 验证码不能为空</font>"; return false; } else { document.getElementById("checkNumTip").innerHTML = "<font color='#339933'>√ 验证码合格</font>"; // 向后台发送处理数据 $.ajax({ url : "UserAction_checkNum.action",// 目标地址 data : {checkNum : checkNum}, // 目标参数 type : "POST", // 用POST方式传输 dataType : "text", // 数据格式:text success : function(data) { data = parseInt(data, 10); if (data != 0) { $("#checkNumTip").html("<font color='red'>× 验证码错误</font>"); } else { $("#checkNumTip").html("<font color='#339933'>√ 验证码正确</font>"); } } }); return true; } }
五:后台action的代码:UserAction.java(这里只是调用了我们的第三方给提供的客户端代码的发送短信的方法,如果是调用其他的短信平台,可以换成他们的发送短信的方法,这里只是给大家做个参考)
package cn.gov.csrc.base.systemmanager.action; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.springframework.context.annotation.Scope; import org.springframework.security.authentication.encoding.MessageDigestPasswordEncoder; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; import cn.gov.csrc.base.action.BaseAction; import cn.gov.csrc.base.log.service.LogService; import cn.gov.csrc.base.report.util.CommonUtil; import cn.gov.csrc.base.report.util.Env; import cn.gov.csrc.base.systemmanager.model.Count; import cn.gov.csrc.base.systemmanager.model.User; import cn.gov.csrc.base.systemmanager.service.CountService; import cn.gov.csrc.base.systemmanager.service.UserService; import cn.gov.csrc.base.util.WebContextUtil; import com.sms.webservice.client.SmsReturnObj; import com.sms.webservice.client.SmsWebClient; /** * File: UserAction.java * Author: jiangsai * Version: 1.1 * Date: 04/17/2013 * Modify: * Description:用户 * Copyright csrc */ @Controller() @Scope("prototype") @Results({ @Result(name = "success", location = "/statics/report.jsp"), @Result(name = "modifyPassword", location = "/statics/modifyPassword.jsp") }) public class UserAction extends BaseAction<User> { private static final long serialVersionUID = 1214696686677691191L; private static Logger log = Logger.getLogger(UserAction.class); private static final String url = Env.getInstance().getProperty("url"); private static final String userName = Env.getInstance().getProperty( "username"); private static final String passWord = Env.getInstance().getProperty( "password"); private Integer id; private String username;// 用户名 private String password;// 密码 private String passwordRepeat;// 确认密码 private String jbPhone;//手机号码 private String jbCredentialsCode;//身份证号码 private String checkNum;//图片验证码 private String newPassword; private String confirmPassword; private Integer[] ownRoleIds; private UserService userService; private CountService countService; private LogService logService; private Count count = new Count(); public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPasswordRepeat() { return passwordRepeat; } public void setPasswordRepeat(String passwordRepeat) { this.passwordRepeat = passwordRepeat; } public String getJbPhone() { return jbPhone; } public void setJbPhone(String jbPhone) { this.jbPhone = jbPhone; } public String getJbCredentialsCode() { return jbCredentialsCode; } public void setJbCredentialsCode(String jbCredentialsCode) { this.jbCredentialsCode = jbCredentialsCode; } public String getCheckNum() { return checkNum; } public void setCheckNum(String checkNum) { this.checkNum = checkNum; } public Integer[] getOwnRoleIds() { return ownRoleIds; } public void setOwnRoleIds(Integer[] ownRoleIds) { this.ownRoleIds = ownRoleIds; } public String getNewPassword() { return newPassword; } public void setNewPassword(String newPassword) { this.newPassword = newPassword; } public String getConfirmPassword() { return confirmPassword; } public void setConfirmPassword(String confirmPassword) { this.confirmPassword = confirmPassword; } @Resource public void setUserService(UserService userService) { this.userService = userService; } public UserService getUserService() { return userService; } @Resource public void setCountService(CountService countService) { this.countService = countService; } public CountService getCountService() { return countService; } public LogService getLogService() { return logService; } @Resource public void setLogService(LogService logService) { this.logService = logService; } public Count getCount() { return count; } public void setCount(Count count) { this.count = count; } public void prepareToUpdatePage() { model = userService.getEntity(id); } /** * 用户登录 * * @return success */ @Action(value = "UserAction_login") public String login() { Object u = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (u instanceof User && u != null) { WebContextUtil.getSession().setAttribute("user", u); User user = (User)u; //使用数据库表TBL_BASE_LOG添加用户登录的日志信息 logService.saveTblBaseLog(WebContextUtil.getRequest(),"当前操作人【"+user.getNickname()+"】登录系统"); } else { // 防止绕过登陆页面直接执行Action return "login"; } return SUCCESS; } /** * 用户密码更新 */ @Action(value = "UserAction_updateUser") public String updateUser() { if (!newPassword.equals(confirmPassword)) { this.setMessage("新密码与确认密码不一致!"); return "modifyPassword"; } User u = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); MessageDigestPasswordEncoder encoder = new MessageDigestPasswordEncoder("md5"); String psw = encoder.encodePassword(newPassword, null); userService.modifyPassword(u, psw); this.setMessage("保存成功!"); return "modifyPassword"; } /** * 验证用户名是否存在 * * @throws Exception */ @Action(value = "UserAction_checkUserName") public void checkUserName(){ String result = "0"; try { List<User> list = userService.findUserByUserName(username); if(list != null && list.size() > 0){ result = "1"; }else{ result = "0"; } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } catch (IOException e) { throw new RuntimeException("验证身份证号码出错", e); } } /** * 验证原始密码是否正确 * * @throws Exception */ @Action(value = "UserAction_checkPassWord") public void checkPassWord() throws Exception { String result = "0"; MessageDigestPasswordEncoder encoder = new MessageDigestPasswordEncoder("md5"); String pwd = encoder.encodePassword(password, null); List<User> user = userService.findUserByPassWord(pwd); if (user != null && user.size() > 0) { result = "1"; }else{ result = "0"; } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } /** * 验证手机号码是否存在 */ @Action(value = "UserAction_checkPhone") public void checkPhone(){ String result = "0"; try { List<User> list = userService.findUserByPhone(jbPhone); if(list != null && list.size() > 0){ result = "1"; }else{ result = "0"; } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } catch (IOException e) { throw new RuntimeException("验证手机号码出错", e); } } /** * 验证身份证号码是否存在 */ @Action(value = "UserAction_checkCredentialsCode") public void checkCredentialsCode(){ String result = "0"; try { List<User> list = userService.findUserByCredentialsCode(jbCredentialsCode); if(list != null && list.size() > 0){ result = "1"; }else{ result = "0"; } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } catch (IOException e) { throw new RuntimeException("验证身份证号码出错", e); } } /** * 验证验证码是否正确 */ @Action(value = "UserAction_checkNum") public void checkNum(){ try { String result = "0"; String check_number_key = (String)WebContextUtil.getSession().getAttribute("CHECK_NUMBER_KEY"); if(checkNum != check_number_key && !checkNum.equals(check_number_key)){ result = "1"; }else{ result = "0"; } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } catch (IOException e) { throw new RuntimeException("验证验证码出错", e); } } /** * 验证短信验证码是否正确 * * @throws Exception */ @Action(value = "UserAction_checkCode") public void checkCode() throws Exception{ String result = "0"; /** 获取手动输入的手机短信验证码 */ String SmsCheckCode = WebContextUtil.getRequest().getParameter("SmsCheckCode"); /** 获取session中存放的手机短信验证码 */ String code = (String) WebContextUtil.getSession().getAttribute("code"); try { if(SmsCheckCode != code && !SmsCheckCode.equals(code)){ result = "0"; }else{ result = "1"; } } catch (Exception e) { throw new RuntimeException("短信验证失败", e); } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } /** * 验证手机短信是否发送成功 * * @throws Exception */ @Action(value = "UserAction_sms") public void sms() throws Exception { String result = "0"; /** 手机号码 */ String jbPhone = WebContextUtil.getRequest().getParameter("jbPhone"); /** 短信验证码 */ String code = WebContextUtil.getRequest().getParameter("code"); /** 短信验证码存入session(session的默认失效时间30分钟) */ WebContextUtil.getSession().setAttribute("code", code); /** 如何初始化失败返回 */ if(!initClient()) { return; } /** 单个手机号发送短信的方法的参数准备 */ // 手机号码 String mobilephone = jbPhone; // 短信内容+随机生成的6位短信验证码 String content = "根据中国证监会举报中心委托,特向您发送此条短信。您的注册验证码为:" + code; // 操作用户的ID Integer operId = Integer.parseInt(Env.getInstance().getProperty("operId")); // 定时发送的的发送时间(缺省为空,如果即时发送,填空) String tosend_time = ""; // 应用系统的短信ID,用户查询该短信的状态报告(缺省为0,即不需查询短信的状态报告) int sms_id = 0; // 黑名单过滤(0:不需要黑名单过滤,1:需要黑名单过滤,缺省为0) short backlist_filter = 0; // 禁止语过滤(0:不需要禁止语过滤,1:需要禁止语过滤,缺省为0) short fbdword_filter = 0; // 优先级(值越大优先级越高,0:普通,1,:优先,2:最高,缺省为0) short priority = 0; // 短信有效时间(格式为:YYYY-MM-DD HH:mm:ss目前为空) String valid_time = ""; /** 发送短信之前先统计一个已经发送的短信条数 */ int messageCount = countService.findAllRecord(mobilephone); log.info("已发短信条数为:" +messageCount); if(messageCount < 5){ /** 单个手机号发送短信 */ if (!sendMessage(mobilephone, content, operId, tosend_time, sms_id, backlist_filter, fbdword_filter, priority, valid_time)) { result = "0";// 失败 } else { result = "1";// 成功 /** 发送一条短信,记录一条短信记录,为了方便之后的统计短信发送次数 */ count.setPhone(mobilephone);// 手机号码 count.setCaptcha(code);// 短信验证码 count.setSendTime(CommonUtil.getNowDate());// 短信发送时间 if(count != null){ countService.saveEntity(count); log.info("短信验证码发送记录保存成功!"); } } }else{ result = "2";//一个手机号码最多发送5条短信验证码 log.info("该手机号码今天发送验证码过多"); } HttpServletResponse response = WebContextUtil.getResponse(); response.setContentType("application/json;charset=UTF-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.write(result.toString()); } /** * WebService客户端初始化 * */ public static boolean initClient() { /** * 判断客户端是否已经初始化 */ if (!SmsWebClient.enable()) { int ret = 0; try { ret = SmsWebClient.init(url, userName, passWord); if (ret == -1 || !SmsWebClient.enable()) { log.info("短信平台接口初始化失败!"); return false; } log.info("短信平台接口初始化成功!" + ret + "-----"); } catch (Exception ex) { ex.printStackTrace(); log.info("短信平台接口初始化过程中异常!"); } } return true; } /** * 单个手机号码发送 * * @param mobilephone * 手机号 * @param content * 短信内容 * @param operId * 操作用户的ID * @param tosend_time * 定时发送的发送时间 * @param sms_id * 应用系统的短信ID * @param backlist_filter * 黑名单过滤 * @param fbdword_filter * 禁止语过滤 * @param priority * 优先级 * @param valid_time * 短信有效时间 */ public static boolean sendMessage(java.lang.String mobilephone, java.lang.String content, int operId, java.lang.String tosend_time, int sms_id, short backlist_filter, short fbdword_filter, short priority, java.lang.String valid_time) { // 单个手机号码发送 try { SmsReturnObj retObj = SmsWebClient.webSendMessage(mobilephone, content, operId, tosend_time, sms_id, backlist_filter, fbdword_filter, priority, valid_time); if (retObj.getReturnCode() != 1) { log.info("短信发送失败,原因为:" + retObj.getReturnMsg()); return false; } else { log.info("短信发送成功!返回结果为:" + retObj.getReturnMsg()); return true; } } catch (Exception ex) { ex.printStackTrace(); log.info("短信发送过程发生异常!"); } return true; } }
六:具体的短信接口demo到这里下,这里你下载了也不能成功的发送短信,因为你必须要短信平台商给你提供:url,userName,passWord,operId,以及短信平台商还要绑定你的外网ip地址,这样才能真正的发送短信。
Demo下载链接: http://pan.baidu.com/s/1qWt1Qdm
原文:http://www.zuidaima.com/share/1881657001233408.htm
七:最后,如果有小伙伴在学习的过程中有问题,可以添加楼主微信,楼主会尽量抽时间帮你解决遇到的问题;
八:如果还是没解决,可以加入QQ交流群讨论解决:
-
我的第一次WebService接口开发
2019-05-09 16:58:09最近项目上需要对接WebService接口,之前从来没有用过,这次都遇见了。记录下基础的使用和我遇见的问题。 正文 概述 WebService接口百度一搜,各个介绍的都非常详细,由于刚开始没接触,看的也不是很懂。首先记住一... -
webservice接口简单实例
2018-03-06 10:40:11webservice接口简单实例webservice接口简单实例webservice接口简单实例webservice接口简单实例webservice接口简单实例webservice接口简单实例 -
Struts2实现国际化+天气webservice接口+股票webservice接口
2013-05-31 14:43:10Struts2实现国际化+天气webservice接口+股票webservice接口,源代码可直接使用,用MyEclipse直接导入 -
C#调用WebService接口和创建WebService接口
2020-08-27 15:14:42调用WebService接口 对于初学者来说,在vs2012环境中,大家有可能不知道Web References文件夹是如何来的,它是通过右击项目,选择其中的”添加服务引用“,如图所示: 之后,得到”添加服务引用“的页面,我也把... -
webService接口编写并发布与webService接口的调用(一)
2020-09-17 17:20:56编写并发布webService接口 1. 编写webService接口 import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; @WebService(name = "Login",// Port名称 serviceName = "testService",... -
.net调用webservice接口例子
2017-09-26 12:57:28.net调用webservice接口例子.net调用webservice接口例子.net调用webservice接口例子.net调用webservice接口例子 -
python发布webservice接口_python调用webservice接口的实现
2020-12-06 13:38:07使用suds这个第三方模块from suds.client import Clienturl = 'http://ip:port/?wsdl'cilent=Client(url)print cilent查看webservice接口的具体信息:调用接口方法,通常 client.service.methodname实际测试过程中... -
webService接口编写并发布与webService接口的调用(二)
2020-09-17 17:19:23webService接口的调用的两种方法 1. 根据接口url生成客户端代码,再根据生成的代码调用接口服务 (1)使用eclipse在需要调用接口的项目目录里的src上右键,选择new,如图: (2)点击next录入webService接口的url... -
HTTP接口和WebService接口
2013-10-25 13:26:25HTTP接口和WebService接口 -
python调用WEBSERVICE接口
2017-07-12 09:28:50python调用WEBSERVICE接口 -
JAVA调用WEBSERVICE接口
2017-07-12 09:25:47JAVA调用WEBSERVICE接口 -
webService接口配置以及接口访问实例
2020-06-18 09:09:51基于idea开发的简单webservice接口实例,test1为服务端配置了webserivice接口;test2为客户端,通过AXIS方式访问接口,Soap方式服务端能接收到请求信息,但客户端返回信息警告,有兴趣的可以研究一下;带AXIS和soap... -
java发布webservice接口
2017-11-23 17:14:16java开发过程中,很多地方都会遇到数据传递,远程获取数据问题,我这个简单的webservice接口发布可以在java开发过程中,很多地方都会遇到数据传递,远程获取数据问题,我这个简单的webservice接口发布可以在 -
webservice接口调用实例
2017-08-10 17:51:36webservice接口调用实例,经个人验证可用 -
webservice接口与restful接口
2019-09-26 09:45:34webservice接口与restful接口的区别: 1、接口调用方式: webservice接口:soap报文,<尖括号>, restful接口:json文件,"双引号", java调用webservice时抛出该异常:Fault occurred while processing:... -
cmd 调用webservice接口_如何在Linux中使用ab命令进行webservice接口测试
2020-12-31 17:06:24在Linux服务器中需要对webservice接口进行测试时,如果打开类似SoapUI等图形化工具有时候并不是特别方便,反而使用命令进行测试高效快捷。本教程讲解了在Linux系统中如何通过ab命令进行webservice接口测试。准备条件... -
springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口
2020-11-10 10:38:49springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口 -
python webservice接口测试传参数_Python测试webservice接口入门基础
2020-12-23 21:59:30测试webservice接口的方法有不少种(好比经过SoapUI就不错),可是习惯用Python作测试的朋友,可能下面相对而言会更受欢迎。python一、准备环境web安装方式一,离线安装appwebservice接口测试,须要用到suds库,网上... -
WebService接口的生成和调用(WebService接口)
2019-03-01 13:26:23一:WebService的服务端发布 1:发布web程序服务端发布 2:本地发布 二:Webservice客户端调用: 1:本地生成代码,直接调用: 2、利用dos命令生成代码,和第一种基本一致 3:利用apache的AXIS直接调用远程... -
webservice接口测试工具
2016-08-23 08:47:50webservice接口测试工具 ,实时测试 -
使用WebServiceStudio测试WebService接口
2017-09-21 12:33:29调用webservice接口 -
mas短信webservice接口
2015-05-11 16:19:02利用mas短信机webservice接口, 发送短信和接收回执,附件包含代码和JAR包 利用mas短信机webservice接口, 发送短信和接收回执,附件包含代码和JAR包 -
webservice接口调用jar包
2018-11-13 14:53:48webservice接口调用需要使用的jar包汇总。
-
STM32F4-3-运行LVGL基础案例.rar
-
使用vue搭建微信H5公众号项目
-
map和flatMap的区别
-
pandas学习笔记二
-
LVS + Keepalived 实现 MySQL 负载均衡与高可用
-
阿里云存储面试题偏向系统底层
-
工程大面向对象课程设计作品(完整)(也适用于软件工程大实验).7z
-
华为1+X——网络系统建设与运维(中级)
-
linux c can总线通信 源代码
-
Mycat 实现 MySQL的分库分表、读写分离、主从切换
-
access应用的3个开发实例
-
MySQL 主从复制 Replication 详解(Linux 和 W
-
物联网基础篇:快速玩转MQTT
-
IDEA远程调试SpringBoot项目.pdf
-
国内电商平台抢购茅台脚本
-
python实现链表
-
西工大noj(23~24)
-
Pi Network_Pi币_Pi币挖矿_Pi教程
-
(2021年2月18日整理)自媒体全套教程+全套工具(带操作教程)+原创实操教程+N个素材网站+赠全套副业实操课程
-
MySQL 备份与恢复详解(高低版本 迁移;不同字符集 相互转换;表