1.用户模块操作
1.1 用户退出操作
1.1.1 业务需求
当用户点击退出操作时,应该删除Cookie和Redis中的数据.并且重定向到系统首页.
1.1.2 页面URL分析
1.1.3 编辑UserController
/**
* 实现用户退出操作
* url:http://www.jt.com/user/logout.html
* 返回值: 重定向到系统首页.
* 目的: 删除redis. 删除Cookie
* 前提: 需要获取cookie的key和value
*/
@RequestMapping("/logout")
public String logout(HttpServletRequest request,HttpServletResponse response){
String jtTicket = null;
//1.如何获取cookie中的数据?
Cookie[] cookies = request.getCookies();
//2.校验Cookie数据是否为null
if(cookies !=null && cookies.length>0){
for(Cookie cookie : cookies){
if(TICKET.equalsIgnoreCase(cookie.getName())){
jtTicket = cookie.getValue();
//业务需要提前删除Cookie
cookie.setMaxAge(0);
cookie.setPath("/");
cookie.setDomain("jt.com");
response.addCookie(cookie);
break;
}
}
}
//2.校验数据是否有效
if(!StringUtils.isEmpty(jtTicket)){
//如果数据不为null,则开始执行退出操作.
jedisCluster.del(jtTicket); //根据key,删除Redis中的记录
//删除cookie.
}
return "redirect:/";
}
1.2 编辑Cookie工具API
1.2.1关于API说明
说明:cookie工具API可以提供新增Cookie/删除Cookie/根据Cookie名称获取Cookie对象的操作.
位置:在jt-common中编辑
1.2.2编辑工具API
package com.jt.util;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CookieUtil {
//1.新增cookie
public static void addCookie(String name, String value, String path, String domain, int maxAge, HttpServletResponse response){
//校验自己完成
Cookie cookie = new Cookie(name,value);
cookie.setPath(path);
cookie.setDomain(domain);
cookie.setMaxAge(maxAge);
response.addCookie(cookie);
}
//2.删除Cookie 0 -1 用枚举类型优化一下
public static void deleteCookie(String name, String path, String domain, HttpServletResponse response){
//校验自己完成
Cookie cookie = new Cookie(name,"");
cookie.setPath(path);
cookie.setDomain(domain);
cookie.setMaxAge(0); //后期维护使用枚举
response.addCookie(cookie);
}
//3.根据Cookie的name属性获取Cookie对象
public static Cookie getCookieByName(HttpServletRequest request,String name){
Cookie[] cookies = request.getCookies();
if(cookies !=null && cookies.length>0){
for(Cookie cookie : cookies){
if(name.equalsIgnoreCase(cookie.getName())){
return cookie;
}
}
}
return null;
}
}
1.2.3 重构cookie删除操作
/**
* 实现用户退出操作
* url:http://www.jt.com/user/logout.html
* 返回值: 重定向到系统首页.
* 目的: 删除redis. 删除Cookie
* 前提: 需要获取cookie的key和value
*/
@RequestMapping("/logout")
public String logout(HttpServletRequest request,HttpServletResponse response){
Cookie cookie = CookieUtil.getCookieByName(request,TICKET);
//1.校验cookie中是否有记录
if(cookie != null){
String jtTicket = cookie.getValue();
if(!StringUtils.isEmpty(jtTicket)){
//删除Redis数据
jedisCluster.