Here are the codes:
SessionAttrObject.java
package webcert.ch04.ex0404;
import javax.servlet.http.*;
public class SessionAttrObject implements HttpSessionBindingListener {
private
String data;
public SessionAttrObject(String val) { data = val; }
public String getData() { return data; }
public String toString() { return data; }
public void setData(String data) { this.data = data; }
public void valueBound(HttpSessionBindingEvent event) {
System.out.println(">B>B> valueBound() called for object " + getData());
}
public void valueUnbound(HttpSessionBindingEvent event) {
System.out.println(">U>U> valueUnbound() for object " + getData());
}
}
SetSessionAttributes.java
package webcert.ch04.ex0404;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SetSessionAttributes extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
response.setContentType("text/html");
out.write("<HTML><HEAD>");
out.write("<TITLE>Binding Experiment</TITLE>");
out.write("</HEAD><BODY>");
String invalidate = request.getParameter("invalidate");
HttpSession session = request.getSession();
if ("true".equals(invalidate)) {
session.invalidate();
} else {
SessionAttrObject boundObject1 = new SessionAttrObject(
"Prometheus1");
SessionAttrObject boundObject2 = new SessionAttrObject(
"Prometheus2");
session.setAttribute("bound", boundObject1);
session.setAttribute("bound2", boundObject2);
session.setAttribute("nonBound", "Icarus");
session.setAttribute("bound", boundObject2);
session.setAttribute("bound", null);
}
out.write("<BR />Check console output to see what happened...");
out.write("</BODY></HTML>");
response.flushBuffer();
}
}