Java applet 写客户端 cookie

    在做web应用中遇到需要保留客户上次输入的信息的需求,于是就想用保留到客户端 cookie 中来实现。

   使用JavaApplet 写客户端cookie,

  1. import netscape.javascript.JSObject;
  2. ......
  3. /** 
  4.  * 功能:设置 cookies 
  5.  * @param ckdir
  6.  * @author peter
  7. * end = myCookie.length();
  8.  */
  9. public void setCookie(String ckdir) {
  10.     JSObject myBrowser = JSObject.getWindow(this);
  11.     JSObject myDocument = (JSObject) myBrowser.getMember("document");
  12.     myDocument.setMember("cookie", ckdir);
  13.     System.out.println("set cookies :" + ckdir);
  14. }
  15. /**
  16.  * 功能:获取所有的 cookies
  17.  */
  18. public String getCookie() {
  19.     try {
  20.         JSObject myBrowser = (JSObject) JSObject.getWindow(this);
  21.         JSObject myDocument=(JSObject)myBrowser.getMember("document");
  22.     String myCookie = (String) myDocument.getMember("cookie");
  23.     if (myCookie.length() > 0){
  24.             return myCookie;
  25.     } catch (Exception e) {
  26.         e.printStackTrace();
  27.     }
  28.     return "?";
  29. }
  30. /**
  31.  * 功能:根据name获取对应的cookies,
  32.  * cookie的格式:ckdir=e:/dataout; expires=Tue Mar 13 17:32:15 CST 2018
  33.  */
  34. public String getCookie(String name) {
  35.     String myCookie = getCookie();
  36.     String search = name + "=";
  37.     if (myCookie.length() > 0) {
  38.         int offset = myCookie.indexOf(search);
  39.     if (offset != -1) {
  40.             offset += search.length();
  41.         int end = myCookie.indexOf(";", offset);
  42.         if (end == -1){
  43.                 end = myCookie.length();
  44.             }
  45.         return myCookie.substring(offset, end);
  46.     } else {
  47.         System.out.println("没有发现cookies: " + name);
  48.     }
  49.     }
  50.     return "";
  51. }
  52. ......

在客户端(使用IE7.0)加载 applet时出错,查看java控制台信息如下:

 

Java(TM) Plug-in: 版本 1.4.2
使用 JRE 版本 1.4.2 Java HotSpot(TM) Client VM
用户主目录 = C:/Documents and Settings/Administrator

代理配置:没有代理

 

 

----------------------------------------------------
c:   清除控制台窗口
f:   终结在结束队列上的物件
g:   垃圾收集
h:   显示此帮助消息
l:   转储类载入程序列表
m:   打印内存使用
o:   触发日志记录
p:   重新载入代理配置
q:   隐藏控制台
r:   重新载入策略配置
s:   转储系统属性
t:   转储线程列表
v:   转储线程堆栈
x:   清除类载入程序高速缓存
0-5: 设置跟踪级别为<n>
----------------------------------------------------
java.lang.NullPointerException

 at sun.plugin.viewer.context.IExplorerAppletContext.getJSObject(Unknown Source)

 at sun.plugin.AppletViewer.getDocumentBase(Unknown Source)

 at sun.plugin.AppletViewer.getCodeBase(Unknown Source)

 at sun.plugin.AppletViewer.appletInit(Unknown Source)

 at sun.plugin.viewer.LifeCycleManager.initAppletPanel(Unknown Source)

 at sun.plugin.viewer.IExplorerPluginObject$Initer.run(Unknown Source)

netscape.javascript.JSException: Unable to obtain Document object

 at sun.plugin.AppletViewer.getDocumentBase(Unknown Source)

 at sun.plugin.AppletViewer.getCodeBase(Unknown Source)

 at sun.plugin.AppletViewer.appletInit(Unknown Source)

 at sun.plugin.viewer.LifeCycleManager.initAppletPanel(Unknown Source)

 at sun.plugin.viewer.IExplorerPluginObject$Initer.run(Unknown Source)

java.lang.NullPointerException

 at sun.plugin.viewer.context.IExplorerAppletContext.getJSObject(Unknown Source)

 at sun.plugin.AppletViewer.getDocumentBase(Unknown Source)

 at sun.plugin.AppletViewer.getCodeBase(Unknown Source)

 at sun.plugin.AppletViewer.appletInit(Unknown Source)

 at sun.plugin.viewer.LifeCycleManager.initAppletPanel(Unknown Source)

 at sun.plugin.viewer.IExplorerPluginObject$Initer.run(Unknown Source)

netscape.javascript.JSException

 at netscape.javascript.JSObject.getWindow(Unknown Source)

 at com.lc.v3.itfc.ynfjinterface.dlinterface.applet.FileDownApplet2.getCookie(FileDownApplet2.java:88)

 at com.lc.v3.itfc.ynfjinterface.dlinterface.applet.FileDownApplet2.getCookie(FileDownApplet2.java:103)

 at com.lc.v3.itfc.ynfjinterface.dlinterface.applet.FileDownApplet2.getTextField1(FileDownApplet2.java:224)

 at com.lc.v3.itfc.ynfjinterface.dlinterface.applet.FileDownApplet2.init(FileDownApplet2.java:299)

 at sun.applet.AppletPanel.run(AppletPanel.java:353)

 at java.lang.Thread.run(Thread.java:534)

netscape.javascript.JSException

 at netscape.javascript.JSObject.getWindow(Unknown Source)

 

 

由于上面的错误就无法写入和获取cookie的值。

 

 

原因:

    客户端的 sun java 版本太旧。

解决方法:

    更新客户端的 sun java 版本。

   

   从下面的链接可以检测当前的 java 版本 http://java.com/zh_CN/download/installed.jsp

 

   从下面的链接可以找到 java 的最新版本 http://www.java.com/en/download/manual.jsp 

 

更新以后,运行正常。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值