JAvaコードは簡単なメール検証コードの送信を実現し、検証コードに5分間の有効期間を設定し、1回の送信後60秒以内に繰り返し送信できないようにし、検証コードをsessionに置いて、入力した番号がさっき送信した番号と一致しているかどうかを判断する.


タイトルjavaコードは簡単なメール検証コード送信を実現し、検証コードをsessionに配置し、入力した番号がさっき送信した番号と一致しているかどうかを判断する.
controller
package com.zl.controller;

import com.zl.service.IVerifyCodeService;
import com.zl.util.JSONResult;
import com.zl.bean.vo.SMSUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class VerifyCodeController {
     


    @Autowired
    private IVerifyCodeService verifyCodeService;


    @RequestMapping("sendVerifyCode")
    @ResponseBody
    public JSONResult sendVerifyCode(String phoneNumber){
     

        JSONResult json=new JSONResult();

        try{
     
            verifyCodeService.sendVerifyCode(phoneNumber);

        }catch (RuntimeException re){
     
            json.setMsg(re.getMessage());
            json.setSuccess(false);
        }
        return json;

    }



}

Serviceimpl
package com.zl.service.impl;

import java.util.Map;
import java.util.Date;
import java.util.HashMap;

import com.zl.bean.util.UserContext;
import com.zl.bean.vo.VerifyCodeVO;
import com.zl.service.IVerifyCodeService;
import com.zl.util.BidConst;
import com.zl.util.DateUtil;

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import org.springframework.stereotype.Service;

@Service
public class VerifyCodeServiceimpl implements IVerifyCodeService {
     
	//          accessKeyId
	private String accessKeyId = "";
	//          accessKeySecret
	private String accessKeySecret = "";
	//      
	private String signName = "";
	//      
	private String templateCode = "";
	//    6     (int)Math.round(Math.random()*(0-1000000)+1000000)

	/**
	 *     
	 *
	 * @param phoneNumber       
	 * @return ture      ,false  
	 */
	public void sendVerifyCode(String phoneNumber) {
     
		VerifyCodeVO vc = UserContext.getCurrentVerifyCode();
		if (vc == null || DateUtil.secondsBetween(new Date(), vc.getLastSendTime()) > 60) {
     
			String verifyCode = Math.round(Math.random() * (0 - 1000000) + 1000000) + "";
			//   ascClient
			DefaultProfile profile = DefaultProfile.getProfile("default", accessKeyId, accessKeySecret);
			IAcsClient client = new DefaultAcsClient(profile);
			//        
			CommonRequest request = new CommonRequest();
			//request.setProtocol(ProtocolType.HTTPS);  POST  
			request.setMethod(MethodType.POST);
			//               (  )
			request.setDomain("dysmsapi.aliyuncs.com");
			//      (  )
			request.setVersion("2017-05-25");
			//      (  )
			request.setAction("SendSms");
			//        
			request.putQueryParameter("PhoneNumbers", phoneNumber);
			//    
			request.putQueryParameter("SignName", signName);
			//    
			request.putQueryParameter("TemplateCode", templateCode);
			//   
			request.putQueryParameter("TemplateParam", "{\"code\":" + verifyCode + "}");
			System.out.println("yzm_" + verifyCode);
			try {
     
				//    ,      
				CommonResponse response = client.getCommonResponse(request);
				//      (Json   )
				System.out.println(response.getData());
				// Json      Map  
				Map<String, Object> map = getMapToJson(response.getData());
				//          
				if (map.get("Code").equals("OK")) {
     
					//         
					VerifyCodeVO verifyCodeVO = new VerifyCodeVO();
					verifyCodeVO.setLastSendTime(new Date());
					verifyCodeVO.setPhoneNumber(phoneNumber);
					verifyCodeVO.setVerifyCode(verifyCode);
					//        Session
	            /*HttpSession session = request.getSession();
	            UserContext.putVerifyCode(verifyCodeVO);*/

					//	session.setAttribute("verifyCodeVO",verifyCodeVO );
					UserContext.putVerifyCode(verifyCodeVO);
				} else {
     
					throw new RuntimeException();
				}

			} catch (Exception e) {
     
				// TODO Auto-generated catch block
				e.printStackTrace();
				throw new RuntimeException("      ");
			}

		} else {
     
			throw new RuntimeException("    ");
		}
	}



	@Override
	public boolean verify(String phoneNumber, String verifyCode) {
     
		VerifyCodeVO vc=UserContext.getCurrentVerifyCode();
		if(vc!=null
				&&  vc.getPhoneNumber().equals(phoneNumber)
				&&  vc.getVerifyCode().equalsIgnoreCase(verifyCode)
				&&  DateUtil.secondsBetween(new Date(), vc.getLastSendTime())<=BidConst.VERIFYCODE_VAILDATE_SECOND){
     
			return true;
		}
		return false;
	}

	public  String getTemplatecode() {
     
		return templateCode;
	}

	/**
	 *  Json     map  
	 * @param json
	 * @return
	 */
	public static Map<String, Object> getMapToJson(String json) {
     
		JSONObject jsonObject = JSONObject.parseObject(json);
		Map<String, Object> valueMap = new HashMap<String, Object>();
		valueMap.putAll(jsonObject);
		return valueMap;
	}

}


VerifyCodeVOパッケージ検証コード、携帯電話番号、最後の送信時間はsessionにあります
package com.zl.bean.vo;

import java.util.Date;

import lombok.Getter;
import lombok.Setter;

/**
 *          ,       session  
 * 
 * @author Administrator
 * 
 */
@Getter
@Setter
public class VerifyCodeVO {
     
	
	private String verifyCode;//   
	private String phoneNumber;//         
	private Date lastSendTime;//        

}
 VerifyCodeVO  session 
```java
package com.zl.bean.util;

import javax.servlet.http.HttpSession;

import com.zl.bean.Logininfo;
import com.zl.bean.vo.VerifyCodeVO;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

/**
 *             
 * 
 * @author Administrator
 * 
 */
public class UserContext {
     

	public static final String VERIFYCODE_IN_SESSION = "verifycode_in_session";

	/**
	 *     request   ,   RequestContextListener.requestInitialized    
	 * 
	 * @return
	 */
	private static HttpSession getSession() {
     
		return ((ServletRequestAttributes) RequestContextHolder
				.getRequestAttributes()).getRequest().getSession();
	}

	
	public static void putVerifyCode(VerifyCodeVO vc) {
     
		getSession().setAttribute(VERIFYCODE_IN_SESSION, vc);
	}

	/**
	 *           
	 * 
	 * @return
	 */
	public static VerifyCodeVO getCurrentVerifyCode() {
     
		return (VerifyCodeVO) getSession().getAttribute(VERIFYCODE_IN_SESSION);
	}
}