1. /**
  2. * 获取Cookie里面的东西
  3. */
  4. protected List<String> getCookieList() {
  5. Cookie[] cookies = null;
  6. Cookie cookie = null;
  7. String cookieValue = null;
  8. String cookieName = null;
  9. cookies = request.getCookies();
  10. if(cookies==null){
  11. return null;
  12. }
  13. List<String> cookieList = new ArrayList<String>();
  14. for (int i = cookies.length - 1; i >= 0; i--) {
  15. cookie = cookies[i];
  16. try {
  17. cookieValue = URLDecoder.decode(cookie.getValue(),"UTF-8");
  18. } catch (UnsupportedEncodingException e) {
  19. e.printStackTrace();
  20. }
  21. cookieName = cookie.getName();
  22. int cookieNameIndex = 0;
  23. cookieNameIndex = cookieName.indexOf("search");
  24. if (cookieNameIndex != -1 && cookieValue!= null && StringUtils.isNotBlank(cookieValue)) {
  25. cookieList.add(cookieValue);
  26. }
  27. }
  28. //去重
  29. removeDuplicate(cookieList);
  30. //取记录
  31. List<String> searchList = new ArrayList<String>();
  32. int index = 0;
  33. for(int i=0;i< cookieList.size(); i++){
  34. if(index< Constants.COOKIES_NUM){
  35. searchList.add(cookieList.get(i));
  36. }
  37. index++;
  38. }
  39. return searchList;
  40. }
  41. //去重
  42. private static void removeDuplicate(List list) {
  43. for (int i = 0; i < list.size() - 1; i++) {
  44. for (int j = list.size() - 1; j > i; j--) {
  45. if (list.get(j).equals(list.get(i))) {
  46. list.remove(j);
  47. }
  48. }
  49. }
  50. }
  51. //设置
  52. protected void setCookie(String keyWord){
  53. try {
  54. //关键点
  55. keyWord = URLEncoder.encode(keyWord,"UTF-8");
  56. } catch (UnsupportedEncodingException e) { }
  57. Cookie cookie = new Cookie("search"+new Date().getTime(), keyWord);
  58. cookie.setPath("/");
  59. cookie.setMaxAge(60 * 60 * 24 * 365 * 1);
  60. response.addCookie(cookie);
  61. }
  62. //删除
  63. protected void removeCookie(){
  64. Cookie[] cookies = request.getCookies();
  65. for (Cookie cookie:cookies){
  66. cookie.setMaxAge(0);
  67. }
  68. }

如果cookie 考虑前端被禁掉的话可以考虑参考这段代码

java Cookie 获取历史记录列表(三)的更多相关文章

  1. java:struts框架2(方法的动态和静态调用,获取Servlet API三种方式(推荐IOC(控制反转)),拦截器,静态代理和动态代理(Spring AOP))

    1.方法的静态和动态调用: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCT ...

  2. Java中获取键盘输入值的三种方法

    Java中获取键盘输入值的三种方法     Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值 ...

  3. java 获取时间戳的三种方式

      java 获取时间戳的三种方式 CreationTime--2018年7月13日16点29分 Author:Marydon 1.实现方式 方式一:推荐使用 System.currentTimeMi ...

  4. Java反射机制demo(三)—获取类中的构造函数

    Java反射机制demo(三)—获取类中的构造函数 1,获取类中所有的构造函数 如下面的代码中所示,这个类中显式的构造函数有五个. 空构造: public UserInfo() 带参构造有四个: pu ...

  5. Java反射获取class对象的三种方式,反射创建对象的两种方式

    Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName ...

  6. selenium+java:获取列表中的值

    selenium+java:获取列表中的值 (2011-08-23 17:14:48) 标签: 杂谈 分类: selenium 初步研究利用java+testNg框架下写selenium测试用例,今天 ...

  7. XMPP系列(三)---获取好友列表、添加好友

    1.心跳检测.掉线重连功能 客户端和服务器端都可以设置多久发送一次心跳包,如果对方没有返回正确的pong信息,则会断开连接,而添加掉线重连功能,则会自动进行连接. 如果自己写聊天功能还得自己做心跳检测 ...

  8. XMPP系列(三)---获取好友列表、加入好友

    1.心跳检測.掉线重连功能 client和server端都能够设置多久发送一次心跳包,假设对方没有返回正确的pong信息,则会断开连接,而加入掉线重连功能,则会自己主动进行连接. 假设自己写聊天功能还 ...

  9. android 获取wifi列表,如果你忽略了这个细节,可能你的软件会崩溃

    一:业务描述 最近公司有一个小需求,用户点击wifi扫描按钮(注意:是用户主动点击wifi扫描按钮),app去扫描附近的wifi,显示在listView中,仅此而已,app都不用去连接某个wifi,看 ...

随机推荐

  1. 基于Nginx+FastDFS搭建图片文件系统

    Nginx+fastdfs:https://www.cnblogs.com/chiangchou/p/fastdfs.html#_label0_1 缩略图:https://blog.csdn.net/ ...

  2. python之动态参数 *args,**kwargs(聚合,打散--转载

    转自https://www.cnblogs.com/ellisonzhang/p/10243122.html 一.函数的动态参数 *args,**kwargs, 形参的顺序 1.你的函数,为了拓展,对 ...

  3. sql server 里的文件和文件组使用

    转自:https://www.cnblogs.com/woodytu/p/5821827.html 参考:https://www.sqlskills.com/blogs/paul/files-and- ...

  4. SSL/TSL握手过程详解

    1. Client Hello 握手第一步是客户端向服务端发送 Client Hello 消息,这个消息里包含了一个客户端生成的随机数 Random1.客户端支持的加密套件(Support Ciphe ...

  5. A Basic Example of Threads Synchronization in Python, python中的线程同步示例

    http://zulko.github.io/blog/2013/09/19/a-basic-example-of-threads-synchronization-in-python/ We will ...

  6. Spark Shuffle(ExternalSorter)

    1.Shuffle流程 spark的shuffle过程如下图所示,和mapreduce中的类似,但在spark2.0及之后的版本中只存在SortShuffleManager而将原来的HashShuff ...

  7. Spark中文文本分析建模

    实用的朴素贝叶斯模型建模 建模过程主要是把文本转化成向量然后再作分析 数据格式: ,善良 美丽 ,丑陋 阴险 卑鄙 ,温和 ....... 注:前面是给文章贴的标签,后面是文章的分词,分词可以找关于分 ...

  8. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

  9. Struct2小结:

    Action小结: 实现一个Action的最常用的方式:从ActionSupport继承: DMI动态方法调用,减少配置内容: 通配符 *_* ({1},{2})的使用更方便: 接收参数的方法(一般用 ...

  10. #ifdef和#if defined的差别

    注意两者都有个define的作用,区别在于使用方式上.前者的通常用法是:#ifdef  XXX .... #else .... #endif 只能在两者中选择是否有定义.对于后者,常用法是: #if ...