一、驗證碼的獲取(將相關內容存在session中);
public class SendValidMsg extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 如果不存在 session 會話,則創建一個 session 對象
HttpSession session = req.getSession(true);
String phoneNum = req.getParameter("phone");
String validCode = "";
int times = 0;
String msg = "";
boolean sendflag = true;
validCode = StringUtil.getStr(session.getAttribute("validcode" + phoneNum));
times = NumberUtil.getIntegerValue(session.getAttribute("times" + phoneNum));
if (times == 3) {
msg = "您已超過最多重發次數限制!";
sendflag = false;
} else if (times > 3) {
msg = "驗證碼已失效!";
sendflag = false;
} else {
msg = "驗證碼發送成功!";
}
times += 1;
if (validCode.equals("")) {
validCode = StringUtil.getRandNum(4);//獲取4位隨機數
}
session.setAttribute("validcode" + phoneNum, validCode);
session.setAttribute("times" + phoneNum, times);
session.setAttribute("sendtime" + phoneNum, DateUtil.date2Str(new Date(), "yyyy-MM-dd HH:mm:ss"));
if (sendflag) {
MessageClient.sendMessage(phoneNum, "尊敬的用戶您的驗證碼:" + validCode + ",請在5分鍾內使用。回復TD退訂。");
}
JSONObject resultObj = new JSONObject();
resultObj.put("msg", msg);
resultObj.put("success", true);
try {
resp.setContentType("application/x-json");
resp.setCharacterEncoding("UTF-8");
PrintWriter out = resp.getWriter();
out.write(resultObj.toJSONString());
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} |
二、驗證。
public class ValidMsg extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 如果不存在 session 會話,則創建一個 session 對象
HttpSession session = req.getSession(true);
String validCode = "";
String phoneNum = req.getParameter("phone");
int times = 0;
String msg = "";
String validCode1 = "";
validCode = StringUtil.getStr(session.getAttribute("validcode" + phoneNum)); //存在session中的驗證碼
times = NumberUtil.getIntegerValue(session.getAttribute("times" + phoneNum)); //發送次數,發送3次以上驗證碼失效。
int validTimes = 0;
Long intervalTime = (long) 0;
validTimes = NumberUtil.getIntegerValue(session.getAttribute("validtimes" + phoneNum)); //驗證次數,錯誤驗證5次以上驗證碼失效。
Date now = new Date(); //當前時間
Date sendTime = DateUtil.getDate(StringUtil.getStr(session.getAttribute("sendtime" + phoneNum)), "yyyy-MM-dd HH:mm:ss"); //從session中取驗證碼發送時間
if (sendTime != null) {
intervalTime = now.getTime() - sendTime.getTime();
}
boolean validflag = false; //是否驗證通過
if (times > 3 || intervalTime > 5 * 60 * 1000 || validTimes > 5) {
msg = "驗證碼已失效,請重新打開瀏覽器再次注冊!";
} else {
validCode1 = req.getParameter("validcode"); //輸入的驗證碼
if (validCode1.toLowerCase().equals(validCode.toLowerCase()) && !validCode.toLowerCase().equals("")) {
//msg = "驗證通過!";
validflag = true;
} else {
msg = "驗證碼輸入錯誤!";
validTimes += 1;
session.setAttribute("validtimes" + phoneNum, validTimes);
}
}
JSONObject resultObj = new JSONObject();
resultObj.put("msg", msg);
resultObj.put("validflag", validflag);
resultObj.put("success", true);
try {
resp.setContentType("application/x-json");
resp.setCharacterEncoding("UTF-8");
PrintWriter out = resp.getWriter();
out.write(resultObj.toJSONString());
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} |
