返回顶部
首页 > 资讯 > 前端开发 > node.js >J2ME平台中Cookie技术怎么用
  • 881
分享到

J2ME平台中Cookie技术怎么用

2024-04-02 19:04:59 881人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关J2ME平台中Cookie技术怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Cookie技术在J2ME平台的应用与实现Cookie在WEB应用程序

这篇文章给大家分享的是有关J2ME平台中Cookie技术怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Cookie技术在J2ME平台的应用与实现

Cookie在WEB应用程序中被广泛采用,维护浏览器和服务器之间的状态。遗憾的是这一特性在JavaME平台中并没有得到支持。因此,要想维持客户端和服务器端的状态则必须使用URL重写的方式。URL重写操作起来比较麻烦,所以研究一下cookie的原理并在JavaME平台上实现cookie是不错的尝试。

首先,我们来看一下cookie的原理。当服务器需要和浏览器维持某一状态的时候,例如需要记录用户的购物车中已经购买的商品。这时候服务器可以新建一个Cookie并把它写入到响应中,浏览器从响应中接收到cookie并保存起来。当浏览器再次向服务器发送请求的时候,浏览器会根据域(domain)和路径(path)检查是否有匹配的cookie,如果有则把cookie以“名称=值”的形式发送给服务器,服务器从请求中解析出cookie就知道用户的状态了。

那么,浏览器根据什么规则来决定向服务器发送cookie呢,首先要匹配domain,如果cookie的域属性是.Google.com,那么请求指向j2medev.com的时候,cookie就不会被发送。如果域匹配的条件满足,则判断path是否匹配,如果cookie的path属性是请求的uri的父目录的话,那么cookie就会被发送给服务器。Cookie是有存活周期的,到期的cookie会被浏览器自动清除。如果服务器创建cookie的时候不设置生命周期,那么在会话结束后浏览器就会删除cookie。如果不为cookie指定path属性,那么默认就是这次请求的路径。

cookie在很多web应用程序中都有应用,比如记住密码,购物车等。在开发MIDlet的时候,你也可以让你的应用程序支持cookie,这样维持客户端与服务器端的状态将变得简单,为你集中精力解决其他业务方法奠定了基础。既然已经知道了cookie的工作原理,那么就应该考虑一下在JavaME平台如何实现cookie,这个想法是否可行。我将从下面三个方面进行分析。

***:获得cookie

当服务器端的响应到来的时候,我们应该能够读取cookie。如果服务器向客户端写入Cookie的时候,响应中的Http头“Set-Cookie”中会包含一个字符串,代表了cookie的信息。幸运的是我们是用HttpConnection.getHeaderFiled("Set-Cookie")方法即可获得cookie,但是需要注意这里只是读取了一个cookie,如果响应中包含了多个cookie,那么你需要循环读取。类似于下面的代码

StringsCookie=null;  Stringkey=null;  inti=0;  //如果key存在,则查询header的key,如果key等于SET_COOKIE,则存储  while((key=connection.getHeaderFieldKey(i))!=null){  if(key.equals(SET_COOKIE)||key.equals(SESSIONID)){  sCookie=connection.getHeaderField(i);  saveCookie(sCookie,url);  }  i++;  }

上面的代码把header是Set-Cookie和SesssionID的cookie内容读取下来。

第二:保存cookie

已经获得了cookie之后,就需要把cookie存储下来,存储分为两个部分,首先需要解析cookie,我们定义一个JavaBean来代表cookie.

packagecom.j2medev.lomol.model;   importcom.j2medev.lomol.util.StringUtil;  importjava.io.DataInputStream;  importjava.io.DataOutputStream;  importjava.io.IOException;  importjava.util.Date;     publicclassCookie{   privateStringpath="";  privateStringname="";  privateStringvalue="";  privatelongexpire=SESSION_COOKIE;  publicstaticlongSESSION_COOKIE=0;//sessioncookie,onlyvalidthissession   publicCookie(){  }   publicStringgetPath(){  returnpath;  }   publicvoidsetPath(Stringpath){  this.path=path;  }   publicStringgetName(){  returnname;  }   publicvoidsetName(Stringname){  this.name=name;  }   publicStringgetValue(){  returnvalue;  }   publicvoidsetValue(Stringvalue){  this.value=value;  }   publicvoidserialize(DataOutputStreamdos)throwsIOException{  dos.writeUTF(name);  dos.writeUTF(value);  dos.writeUTF(path);  dos.writeLong(expire);  }   publicstaticCookiedeserialize(DataInputStreamdis)throwsIOException{  Cookiecookie=newCookie();  cookie.name=dis.readUTF();  cookie.value=dis.readUTF();  cookie.path=dis.readUTF();  cookie.expire=dis.readLong();  returncookie;  }   publiclonggetExpire(){  returnexpire;  }   publicvoidsetExpire(longexpire){  this.expire=expire;  }  //fordebug  publicStringtoString(){  returnname+"="+value+";expires="+newDate(expire).toString()+";path="+path;  }   publicbooleanisExpired(longnow){  returnexpire-now<0;  }   publicbooleanisExpired(){  returnexpire-(newDate().getTime())<0;  }   publicstaticCookieparseCookie(Strings,Stringuri){  Cookiecookie=newCookie();  StringUtilsu=newStringUtil(s,";");  while(su.hasMoreTokens()){  Stringstr=su.nextToken().trim();  inti=str.indexOf("=");  if(i==-1){  //securedonothing  continue;  }else{  Stringname=str.substring(0,i);  Stringvalue=str.substring(i+1,str.length());  if("path".equals(name)){  cookie.setPath(value);  }elseif("expires".equals(name)){  cookie.setExpire(StringUtil.getData(value));  }elseif("domain".equals(name)){  //donothing  }else{  cookie.setName(name);  cookie.setValue(value);  }  }  if(cookie.getPath().equals(""))  cookie.setPath(uri);  }  returncookie;  }   publicbooleanequals(Objectobj){  if(objinstanceofCookie){  Cookieo=(Cookie)obj;  if(o.getName().equals(name)&&o.getPath().equals(path))  returntrue;  }  returnfalse;  }   publicinthashCode(){  intresult=17;  resultresult=result*37+path.hashCode();  resultresult=result*37+name.hashCode();  returnresult;  }  }

提供了一个parseCookie方法来解析cookie,具体的原理就不再介绍了。然后需要把这个Cookie对象存储到RMS中。cookie并不大,所以不会占用太多的空间,在RMS中存储非常合适。注意对于会话期间的cookie没有必要存储在rms中,因为会话结束后就失效了,不如在内存中声明一个Map来存储会话类型的cookie。

第三:发送cookie

发送cookie也是需要两个步骤,首先检索rms和内存看是否有满足条件的cookie,如果有读取出来。然后通过下面的方法向服务器端发送

检查是否有cookie需要发送给服务器端

String_cookie=collectCookie(url);  if(_cookie!=null)  connection.setRequestProperty(COOKIE,_cookie);

如果能够顺利解决上面的三个步骤,基本可以实现cookie在javame平台的应用。

感谢各位的阅读!关于“J2ME平台中Cookie技术怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: J2ME平台中Cookie技术怎么用

本文链接: https://lsjlt.com/news/86963.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • J2ME平台中Cookie技术怎么用
    这篇文章给大家分享的是有关J2ME平台中Cookie技术怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Cookie技术在J2ME平台的应用与实现Cookie在Web应用程序...
    99+
    2024-04-02
  • 如何深入探究cookie技术在J2ME平台的应用与实现
    这篇文章给大家介绍如何深入探究cookie技术在J2ME平台的应用与实现,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。向大家简单介绍一下cookie技术在J2ME平台的应用与实现,首先...
    99+
    2024-04-02
  • 为什么要从技术平台到aPaaS平台
    这篇文章将为大家详细讲解有关为什么要从技术平台到aPaaS平台,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。互联网行业喜欢搞一些单词的缩写,最近一个朋友换工作,说是去搞aPaaS平台了,那么...
    99+
    2023-06-19
  • JavaWeb核心技术中Session与Cookie怎么使用
    本篇内容介绍了“JavaWeb核心技术中Session与Cookie怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!会话会话:用户打开...
    99+
    2023-07-05
  • 核心技术:J2ME中RMS的使用解析(转)
    核心技术:J2ME中RMS的使用解析(转)[@more@]在J2ME中,RMS作为唯一的永久性存储工具,其重要性是不言而喻的。但是很多刚刚开始学习J2ME的新人总是抱怨在这方面的资料很少,或者是针对性不强。因此,我想把自己在这方面的一些学习...
    99+
    2023-06-03
  • Java cookie和session会话技术怎么使用
    这篇文章主要介绍“Java cookie和session会话技术怎么使用”,在日常操作中,相信很多人在Java cookie和session会话技术怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-07-05
  • 私有云平台搭建需要什么技术
    私有云平台搭建需要以下技术:1. 虚拟化技术:用于在物理硬件上创建虚拟机,以支持多个操作系统和应用程序的运行。2. 存储技术:用于存...
    99+
    2023-06-12
    私有云平台搭建 私有云
  • PHP跨平台开发实践中的技术挑战
    跨平台 php 开发存在兼容性、ui 构建、性能差异、语言差异和调试/部署挑战。针对这些挑战,解决方案包括:借助 composer 管理依赖项以确保代码兼容性。使用响应式设计和跨平台 u...
    99+
    2024-05-21
    php 跨平台开发 linux bootstrap git docker composer
  • PHP跨平台开发中容器技术的应用与实践
    容器技术为 php 跨平台开发提供了诸多优势:统一环境,消除兼容性问题;可移植性,轻松打包和部署,不受操作系统或硬件限制;扩展性,方便地扩展或缩小,适应不断变化的负载;管理简便,使用容器...
    99+
    2024-05-22
    容器技术 php跨平台 mysql docker apache
  • Java 多线程同步技术详解,Windows 平台适用!
    在多线程编程中,同步是一个非常重要的概念。在多个线程同时访问共享资源的情况下,如果没有同步,就有可能会出现竞态条件和数据不一致等问题。Java 提供了多种同步技术,本文将详细介绍 Java 多线程同步技术。 synchronized 关...
    99+
    2023-09-09
    同步 windows 教程
  • Golang技术在机器学习中跨平台部署的方案
    使用 golang 实现机器学习模型的跨平台部署:优势:跨平台性、高并发性、可移植性;实战案例:部署线性回归模型;扩展:grpc/http 接口、分布式部署、模型监控。 利用 GoLa...
    99+
    2024-05-08
    机器学习 golang linux macos 分布式部署
  • C++技术中的调试:跨平台调试的最佳实践
    跨平台调试最佳实践:使用标准库,避免平台依赖。使用跨平台工具,如 gdb 或 lldb。分解复杂代码,隔离问题区域。使用调试断言检查特定条件。 C++ 技术中的调试:跨平台调试的最佳实...
    99+
    2024-05-08
    调试 c++ linux 跨平台应用 标准库
  • ASP IDE开发技术在Linux平台上的应用,你知道吗?
    随着开源的流行和Linux操作系统的普及,越来越多的开发者开始使用Linux作为他们的主要开发平台。但是,对于那些使用ASP.NET进行开发的开发者来说,这个问题一直存在:如何在Linux平台上进行ASP.NET开发?答案是使用ASP I...
    99+
    2023-06-15
    ide 开发技术 linux
  • Windows 平台下的 Javascript 开发技术,你需要知道的几个实用技巧。
    Javascript 作为一门非常流行的编程语言,已经成为了 Web 开发中不可或缺的一部分。随着技术的不断发展,Javascript 的应用范围也不断扩大,从前端到后端,从浏览器到桌面应用,Javascript 已经成为了一门非常强大的...
    99+
    2023-06-19
    开发技术 windows javascript
  • css怎么利用负margin技术实现平均布局
    这篇文章给大家分享的是有关css怎么利用负margin技术实现平均布局的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我们平常会利用float布局来解决IE浏览器CSS的兼容性问题,比如淘宝,就是用float布局来...
    99+
    2023-06-08
  • JavaScript中的DOM技术怎么用
    这篇文章主要为大家分析了JavaScript中的DOM技术怎么用的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“JavaSc...
    99+
    2024-04-02
  • VB.NET中For/Each技术怎么用
    这篇文章主要为大家展示了“VB.NET中For/Each技术怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET中For/Each技术怎么用”这篇文章吧。我们大多数开发人员在进行VB...
    99+
    2023-06-17
  • SAP云平台中怎么使用MongoDB服务
    这篇文章将为大家详细讲解有关SAP云平台中怎么使用MongoDB服务,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 使用命令行 cf marketplace查看当前SAP云平台的MongoD...
    99+
    2023-06-04
  • Ajax技术怎么用
    这篇文章主要介绍了Ajax技术怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 ajax的作用有:1、不刷新...
    99+
    2024-04-02
  • NUMA技术怎么用
    本篇文章为大家展示了NUMA技术怎么用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 在os层numa关闭时,打开bios层的numa会影响性能,QPS会下降15-30%; &n...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作