前段时间因为项目的需要涉及到了一个往手机上发验证码的项目,代码贴出来,希望指点。。。。。
首先是页面,此页面是用于输入用户的手机号码:addModeCode.jsp
<%@ page contentType="text/html; charset=gb2312" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<style type="text/css">
<!--
.STYLE71 {color: #000000}
-->
</style>
<head>
<title></title>
</head>
<body>
<form name="f1" method="post" action="addMobCodeAction">
<input type="hidden" name="method" value="">
<table width="692" border="0" cellspacing="0" cellpadding="0" align="center" background="images/front/center_bg.gif">
<tr>
<td><span class="STYLE71">短信订阅</span></td>
</tr>
</table>
<br>
<table width="692" style="BORDER-COLLAPSE: collapse" borderColor="#111111" cellSpacing="0" borderColorDark="#d9dce8" borderColorLight="#d9dce8" border="1" align="center">
<tr bgcolor="#EAEFFC">
<td colspan="3" align="center"><span class="STYLE71">用户绑定手机号码</span></td>
</tr>
<tr bgcolor="#f9f9f9" onMouseOver="this.style.background='#ECEFF6'; " onmouseout ="this.style.background='#f9f9f9'; this.style.borderColor='#f9f9f9'">
<td height="25" align="right" width="37%">你所要绑定的移动手机号码:</td>
<td width="30%"><input type="text" name="mob_code" value="" onKeyPress="onlyNumber(this.value);"></td>
<td width="33%"><img src="images/front/queding.gif" width="63" height="20" name="bt1" onClick="addMob();" style="cursor:hand"></td>
</tr>
<tr bgcolor="#FFFFFF" onmouseover="this.style.background='#eeeeee'; " onmouseout ="this.style.background='#fff'; this.style.borderColor='#fff'">
<td width="37%" align="right" height="25">请输入你手机收到的验证码:</td>
<td width="30%"><input type="text" name="check_num" value=""></td>
<td width="33%"><img src="images/front/queding.gif" width="63" height="20" name="bt12" onClick="checkNum();" style="cursor:hand"></td>
</tr>
</table>
</form>
</body>
</html>
<script language="javascript">
function addMob(){
if(isMobileNo(f1.mob_code.value)){
f1.method.value="addMob";
f1.submit();
}else{
alert("您输入的手机号码错误,请重新输入");
f1.mob_code.focus();
return false;
}
}
function checkNum(){
if(f1.check_num.value!=null && f1.check_num.value!=""){
f1.method.value="checkNum";
f1.submit();
}else{
alert("请输入验证码!");
f1.check_num.focus();
return false;
}
}
</script>
然后提交到servlet也就是addMobCodeAction
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AddMobCodeAction extends HttpServlet{
private static final String CONTENT_TYPE = "text/html; charset=GBK";
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
String method = request.getParameter("method");
if (method != null && method.equals("check")) {
SessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute("sessionInfo");
String url = "";
if(isMobile(sessionInfo.getMobCode())){
url = "userSmsCustomAction?method=search";
} else {
url = "front/addMobCode.jsp";
}
RequestDispatcher requestDispatcher = request.getRequestDispatcher(url);
requestDispatcher.forward(request, response);
}
if (method != null && method.equals("addMob")) {
PrintWriter out = response.getWriter();
String temp = addMob(request,response);
if(temp.equals("1")){
out.println("<script language='javascript'>alert('验证码已经发出,请在下一行填写你手机收到的验证码!');history.go(-1);</script>");
out.close();
return;
}else{
out.println("<script language='javascript'>alert('对不起,手机号码输入错误!');history.go(-1);</script>");
out.close();
return;
}
}
if(method != null && method.equals("checkNum")){
PrintWriter out = response.getWriter();
String temp = checkNum(request,response);
if(temp.equals("1")){
out.println("<script language='javascript'>");
out.println("alert('验证码正确,绑定手机号码成功!');window.close();");
out.println("window.location='userSmsCustomAction?method=search';");
out.println("</script>");
out.close();
return;
}else{
out.println("<script language='javascript'>alert('验证码输入错误,请重新输入!');history.go(-1);</script>");
out.close();
return;
}
}
if(method != null && method.equals("update")){
RequestDispatcher requestDispatcher = request.getRequestDispatcher("front/addMobCode.jsp");
requestDispatcher.forward(request, response);
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
/**
* 绑定号码
*/
private String addMob(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
SessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute("sessionInfo");
String mobCode = request.getParameter("mob_code");
if (isMobile(mobCode)) {
SoapSendSms send = new SoapSendSms();
String randomNum = this.getRandom();
String msg = "用户短信订阅验证码: " + randomNum;
send.validate(mobCode, msg);//调用Service接口,向用户发送验证码.;
sessionInfo.setCheckNum(randomNum);
return "1";
} else {
return "0";
}
}
/**
* 确认验证码
*/
private String checkNum(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
SessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute("sessionInfo");
String random_num = request.getParameter("check_num");
String mobCode = request.getParameter("mob_code");
if(random_num.equals(sessionInfo.getCheckNum())){
Database db = new Database();
try{
// SysUserUtil.updateMob(db,mobCode,sessionInfo.getLoginame()); 更新数据库
// sessionInfo.setMobCode(mobCode); 将手机号码写进session
}catch(Exception e){
e.printStackTrace();
}finally{
db.cleanup();
}
return "1";
}else{
return "0";
}
}
/**
* 得到0..10000随机数
* @return int
*/
private String getRandom(){
double number=Math.random();
number = Math.ceil(number*10000);
String str = String.valueOf((int)number);
while(str.length()<4){
str = "0"+str;
}
return str;
}
/**
* 判断是否是手机号码
* @param number
* @return
*/
private boolean isMobile(String number){
boolean temp = false;
if(number == null || number.equals("")){
temp = false;
}
else {
if((number.indexOf("13") == 0 && number.length() == 11) || (number.indexOf("15") == 0 && number.length() == 11)){
temp = true;
}else{
temp = false;
}
}
return temp;
}
}
调用Service接口,向用户发送验证码
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
//发送短信的SoapClient
//authod sq
public class SoapSendSms
{
private static String endpoint="";
private static Call call=null;
public SoapSendSms()
{
try
{
Service service = new Service();
endpoint = "http://";
call=(Call)service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setMaintainSession(true);
}
catch(Exception ex)
{
}
}
private static Object setSoap(String OperationName,Object [] params)
{
try
{
call.setOperationName(new QName("",OperationName));
//调用服务
Object result;
try
{
result=call.invoke(params);
return result;
}
catch (RemoteException ex)
{
ex.printStackTrace();
return null;
}
}
catch (Exception ex)
{
ex.printStackTrace();
// ServerConfig.logger.info(ex.getMessage());
return null;
}
}
/**
* 发送短消息
* smsno 手机号码
* machncode 车号
* msgcode 消息的编码
* mtsrc 定制类型
* content 发送的内容
*/
public static Object sendSms(String smsno,String machncode,String msgcode,String mtsrc,String content)
{
Object[] params1=new Object[6];
params1[0]=new Integer(1);
params1[1]=smsno;
params1[2]=machncode;
params1[3]=msgcode;
params1[4]=mtsrc;
params1[5]=content;
return setSoap("sendSmsInfo",params1);
}
public static void validate(String smsno,String smsinfo)
{
Object[] params1=new Object[3];
params1[0]=new Integer(1);
params1[1]=smsno;
params1[2]=smsinfo;
setSoap("validateSmsInfo",params1);
}
public static void main( String[] args )
{
SoapSendSms sc=new SoapSendSms();
Object[] params1=new Object[6];
params1[0]=new Integer(1);
params1[1]="";
params1[2]="10000";
params1[3]="123";
params1[4]="1";
params1[5]="show me";
//String a=(String)sc.setSoap("sendSmsInfo",params1);
System.out.println(sc.sendSms("shouhao","test100001","hyd00","2","123"));
}
}
完成,有点乱。。。就这这个意思
分享到:
- 2009-02-24 16:52
- 浏览 4948
- 评论(5)
- 论坛回复 / 浏览 (5 / 3306)
- 查看更多
相关推荐
发送短信的请求通常包含手机号码、模板ID、验证码(如果需要的话)以及其他可能的变量。例如,验证码可能是随机生成的,而营销短信的内容可能包含动态变量,需要在发送时替换。 4. **验证码生成与管理**: 在Java...
注册一个`BroadcastReceiver`,在`onReceive()`方法中检查接收到的短信内容,如果匹配预设的格式(例如,由特定的发件人发送且包含验证码),则提取验证码并显示给用户。 6. **验证码的定时更新**: 为了防止滥用...
标题提到的“免费发短信最新版(修改了不显示验证码)”可能是指一个经过修改的应用程序,该应用允许用户免费发送短信,同时去除了通常用于验证用户身份的验证码环节。 验证码的主要目的是防止自动化程序(如机器人)...
2. **Android编程**:Android是Google开发的开源移动操作系统,用于智能手机和平板电脑。在Android应用中,我们需要使用Java或Kotlin语言进行编程。这个实例可能包含了Android Studio项目文件,通过这些文件我们可以...
6. **测试与兼容性**:在实际应用中,要确保该功能在不同品牌和版本的手机上都能正常工作,因此需要进行广泛的设备和系统版本测试。 7. **异常处理**:考虑到可能存在的网络延迟、短信未到达或解析错误等情况,应...
短信验证码是一种广泛应用于移动互联网应用和网站的安全验证机制,它通过发送随机生成的一次性密码到用户手机上,用于确认用户的身份。这个过程涉及到多个技术环节,包括短信接口、服务器端处理、用户交互等。接下来...
首先,`java邮箱和手机发送链接和验证码`涉及到的主要技术有: 1. **JavaMail API**:JavaMail API是Java平台上的一个用于处理邮件的库,它提供了创建、发送和接收电子邮件的功能。要向邮箱发送激活码或链接,我们...
为了确保验证码的安全性,通常会设置发送频率限制,例如同一手机号在一定时间内只能接收有限次数的验证码,以防止被恶意攻击。同时,验证码的有效期也需设定,过期未使用的验证码应自动失效。 在开发过程中,应关注...
此外,还可以结合其他验证机制,如图形验证码或手机短信验证码,进一步增强安全性。 代码示例可能包含以下关键部分: ```java import javax.mail.*; import javax.mail.internet.*; // 创建Properties对象,配置...
推荐(带代码)-手机短信验证码功能实战精讲,非常详细带源代码。讲师讲课带图,通俗易懂。妈妈再也不用担心我不能发短信了!!!
8. **多因素认证**:除了邮箱验证码,还可以结合其他认证方式,如手机短信验证码、手机APP推送通知、生物特征识别等,形成多因素认证,进一步提高账户安全。 9. **优化用户体验**:验证码的发送速度、易读性以及...
移动的聊天软件飞信2008-可以免费往手机发短信! 被认为最有可能与腾讯QQ一斗的就是这款来自中国移动官方推出的飞信软件了,据说移动还 将其整合到手机并排除现在任何的其他通讯软件的手机版,所以只要你是移动用户...
不知道大家有没有用过,短信接口功能,就是像淘宝一样,输入手机号,发一条验证码到手机上,这个其实比较简单,这是源码,大家可以参考一下. 简单的注册功能和手机短信验证功能 1.程序整理了包括Access,FoxPro,Oracle,...
天翼短信验证码接口提供了一种便捷的方式,让应用程序能够与电信运营商的服务相结合,向用户的手机发送验证码。下面将详细解释天翼短信验证码接口调用客户端的相关知识点。 首先,我们需要理解“接口”这一概念。...
手机验证码,自动回复软件,不再手动回复,真正全自动验证,
《易语言移动手机发短信》 易语言是一种中国本土开发的、面向初学者的编程语言,旨在降低编程的难度,让普通用户也能进行程序设计。本主题主要关注的是使用易语言实现移动手机发送短信的功能,这在许多应用场景中...
通常,当用户点击一个“获取验证码”或“发送验证码”的按钮时,应用会向服务器发起请求,请求发送一条包含验证码的短信到用户绑定的手机上。这个过程需要与后端API进行交互,发送用户的手机号码,并处理可能的网络...
您的手机号:【变量】,绑定验证码:【变量】,一天内提交有效,如不是本人操作请忽略! 尊敬的用户您已经注册成功,用户名:【变量】 密码:【变量】 感谢您的注册! 2.订单通知类 您的订单编码:【变量】。如需...