obtenido de aqui
Yes, you can. Not using org.w3c.dom, but something called 'LiveConnect'.
LiveConnect allows you to interact with the browser's DOM from within
the applet. It's sort of using JavaScript from within Java.
<http://wp.netscape.com/eng/mozilla/3.0/handbook/plugins/>
The class below shows an applet setting and reading a cookie. Also
included a HTML doc demonstrating the applet.
Some points for using and compiling:
1) To be able to use a 'LiveConnect' applet, the attribute "MAYSCRIPT"
is required in the <applet> tag.
2) To compile, you need to include 'plugin.jar' in the classpath; this
contains the netscape.javascript.JSObject class. 'plugin.jar' can be
found in the 'lib' directory of your JRE, e.g. C:\Program
Files\Java\j2re1.4.2\lib\plugin.jar
3) It's likely not to work with Microsoft's VM, but only with browsers
with Sun's Java plugin. (tried it successfully with Mozilla and IE6 with
the jre1.5 plugin)
4) To see what the applet is printing, open the Java console.
5) For a session cookie: if you don't specify an expires=<gmtDate> for
the cookie, the browser will remove the cookie at end of session. If you
want to set expiration, you'll need to enhance the applet's setCookie method
---------File: SGCookie.java --------------
import java.applet.Applet;
import netscape.javascript.JSException;
import netscape.javascript.JSObject;
/**
* Demonstration of setting cookies from within an applet.
* <p>
* To be able to use this applet, the attribute "MAYSCRIPT" is required
* in the applet tag, e.g.
* <pre>
* <applet
* code="SGCookie.class"
* codebase="."
* name="cookieApp"
* MAYSCRIPT
* >
* </applet>
* </pre>
*/
public class SGCookie extends Applet
{
private JSObject window;
private JSObject document;
public void init()
{
// Get a reference to the DOM window and document objects
try
{
window = JSObject.getWindow(this);
System.out.println("init()\twindow=" + window);
document = (JSObject) window.getMember("document");
System.out.println("init()\tdocument=" + document);
}
catch (JSException ex)
{
// We couldn't get reference to either object
ex.printStackTrace();
}
}
public void setCookie(String name, String value)
{
if (document == null)
{
// init() failed to obtain a reference to document object.
System.out.println("Can't set cookie: no document reference");
return;
}
try
{
/*
* should do here checks to ensure name and value don't contain
* invalid characters and name is not an empty string
* ...
*/
String cookieText = name + "=" + value;
System.out.println("Setting document.cookie = \""
+ cookieText + '"');
// Set document member "cookie" to cookieText
// Similar to Javascript document.cookie = "name=value";
document.setMember("cookie", cookieText);
// Read document cookies; This might return multiple
// name=value pairs separated by ';' (a document can
// have more than one cookie)
// Similar to Javascript cookies = document.cookie;
Object cookies = document.getMember("cookie");
System.out.println("Got document.cookie = \"" + cookies + '"');
}
catch (JSException ex)
{
// Something went wrong
ex.printStackTrace();
}
}
}
---------------------------------------
---------File: demo.html --------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Set Cookie With Java Applet</title>
</head>
<body>
<h1>Set Cookie With Java Applet</h1>
<form name="myForm">
Cookie name: <input Type="text" value="foo" name="cookieName">
= value: <input Type="text" value="bar" name="cookieValue">
<input Type="button" value="Set Cookie"
onClick="document.cookieApp.setCookie(document.myF orm.cookieName.value,
document.myForm.cookieValue.value)">
</form>
<!-- The MAYSCRIPT attribute is required in order for the Java methods
to be available to the JavaScript functions. -->
<applet code="SGCookie.class" codebase="." name="cookieApp" MAYSCRIPT>
</applet>
</body>
</html>
---------------------------------------
--
Regards,
Roland de Ruiter
Yes, you can. Not using org.w3c.dom, but something called 'LiveConnect'.
LiveConnect allows you to interact with the browser's DOM from within
the applet. It's sort of using JavaScript from within Java.
<http://wp.netscape.com/eng/mozilla/3.0/handbook/plugins/>
The class below shows an applet setting and reading a cookie. Also
included a HTML doc demonstrating the applet.
Some points for using and compiling:
1) To be able to use a 'LiveConnect' applet, the attribute "MAYSCRIPT"
is required in the <applet> tag.
2) To compile, you need to include 'plugin.jar' in the classpath; this
contains the netscape.javascript.JSObject class. 'plugin.jar' can be
found in the 'lib' directory of your JRE, e.g. C:\Program
Files\Java\j2re1.4.2\lib\plugin.jar
3) It's likely not to work with Microsoft's VM, but only with browsers
with Sun's Java plugin. (tried it successfully with Mozilla and IE6 with
the jre1.5 plugin)
4) To see what the applet is printing, open the Java console.
5) For a session cookie: if you don't specify an expires=<gmtDate> for
the cookie, the browser will remove the cookie at end of session. If you
want to set expiration, you'll need to enhance the applet's setCookie method
---------File: SGCookie.java --------------
import java.applet.Applet;
import netscape.javascript.JSException;
import netscape.javascript.JSObject;
/**
* Demonstration of setting cookies from within an applet.
* <p>
* To be able to use this applet, the attribute "MAYSCRIPT" is required
* in the applet tag, e.g.
* <pre>
* <applet
* code="SGCookie.class"
* codebase="."
* name="cookieApp"
* MAYSCRIPT
* >
* </applet>
* </pre>
*/
public class SGCookie extends Applet
{
private JSObject window;
private JSObject document;
public void init()
{
// Get a reference to the DOM window and document objects
try
{
window = JSObject.getWindow(this);
System.out.println("init()\twindow=" + window);
document = (JSObject) window.getMember("document");
System.out.println("init()\tdocument=" + document);
}
catch (JSException ex)
{
// We couldn't get reference to either object
ex.printStackTrace();
}
}
public void setCookie(String name, String value)
{
if (document == null)
{
// init() failed to obtain a reference to document object.
System.out.println("Can't set cookie: no document reference");
return;
}
try
{
/*
* should do here checks to ensure name and value don't contain
* invalid characters and name is not an empty string
* ...
*/
String cookieText = name + "=" + value;
System.out.println("Setting document.cookie = \""
+ cookieText + '"');
// Set document member "cookie" to cookieText
// Similar to Javascript document.cookie = "name=value";
document.setMember("cookie", cookieText);
// Read document cookies; This might return multiple
// name=value pairs separated by ';' (a document can
// have more than one cookie)
// Similar to Javascript cookies = document.cookie;
Object cookies = document.getMember("cookie");
System.out.println("Got document.cookie = \"" + cookies + '"');
}
catch (JSException ex)
{
// Something went wrong
ex.printStackTrace();
}
}
}
---------------------------------------
---------File: demo.html --------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Set Cookie With Java Applet</title>
</head>
<body>
<h1>Set Cookie With Java Applet</h1>
<form name="myForm">
Cookie name: <input Type="text" value="foo" name="cookieName">
= value: <input Type="text" value="bar" name="cookieValue">
<input Type="button" value="Set Cookie"
onClick="document.cookieApp.setCookie(document.myF orm.cookieName.value,
document.myForm.cookieValue.value)">
</form>
<!-- The MAYSCRIPT attribute is required in order for the Java methods
to be available to the JavaScript functions. -->
<applet code="SGCookie.class" codebase="." name="cookieApp" MAYSCRIPT>
</applet>
</body>
</html>
---------------------------------------
--
Regards,
Roland de Ruiter
No hay comentarios:
Publicar un comentario