一、项目简介
使用技术:1.SpringBoot+mybatis+redis+RabbitMq+thymeleaf
功能:
1.springBoot的环境搭建
2.集成Thtmeleaf,Result结果封装
3.集成 mybatis+Druid
4.集成Jedis+Redis的安装,通用缓存key封装
登陆 数据库的设计 明文密码的两次md5 jsr303参数校验 +全局异常处理器 分布式session
Jmeter 压测 自动以变量模拟多次用户
页面优化技术:
页面缓存 +URL缓存+对象缓存
5.页面静态化,前后端分离
6.资源静态化
.cdn
7接口优化 异步下单
8redis预减库存 减少数据库的访问
内存标记减少redis的访问
RabbitMQ队列缓冲,异步下单,增强用户体验
RabbitMQ安装与springBoot集成
二、功能实现
1.实现用户登陆
/**
* @Author:zhangyx
* @Date:Created in 22:182018/11/13
* @Modified By:
*/
@Controller
@RequestMapping("/login")
public class LoginController {
@Autowired
MiaoshaUserService miaoshaUserService;
@Autowired
private RedisService redisService;
//日志
private static Logger log= LoggerFactory.getLogger(LoginController.class);
@RequestMapping("/to_login")
public String toLogin(){
return "login";
}
@RequestMapping("/do_login")
@ResponseBody
public Result<Boolean> doLogin(HttpServletResponse response, LoginVo loginVo){
//log.info(loginVo.toString());
System.out.println(loginVo.toString());
//参数校验
String passinput=loginVo.getPassword();
String mobile=loginVo.getMobile();
if(StringUtils.isEmpty(passinput)){
//return Result.error(CodeMsg.PASSWORD_EMPTY);
throw new GlobelException(CodeMsg.PASSWORD_EMPTY);
}
if(StringUtils.isEmpty(mobile)){
//return Result.error(CodeMsg.MOBILE_EMPTY);
throw new GlobelException(CodeMsg.MOBILE_EMPTY);
}
if(!ValidatorUtil.isMobile(mobile)){
// return Result.error(CodeMsg.MOBILE_ERROR);
throw new GlobelException(CodeMsg.MOBILE_ERROR);
}
miaoshaUserService.login(response,loginVo);
return Result.success(true);
三、登陆时加密功能
加密使用md5进行加密:
1.用户端:PASSWORD=MD5(明文+固定的Salt)
2.服务端:PASSWORD=MD5(用户输入的+随机salt)
/**
* @Author:zhangyx
* @Date:Created in 22:062018/11/13
* @Modified By:
*/
public class MD5Util {
public static String md5(String src){
return DigestUtils.md2Hex(src);
}
private static final String salt="1a2b3c4d";
public static String inputPassToFromPass(String inputPass){
String str=""+salt.charAt(0)+salt.charAt(2)+inputPass+salt.charAt(5)+salt.charAt(4);
return md5(str);
}
public static String formPassToDbPass(String input,String salt){
String frompass=inputPassToFromPass(input);
String dbpass=""+salt.charAt(0)+salt.charAt(2)+frompass+salt.charAt(5)+salt.charAt(4);
return dbpass;
}
public static void main(String[] args) {
String s=MD5Util.formPassToDbPass("123456","1a2b3c4d");
System.out.println(s);
}
}