黑马程序员技术交流社区
标题: 【郑州校区】Java之品优购课程讲义_day14(7) [打印本页]
作者: 谷粒姐姐 时间: 2018-10-18 16:26
标题: 【郑州校区】Java之品优购课程讲义_day14(7)
4.3.1 用户注册判断验证码
(1)修改 pinyougou-user-interface 的 UserService.java
[AppleScript] 纯文本查看 复制代码
/**
*判断短信验证码是否存在
*@param phone
*@return
*/
public boolean checkSmsCode(String phone,String code);
(2)修改 pinyougou-user-service 的 UserServiceImpl.java
[AppleScript] 纯文本查看 复制代码
/**
* 判断验证码是否正确
*/
public boolean checkSmsCode(String phone,String code){
//得到缓存中存储的验证码
String sysCode = (String) redisTemplate.boundHashOps("smscode").get(phone);
if(sysCode==null){ return false;
}
if(!sysCode.equals(code)){ return false;
}
return true;
}
(3)修改 pinyougou-user-web 的 UserController.java
[AppleScript] 纯文本查看 复制代码
/**
*增加
*@param user
*@return
*/ @RequestMapping("/add")
public Result add(@RequestBody TbUser user,String smscode){
boolean checkSmsCode = userService.checkSmsCode(user.getPhone(), smscode);
if(checkSmsCode==false){
return new Result(false, "验证码输入错误!");
}
try {
userService.add(user);
return new Result(true, "增加成功");
} catch (Exception e) { e.printStackTrace();
return new Result(false, "增加失败");
}
}
(4)修改 pinyougou-user-web 的 userService.js
[AppleScript] 纯文本查看 复制代码
//增加
this.add=function(entity,smscode){
return $http.post('../user/add.do?smscode='+smscode ,entity );
}
(5)修改 pinyougou-portal-web 的 UserController.java
[AppleScript] 纯文本查看 复制代码
//保存
$scope.reg=function(){
userService.add( $scope.entity, $scope.smscode ).success(
function(response){ alert(response.message);
}
);
}
(6)修改页面,绑定变量
[AppleScript] 纯文本查看 复制代码
<input type="text" placeholder="短信验证码" ng-model="smscode" class="input-xfat input-xlarge"> <a href="#" ng-click="sendCode()">获取短信验证码</a>
4.3.1 短信验证码发送到手机
(1)在 pinyougou-user-service 添加配置文件 applicationContext-activemq.xml
[AppleScript] 纯文本查看 复制代码
<!-- 真正可以产生 Connection 的 ConnectionFactory,由对应的 JMS 服务厂商提供-->
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://192.168.25.135:61616"/>
</bean>
<!-- Spring 用于管理真正的 ConnectionFactory 的 ConnectionFactory -->
<bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<!-- 目标 ConnectionFactory 对应真实的可以产生 JMS Connection 的 ConnectionFactory -->
<property name="targetConnectionFactory" ref="targetConnectionFactory"/>
</bean>
<!-- Spring 提供的 JMS 工具类,它可以进行消息发送、接收等 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<!-- 这个 connectionFactory 对应的是我们定义的 Spring 提供的那个 ConnectionFactory
对象 -->
<property name="connectionFactory" ref="connectionFactory"/>
</bean>
<!--这个是点对点消息 -->
<bean id="smsDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="sms"/>
</bean>
[AppleScript] 纯文本查看 复制代码
@Autowired
private JmsTemplate jmsTemplate; @Autowired
private Destination smsDestination;
@Value("${template_code}")
private String template_code;
@Value("${sign_name}")
private String sign_name;
/**
* 生成短信验证码
*/
public void createSmsCode(final String phone){
//生成 6 位随机数
final String code = (long) (Math.random()*1000000)+"";
System.out.println("验证码:"+code);
//存入缓存redisTemplate.boundHashOps("smscode").put(phone, code);
//发送到 activeMQ
jmsTemplate.send(smsDestination, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
MapMessage mapMessage = session.createMapMessage(); mapMessage.setString("mobile", phone);//手机号
mapMessage.setString("template_code", "SMS_85735065");//模板编号 mapMessage.setString("sign_name", "黑马");//签名
Map m=new HashMap<>(); m.put("number", code);
mapMessage.setString("param", JSON.toJSONString(m));//参数
return mapMessage;
}
});
}
(3)在 pinyougou-common 的 properties 目录下创建配置文件 sms.properties
[AppleScript] 纯文本查看 复制代码
template_code=SMS_85735065
sign_name=\u9ED1\u9A6C
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |