本文共 4214 字,大约阅读时间需要 14 分钟。
1.首先用ajax调用servlet
<script type="text/javascript">
$(function() { $('#bt').click(function() { var number = window.document.getElementById("phoneNumber").value; //var codes = window.document.getElementById("codes").value; $.ajax({ //第一步 请求路径 url : "code", //第二步 请求方式:get或post type : "get", //第三步 请求参数:1.传统的拼接 2.json格式 //data:"uname=对对对&pwd=123", data : { "phoneNumber" : number }, //默认发送的是异步请求,若为false 则为同步请求 async : true, //服务器返回的参数的类型:jason/text/html三种方式 dateType : "text", //请求的结果:success成功响应后执行的方法 success : function(content) { //content响应正文,回调参数 //alert(content); }, error : function() { //没有回调参数,url不存在,响应接收类型不一致 alert("验证失败"); } }); }); });function show() {
var codes = window.document.getElementById("codes").value; var number = window.document.getElementById("phoneNumber").value; $.ajax({ //第一步 请求路径 url : "code_reg", //第二步 请求方式:get或post type : "get", //第三步 请求参数:1.传统的拼接 2.json格式 //data:"uname=对对对&pwd=123", data : { "codes" : codes, "phoneNumber" : number }, //默认发送的是异步请求,若为false 则为同步请求 async : true, //服务器返回的参数的类型:jason/text/html三种方式 dateType : "text", //请求的结果:success成功响应后执行的方法 success : function(row) { //content响应正文,回调参数 if(row>0){ alert("密码修改成功,初始密码为手机号后4位"); location.href="show_All"; }else{ alert("密码修改失败"); location.href="show_All"; } }, error : function() { //没有回调参数,url不存在,响应接收类型不一致 alert("验证失败"); } });};
</script>2.对应的两个servlet
@WebServlet("/code")
public class sendCodeServlet extends HttpServlet {private static final long serialVersionUID = -8559217512617151073L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub String phoneNumber = req.getParameter("phoneNumber");if (phoneNumber.trim().equals("") || phoneNumber == null) {
resp.sendRedirect("show_All"); return; } // 生成一个6位0~9之间的随机字符串 StringBuffer buffer = new StringBuffer(); Random random = new Random(); for (int i = 0; i < 6; i++) { buffer.append(random.nextInt(10)); } PrintWriter out = resp.getWriter(); try { if (!SMScode.sendCode(phoneNumber, buffer.toString())) { } else { // 将验证码、手机号码和当前的系统时间存储到session中 req.getSession().setAttribute("code", buffer.toString()); req.getSession().setAttribute("number", phoneNumber); req.getSession().setAttribute("time", System.currentTimeMillis()); // 将数据yitext传前台 resp.getWriter().write(buffer.toString()); } } catch (Exception e) { e.printStackTrace(); }out.close();
}@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);
} }@WebServlet("/code_reg")
public class RegCodes extends HttpServlet { private static final long serialVersionUID = 1L;public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String codes = req.getParameter("codes"); String phoneNumber = req.getParameter("phoneNumber"); String code = (String) req.getSession().getAttribute("code"); if (codes.equals(code)) {//两次验证一样,修改密码为手机后4位 IUserService us=new UserServiceImpl(); int updateUserByMobel = us.updateUserByMobel(phoneNumber); resp.getWriter().write(JSON.toJSONString(updateUserByMobel)); }else {//失败修改 resp.getWriter().write(JSON.toJSONString(0)); } }public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp); } }3.发送验证码的方法
public class SMScode {
// 把手机号码和随机验证码传递过来
public static boolean sendCode(String phoneNumber, String code) throws Exception {String str_code = URLEncoder.encode("#code#=" + code, "UTF-8");
// 包装好URL对象,将接口地址包装在此对象中 URL url = new URL("http://v.juhe.cn/sms/send?mobile=" + phoneNumber + "&tpl_id={此处去聚合数据申请即可}&tpl_value=" + str_code + "&key={此处去聚合数据申请即}"); /* 短信模板id */ /* 短信应用接口的key */ // 打开连接,得到连接对象 URLConnection connection = url.openConnection(); // 向服务器发送连接请求 connection.connect(); // 获得服务器响应的数据 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); StringBuffer buffer = new StringBuffer(); String lineDate = null; while ((lineDate = bufferedReader.readLine()) != null) { buffer.append(lineDate); } bufferedReader.close(); if (buffer.toString().indexOf("\"error_code\":0") >= 0) { return true; }return false;
}转载地址:http://rejxi.baihongyu.com/