JAVA电商秒杀实战(二)

实现登录功能

1、数据库设计
2、明文密码两次MD5处理
3、JSR303参数检验+全局异常处理器
4、分布式Session

【数据库设计】
在这里插入图片描述
【两次MD5】
第一次是把用户传入的密码进行加密,http协议在网络中传输的是明文,为了防止密码别截取,进行加密处理,再把处理过后的密码传给服务端。
第二次是服务端接受到的密码和生成的随机salt结合,进行一次MD5处理,再写入数据库。如果数据库泄露,那么可以根据MDS值反推出用户的密码,所以双重加密确保安全。

(1)添加依赖:
在这里插入图片描述
(2)第一次加密:
在这里插入图片描述
这样的加密方式并不是绝对的安全,因为salt值页面写的,如果被获取页面代码,也会存在泄漏密码的风险。
所以接下来第二次加密,随机生成的salt值,把密码和salt值都存入数据库。
(3)第二次加密:
在这里插入图片描述
在这里插入图片描述
来看一下两次加密运行结果:
在这里插入图片描述
可以看到第一次的运行结果可以根据固定的salt值推出明文密码,二次加密后就算数据库泄露,也只能获得第一次加密后的密码。
结合一下两次加密:
在这里插入图片描述
【实现登录功能】
在这里插入图片描述
/to_login跳转到登录页面,https://github.com/yqq98/seckill/blob/develop/src/main/resources/templates/login.html,页面实现代码。
在这里插入图片描述
登录之后出现错误
在这里插入图片描述
是json页面没有响应,漏了个@ResponseBody,添加进去运行结果:
在这里插入图片描述
就说明我们登录成功了 。那么只是简单的登录,还没有校验,接下来就是对账号和密码的校验。
在这里插入图片描述
其中ValidatorUtil类是号码格式类,判断手机号码是否是十一位数
在这里插入图片描述
要实现登录,那我们就要创建用户对象,创建MiaoshaUser.java获取参数;接口MiaoshaUserDao具体的ql语句;MiaoshaUserService.java注入do层
在这里插入图片描述
在这里插入图片描述

java实现秒杀系统@Controller @RequestMapping("seckill")//url:/模块/资源/{id}/细分 /seckill/list public class SeckillController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private SeckillService seckillService; @RequestMapping(value="/list",method = RequestMethod.GET) public String list(Model model){ //获取列表页 List list=seckillService.getSeckillList(); model.addAttribute("list",list); //list.jsp+model = ModelAndView return "list";//WEB-INF/jsp/"list".jsp } @RequestMapping(value = "/{seckillId}/detail",method = RequestMethod.GET) public String detail(@PathVariable("seckillId") Long seckillId, Model model){ if (seckillId == null){ return "redirect:/seckill/list"; } Seckill seckill = seckillService.getById(seckillId); if (seckill == null){ return "forward:/seckill/list"; } model.addAttribute("seckill",seckill); return "detail"; } //ajax json @RequestMapping(value = "/{seckillId}/exposer", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @ResponseBody public SeckillResult exposer(@PathVariable("seckillId") Long seckillId){ SeckillResult result; try { Exposer exposer =seckillService.exportSeckillUrl(seckillId); result = new SeckillResult(true,exposer); } catch (Exception e) { logger.error(e.getMessage(),e); result = new SeckillResult(false,e.getMessage()); } return result; } @RequestMapping(value = "/{seckillId}/{md5}/execution", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"} ) @ResponseBody public SeckillResult execute(@PathVariable("seckillId")Long seckillId,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值