- From: Anselm Baird_Smith <abaird@www43.inria.fr>
- Date: Tue, 18 Feb 1997 17:48:58 +0100 (MET)
- To: www-jigsaw@w3.org
I thought I would share that latest hack. It's an extension to SSI include that provides access to any cookies of the request; to install it: a) copy attached file in w3c.jigsaw.ssi b) Add the CookieCommand in the DefaultCommandRegistry c) compile w3c.jigsaw.ssi d) have fun ! The new 'cookie' command has two forms: <!--#cookie get="cookie-name" alt="alt" --> <!--#cookie if="cookie-name" then="then" alt="alt" --> The first form will expand to the cookie-name value (if defined) or to alt otherwise. The second form will expand to 'then' if cookie-name is defined, 'alt' otherwise. One nice trick is to handle customizable pages through things like: <body bgcolor=<!--#cookie get="background" alt="white" -->> You'll have to write a form that sets the cookie though (or use the w3c.jigsaw.contrib.HeaderFilter, if you just want to play) Anselm. ----- CookieCommand.java package w3c.jigsaw.ssi; import java.util.*; import w3c.www.http.*; import w3c.jigsaw.http.*; import w3c.jigsaw.resources.*; import w3c.util.*; /** * Cookies access from server side includes. * Powerfull thingy ! */ public class CookieCommand implements Command { private final static String NAME = "cookie"; private static final boolean debug = true; private static final String[] keys = { "get", // get=<cookie-name> alt=<content> "if", // if=<cookie-name> then=<content> alt=<content> "alt", "then" }; public String getName() { return NAME; } public Reply execute(SSIResource resource , Request request , ArrayDictionary parameters , Dictionary variables) { Object values[] = parameters.getMany(keys); String pget = (String) values[0]; String pif = (String) values[1]; String palt = (String) values[2]; String pthen = (String) values[3]; if ( debug ) System.out.println("cookie: get="+pget +", if="+pif +", alt="+palt +", then="+pthen); String content = null; if ( pget != null ) { // Try acessing that cookie value: HttpCookieList list = request.getCookie(); HttpCookie cookie = null; if ( list != null ) cookie = list.getCookie(pget); content = (cookie == null) ? palt : cookie.getValue(); } else if ( pif != null ) { HttpCookieList list = request.getCookie(); HttpCookie cookie = null; if ( list != null ) cookie = list.getCookie(pif); content = (cookie != null) ? pthen : palt; } // We are NOT doing notMod hack here (tricky and useless ?) Reply reply = resource.createCommandReply(request, HTTP.OK); reply.setContent(content); return reply; } }
Received on Tuesday, 18 February 1997 11:49:00 UTC