Access Cookies from a Java Applet

From CodeCodex

[edit] Implementations

[edit] Java

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 http://www.rgagnon.com/javadetails/java-0303.html How-to to detect ]if Cookies are enabled or not.