SpringBoot项目中,cookie的设置与销毁
cookie的设置与销毁
1.设置cookie
/** * 设置一个cookie * @param response HttpServletResponse * @param name cookie的名称 * @param value cookie的内容 * @param maxAge cookie的持续时间 */ public static void set(HttpServletResponse response, String name, String value, int maxAge) { Cookie cookie = new Cookie(name, value); cookie.setPath("/"); cookie.setMaxAge(maxAge); response.addCookie(cookie); }
2.销毁cookie(将cookie的持续时间设置为0)
2.1查找cookie
/** * 查找cookie * @param request HttpServletRequest * @param name 要查找的cookie的名称 * @return */ public static Cookie get(HttpServletRequest request, String name) { //1.将cookies放到map中去 Map<String, Cookie> cookieMap = new HashMap<>(); Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { cookieMap.put(cookie.getName(), cookie); } } //2.查找是否存在cookie,是则返回查找到的cookie if (cookieMap.containsKey(name)) { return cookieMap.get(name); } else { return null; } }
2.2销毁cookie
CookieUtil.set(response, CookieConstant.TOKEN, null, 0);
3.实际运用效果
生成cookie
@PostMapping("/login") public ModelAndView login(@RequestParam("openid") String openid, Map<String, Object> map, HttpServletResponse response) { //设置token到cookie set(response, CookieConstant.TOKEN, token, CookieConstant.EXPORE); //页面跳转 return new ModelAndView("redirect:" + projectUrlConfig.getSell() + "/sell/seller/order/list"); }
注销cookie
@GetMapping("/logout") public ModelAndView logout(HttpServletRequest request, HttpServletResponse response, Map<String, Object> map) { //1.从cookie里面查询 Cookie cookie = CookieUtil.get(request, CookieConstant.TOKEN); if (cookie != null) { //清除cookie,设置过期时间为0 CookieUtil.set(response, CookieConstant.TOKEN, null, 0); } map.put("msg",ResultEnum.LOGOUT_SUCCESS.getMessage()); map.put("url","/sell/seller/toLogin"); return new ModelAndView("common/success",map); }
分类:
java开发程序常用知识
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2018-01-28 Python天天学_03_基础三