在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

Java实现对cookie的操作(增删改查)

2016-12-20 13:15| 发布者: zhangjf| 查看: 468| 评论: 0

摘要: 基于springMVC框架下写的 /** * 读取所有cookie * 注意二、从客户端读取Cookie时,包括maxAge在内的其他属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name与value属性。maxAge属性只被浏览 ...
基于springMVC框架下写的
  1. /**
  2. * 读取所有cookie
  3. * 注意二、从客户端读取Cookie时,包括maxAge在内的其他属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name与value属性。maxAge属性只被浏览器用来判断Cookie是否过期
  4. * @param request
  5. * @param response
  6. */
  7. @RequestMapping("/showCookies")
  8. public void showCookies(HttpServletRequest request,HttpServletResponse response ){
  9. Cookie[] cookies = request.getCookies();//这样便可以获取一个cookie数组
  10. if (null==cookies) {
  11. System.out.println("没有cookie=========");
  12. } else {
  13. for(Cookie cookie : cookies){
  14. System.out.println("name:"+cookie.getName()+",value:"+ cookie.getValue());
  15. }
  16. }
  17. }
  18. /**
  19. * 添加cookie
  20. * @param response
  21. * @param name
  22. * @param value
  23. */
  24. @RequestMapping("/addCookie")
  25. public void addCookie(HttpServletResponse response,String name,String value){
  26. Cookie cookie = new Cookie(name.trim(), value.trim());
  27. cookie.setMaxAge(30 * 60);// 设置为30min
  28. cookie.setPath("/");
  29. System.out.println("已添加===============");
  30. response.addCookie(cookie);
  31. }
  32. /**
  33. * 修改cookie
  34. * @param request
  35. * @param response
  36. * @param name
  37. * @param value
  38. * 注意一、修改、删除Cookie时,新建的Cookie除value、maxAge之外的所有属性,例如name、path、domain等,都要与原Cookie完全一样。否则,浏览器将视为两个不同的Cookie不予覆盖,导致修改、删除失败。
  39. */
  40. @RequestMapping("/editCookie")
  41. public void editCookie(HttpServletRequest request,HttpServletResponse response,String name,String value){
  42. Cookie[] cookies = request.getCookies();
  43. if (null==cookies) {
  44. System.out.println("没有cookie==============");
  45. } else {
  46. for(Cookie cookie : cookies){
  47. if(cookie.getName().equals(name)){
  48. System.out.println("原值为:"+cookie.getValue());
  49. cookie.setValue(value);
  50. cookie.setPath("/");
  51. cookie.setMaxAge(30 * 60);// 设置为30min
  52. System.out.println("被修改的cookie名字为:"+cookie.getName()+",新值为:"+cookie.getValue());
  53. response.addCookie(cookie);
  54. break;
  55. }
  56. }
  57. }
  58. }
  59. /**
  60. * 删除cookie
  61. * @param request
  62. * @param response
  63. * @param name
  64. */
  65. @RequestMapping("/delCookie")
  66. public void delCookie(HttpServletRequest request,HttpServletResponse response,String name){
  67. Cookie[] cookies = request.getCookies();
  68. if (null==cookies) {
  69. System.out.println("没有cookie==============");
  70. } else {
  71. for(Cookie cookie : cookies){
  72. if(cookie.getName().equals(name)){
  73. cookie.setValue(null);
  74. cookie.setMaxAge(0);// 立即销毁cookie
  75. cookie.setPath("/");
  76. System.out.println("被删除的cookie名字为:"+cookie.getName());
  77. response.addCookie(cookie);
  78. break;
  79. }
  80. }
  81. }
  82. }
复制代码
通常开发时先用以下的代码将获取的cookie进行封装
  1. /**
  2. * 根据名字获取cookie
  3. * @param request
  4. * @param name cookie名字
  5. * @return
  6. */
  7. public Cookie getCookieByName(HttpServletRequest request,String name){
  8. Map<String,Cookie> cookieMap = ReadCookieMap(request);
  9. if(cookieMap.containsKey(name)){
  10. Cookie cookie = (Cookie)cookieMap.get(name);
  11. return cookie;
  12. }else{
  13. return null;
  14. }
  15. }
  16. /**
  17. * 将cookie封装到Map里面
  18. * @param request
  19. * @return
  20. */
  21. private Map<String,Cookie> ReadCookieMap(HttpServletRequest request){
  22. Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
  23. Cookie[] cookies = request.getCookies();
  24. if(null!=cookies){
  25. for(Cookie cookie : cookies){
  26. cookieMap.put(cookie.getName(), cookie);
  27. }
  28. }
  29. return cookieMap;
  30. }
复制代码

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-8 15:37

Copyright 2015-2025 djqfx

返回顶部