Share this page 

Access Cookies from a Java AppletTag(s): Javascript interaction


This Applet uses the package netscape.javascript.JSObject.

To compile such program, you have to include in the CLASSPATH a special jar included in the JRE installation.

For Java 1.4.2 and later: add plugin.jar to your classpath when compiling. It can be found in the lib directory of your JRE installation, ex. C:\Program Files\Java\jre1.5.0\lib\plugin.jar

NOTE : For Java 1.4.0/1.4.1: use jaws.jar (same directory).

[HTML file (testCookie.html)]

<HTML><HEAD></HEAD><BODY>
<APPLET CODE=TestCookie.class 
   MAYSCRIPT 
      HEIGHT=150 
       WIDTH=200>
</APPLET></BODY></HTML>

[Java applet (TestCookie.java)]

import netscape.javascript.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class TestCookie extends Applet 
    implements ActionListener {
  TextField tf1, tf2;
  Button b1, b2, b3;


  public void init() {
    tf1 = new TextField(20);
    tf2 = new TextField(20);
    
    b1 = new Button("Write Cookie");
    b2 = new Button("Read Cookie");
    b3 = new Button("Delete Coookie");
    
    setLayout(new FlowLayout());
    add(tf1);
    add(tf2);
    add(b1);
    add(b2);
    add(b3);
    
    b1.addActionListener(this);
    b2.addActionListener(this);
    b3.addActionListener(this);
    }
    
  public void actionPerformed(ActionEvent ae) {
    if (ae.getSource() == b1) {
       /*  
       **  write a cookie
       **    computes the expiration date, good for 1 month
       */
       java.util.Calendar c = java.util.Calendar.getInstance();
       c.add(java.util.Calendar.MONTH, 1);
       String expires = "; expires=" + c.getTime().toString();

       String s1 = tf1.getText() + expires; 
       System.out.println(s1);
        
       JSObject myBrowser = JSObject.getWindow(this);
       JSObject myDocument =  (JSObject) myBrowser.getMember("document");
    
       myDocument.setMember("cookie", s1);
       }

    if (ae.getSource() == b2) {
       /*
       **   read a cookie
       */
       tf2.setText(getCookie());
       }

    if (ae.getSource() == b3) {
       /*
       **  delete a cookie, set the expiration in the past
       */
       java.util.Calendar c = java.util.Calendar.getInstance();
       c.add(java.util.Calendar.MONTH, -1);
       String expires = "; expires=" + c.getTime().toString();

       String s1 = tf1.getText() + expires; 
       JSObject myBrowser = JSObject.getWindow(this);
       JSObject myDocument =  (JSObject) myBrowser.getMember("document");
       myDocument.setMember("cookie", s1);
       }
    }

    public String getCookie() {
      /*
      ** get all cookies for a document
      */
      try {
        JSObject myBrowser = (JSObject) JSObject.getWindow(this);
        JSObject myDocument =  (JSObject) myBrowser.getMember("document");
        String myCookie = (String)myDocument.getMember("cookie");
        if (myCookie.length() > 0) 
           return myCookie;
        }
      catch (Exception e){
        e.printStackTrace();
        }
      return "?";
      }

     public String getCookie(String name) {
       /*
       ** get a specific cookie by its name, parse the cookie.
       **    not used in this Applet but can be useful
       */
       String myCookie = getCookie();
       String search = name + "=";
       if (myCookie.length() > 0) {
          int offset = myCookie.indexOf(search);
          if (offset != -1) {
             offset += search.length();
             int end = myCookie.indexOf(";", offset);
             if (end == -1) end = myCookie.length();
             return myCookie.substring(offset,end);
             }
          else 
            System.out.println("Did not find cookie: "+name);
          }
        return "";
        }
}
You can try it here.

See this text file with some useful Javascript functions for cookies handling.

Check this How-to to detect if Cookies are enabled or not.