热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java读取和写入浏览器Cookies

首先我们认识下什么是cookies:cookie实际上是一个存在你硬盘里的数据,但是这些数据很特殊,只能由web应用提交给浏览器帮助存储,并且我们还能读取浏览器存在本地的cooki

首先我们认识下什么是COOKIEs:

COOKIE实际上是一个存在你硬盘里的数据,但是这些数据很特殊,只能由web应用提交给浏览器帮助存储,并且我们还能读取浏览器存在本地的COOKIE

web应用一般只在COOKIE中存储一些用户信息等少量且暂时的数据,数据量大则不适合存储在COOKIEs

 


 

一般浏览器对于每个web应用会分别给予他们40个COOKIE用来存储数据,并且每个COOKIE的大小不超过4K(听说部分浏览器的COOKIE能存很大的数据,不过我们一般不会存这么大的数据,因为数据提取的效率不高,影响性能)

说了这么多废话,然后重点终于来了

java通过httpServletRequest接口来访问浏览器请求中的COOKIEs数据(这里先了解一下COOKIEs来龙去脉,代码待会一并给出)

每个COOKIE有两个属性:键 ,值(无特定格式字符串,所以可以diy存数据,不过要注意URL编码问题,编码问题待会和代码一同讲)

如果我们需要存储新的COOKIE我们可以new一个COOKIE实例 并通过httpservletRsponse提交到浏览器,进而存储到本地

下面给出COOKIE的一个通用类

 

/*
 * 该类可以从浏览器请求中提取出COOKIEs并进行对cookis的相关操作
 * 
 */

public class COOKIEsUtil extends BaseController {
    
    /**
     * 根据名字获取COOKIE
     * 
     * @param request
     * @param name
     *            COOKIE名字
     * @return
     */
    public static COOKIE getCOOKIEByName(HttpServletRequest request, String name) {
        Map COOKIEMap = ReadCOOKIEMap(request);
        if (COOKIEMap.containsKey(name)) {
            COOKIE COOKIE = (COOKIE) COOKIEMap.get(name);
            return COOKIE;
        } else {
            return null;
        }
    }

    /**
     * 将COOKIE封装到Map里面
     * 
     * @param request
     * @return
     */
    private static Map ReadCOOKIEMap(HttpServletRequest request) {
        Map COOKIEMap = new HashMap();
        COOKIE[] COOKIEs = request.getCOOKIEs();
        if (null != COOKIEs) {
            for (COOKIE COOKIE : COOKIEs) {
                COOKIEMap.put(COOKIE.getName(), COOKIE);
            }
        }
        return COOKIEMap;
    }

    /**
     * 保存COOKIEs
     * 
     * @param response
     *            servlet请求
     * @param value
     *            保存值
     * @author jxf
     */
    public static HttpServletResponse setCOOKIE(HttpServletResponse response, String name, String value,int time) {
        // new一个COOKIE对象,键值对为参数
        COOKIE COOKIE = new COOKIE(name, value);
        // tomcat下多应用共享
        COOKIE.setPath("/");
        // 如果COOKIE的值中含有中文时,需要对COOKIE进行编码,不然会产生乱码
        try {
            URLEncoder.encode(value, "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        COOKIE.setMaxAge(time);
        // 将COOKIE添加到Response中,使之生效
        response.addCOOKIE(COOKIE); // addCOOKIE后,如果已经存在相同名字的COOKIE,则最新的覆盖旧的COOKIE
        return response;
    }

 

 

 

有了上面的通用类我们可以读取和新建COOKIE了,在这里我还要提一点:新建COOKIE的名字如果浏览器已经存在,则不再重复添加,会覆盖之前的COOKIE

 

浏览器如何查看请求的COOKIE和返回的COOKIE呢?拿Google浏览器举个栗子

java读取和写入浏览器COOKIEs

 

然后就是我们可能需要对COOKIE进行删除操作

 

 1 /**
 2      * 

删除无效COOKIE

3 *

无效☞1.过时 2.未发布

4 * @param request 5 * @param response 6 * @param list 7 */ 8 private void delectCOOKIEByName(HttpServletRequest request, HttpServletResponse response,String deleteKey) throws NullPointerException {
12 Map COOKIEMap = ReadCOOKIEMap(request);
17 for (String key : COOKIEMap.keySet()) { 18 if(key==deleteKey && key.equals(deleteKey)) { 19 COOKIE COOKIE = COOKIEMap.get(key);
21 COOKIE.setMaxAge(0);//设置COOKIE有效时间为0 22 COOKIE.setPath("/");//不设置存储路径 23 response.addCOOKIE(COOKIE); 24 } 25 } 26 }

 

注意删除COOKIE必须同时具备时间和路径的参数不然部分浏览器删除不了


推荐阅读
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • 为了评估精心优化的模型与策略在实际环境中的表现,Google对其实验框架进行了全面升级,旨在实现更高效、更精准和更快速的在线测试。新的框架支持更多的实验场景,提供更好的数据洞察,并显著缩短了实验周期,从而加速产品迭代和优化过程。 ... [详细]
  • 本文深入探讨了ASP.NET中ViewState、Cookie和Session三种状态管理技术的区别与应用场景。ViewState主要用于保存页面控件的状态信息,确保在多次往返服务器过程中数据的一致性;Cookie则存储在客户端,适用于保存少量用户偏好设置等非敏感信息;而Session则在服务器端存储数据,适合处理需要跨页面保持的数据。文章详细分析了这三种技术的工作原理及其优缺点,并提供了实际应用中的最佳实践建议。 ... [详细]
  • 自定义WiWiz认证页面代码实现:支持Cookie与自动登录功能优化
    针对WiWiz自带认证页面的不便之处,特别是缺乏Cookie支持导致每次认证需手动输入信息的问题,本文介绍了通过自定义认证页面代码实现支持Cookie与自动登录功能的方法,显著提升了用户体验。具体实现了记录和处理用户认证信息的功能,确保了认证过程的便捷性和高效性。 ... [详细]
  • 在进行前端JavaScript国际化(i18n)的过程中,为了从cookie中获取语言信息并动态加载相应资源,我决定将语言检测逻辑和i18n初始化代码直接嵌入到index页面中,使用了Velocity模板引擎的语法。这种方法不仅简化了代码结构,还提高了语言切换的灵活性和响应速度。 ... [详细]
  • Cookie是一种小型数据文件,由Web服务器生成并存储在用户的浏览器中。当用户再次访问同一服务器时,这些数据可以被重新读取,为用户提供个性化的体验。Cookie在软件测试中具有重要作用,能够帮助测试人员验证会话管理、用户偏好设置等功能的正确性和安全性。通过深入解析Cookie的工作原理及其在不同场景下的应用,本文旨在为软件测试人员提供全面的技术指导。 ... [详细]
  • 本文将详细介绍如何利用JMeter高效执行API接口测试,涵盖JMeter的基础介绍、安装方法、中文环境配置、主要元件及其作用域和执行顺序等内容,并分享一系列实用的测试技巧,帮助读者全面掌握JMeter接口测试的全过程。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 如何高效查看Java API和源码
    在Java学习过程中,查看API文档和源码是提高编程能力的重要手段。本文将详细介绍如何使用各种工具和方法高效地查看Java API和源码。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
author-avatar
mobiledu2502905163
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有