📄 cookiefilter.java
字号:
// CookieFilter.java// $Id: CookieFilter.java,v 1.6 2000/08/17 10:18:01 ylafon Exp $// (c) COPYRIGHT MIT and INRIA, 1996.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.jigsaw.filters;import java.net.URL;import org.w3c.tools.resources.Attribute;import org.w3c.tools.resources.AttributeHolder;import org.w3c.tools.resources.AttributeRegistry;import org.w3c.tools.resources.FramedResource;import org.w3c.tools.resources.IntegerAttribute;import org.w3c.tools.resources.ProtocolException;import org.w3c.tools.resources.ReplyInterface;import org.w3c.tools.resources.RequestInterface;import org.w3c.tools.resources.ResourceFilter;import org.w3c.tools.resources.ResourceFrame;import org.w3c.www.http.HttpCookie;import org.w3c.www.http.HttpCookieList;import org.w3c.www.http.HttpFactory;import org.w3c.www.http.HttpMessage;import org.w3c.www.http.HttpSetCookie;import org.w3c.www.http.HttpSetCookieList;import org.w3c.jigsaw.frames.HTTPFrame;import org.w3c.jigsaw.http.Reply;import org.w3c.jigsaw.http.Request;/** * A demo for how to use cookies from Jigsaw. */public class CookieFilter extends ResourceFilter { public static final String NAME = "org.w3c.jigsaw.filters.counter"; /** * Attribute index - The duration of the cookie. */ protected static int ATTR_COOKIE_MAXAGE = -1; static { Class c = null; Attribute a = null; try { c = Class.forName("org.w3c.jigsaw.filters.CookieFilter"); } catch (Exception ex) { ex.printStackTrace(); System.exit(1); } a = new IntegerAttribute("cookie-maxage" , new Integer(20) , Attribute.EDITABLE); ATTR_COOKIE_MAXAGE = AttributeRegistry.registerAttribute(c, a); } /** * Get the cookie's allowed max age. * @return The max allowed age in seconds. */ public int getCookieMaxAge() { return getInt(ATTR_COOKIE_MAXAGE, 20); } /** * @return A Reply instance, if the filter did know how to answer * the request without further processing, <strong>null</strong> * otherwise. * @exception org.w3c.tools.resources.ProtocolException * If processing should be interrupted, * because an abnormal situation occured. */ public ReplyInterface ingoingFilter(RequestInterface request) throws ProtocolException { return null; } /** * @param request The original request. * @param reply It's original reply. * @return A Reply instance, or <strong>null</strong> if processing * should continue normally. * @exception ProtocolException If processing should be interrupted, * because an abnormal situation occured. */ public ReplyInterface outgoingFilter(RequestInterface req, ReplyInterface rep) throws ProtocolException { Request request = (Request) req; Reply reply = (Reply) rep; int count = 1; HttpCookieList cookies = request.getCookie(); // Display and get available count: if ( cookies != null ) { HttpCookie c = cookies.getCookie(NAME); if ( c != null ) { System.out.println("cookie-count="+c.getValue()); try { count = Integer.parseInt(c.getValue())+1; } catch (Exception ex) { } } } String strcount = Integer.toString(count); // Set cookie with next value: FramedResource frame = (FramedResource) getResource(); if (frame instanceof HTTPFrame) { HTTPFrame target = (HTTPFrame) frame; HttpSetCookieList setcookies = HttpFactory.makeSetCookieList(null); HttpSetCookie setcookie = setcookies.addSetCookie(NAME, strcount); setcookie.setMaxAge(getCookieMaxAge()); URL url = target.getURL(request); setcookie.setPath(url.getFile()); setcookie.setDomain(url.getHost()); reply.setSetCookie(setcookies); reply.addNoCache("Set-Cookie"); } return null; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -