仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1040|回复: 19
打印 上一主题 下一主题

[学习教程] 发布一篇cookie手艺在Java ME平台的使用与完成

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:34:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
主要缺点就是:速度比较慢,没有C和C++快
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;
/**
*acookiestoredonthemobiledevice,cookieisusedtomaintainthestatesbetweenclientandserver
*@authormingjava
*@version0.105/06/2006
*/
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;
result=result*37+path.hashCode();
result=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平台的使用。在《JavaME中心手艺与最好理论》一书中,自己编写了一个httpme联网框架,个中包含了cookie在javame平台的完成,供人人参考。

但是一些大型开发或者是保密型比较高的项目都会用java,原因有2点,一:java是开源的,不怕别人留后门,偷我工具,.net网页编程就不一样了,保持微软的一向风格,源代码不公开
变相怪杰 该用户已被删除
沙发
发表于 2015-1-21 10:17:04 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
分手快乐 该用户已被删除
板凳
发表于 2015-1-30 14:55:22 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
地板
发表于 2015-2-6 13:29:05 | 只看该作者
是一种为 Internet发展的计算机语言
小女巫 该用户已被删除
5#
发表于 2015-2-9 23:32:42 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
再见西城 该用户已被删除
6#
发表于 2015-2-10 04:27:26 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
若相依 该用户已被删除
7#
发表于 2015-2-12 17:51:14 | 只看该作者
是一种为 Internet发展的计算机语言
透明 该用户已被删除
8#
发表于 2015-3-2 15:36:16 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
不帅 该用户已被删除
9#
发表于 2015-3-6 20:20:39 | 只看该作者
是一种为 Internet发展的计算机语言
爱飞 该用户已被删除
10#
发表于 2015-3-11 14:44:19 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
灵魂腐蚀 该用户已被删除
11#
发表于 2015-3-13 22:07:24 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
柔情似水 该用户已被删除
12#
发表于 2015-3-20 19:47:19 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
海妖 该用户已被删除
13#
发表于 2015-3-24 07:41:13 | 只看该作者
是一种使用者不需花费很多时间学习的语言
小魔女 该用户已被删除
14#
发表于 2015-3-27 12:09:52 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
再现理想 该用户已被删除
15#
发表于 2015-4-8 09:14:38 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
若天明 该用户已被删除
16#
发表于 2015-4-13 14:23:59 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
飘飘悠悠 该用户已被删除
17#
发表于 2015-4-21 19:52:08 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
飘灵儿 该用户已被删除
18#
发表于 2015-4-22 05:49:47 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
小妖女 该用户已被删除
19#
发表于 2015-4-23 02:10:57 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
冷月葬花魂 该用户已被删除
20#
发表于 2015-4-29 15:57:38 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 16:50

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表