⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cachecontrolheader.java

📁 一个简单的visio程序。
💻 JAVA
字号:

package servlet.http;

import java.util.*;

public class CacheControlHeader
{

    public CacheControlHeader()
    {
        this(null);
    }

    public CacheControlHeader(String s)
    {
        nullDirective = "XXX_NULL_HEADER";
        directives = new Hashtable(10);
        if(s != null)
            parse(s);
    }

    public void parse(String s)
    {
        int i = s.length();
        byte abyte0[] = new byte[i];
        s.getBytes(0, i, abyte0, 0);
        boolean flag = false;
        int j = 0;
        for(int k = 0; k < i; k++)
        {
            char c = (char)abyte0[k];
            if(c == '"')
                flag = !flag;
            else
            if(c == ',' && !flag)
            {
                parseDirective(abyte0, j, k);
                j = k + 1;
            }
            else
            if(k == i - 1)
                parseDirective(abyte0, j, k + 1);
        }

    }

    private void parseDirective(byte abyte0[], int i, int j)
    {
        for(; abyte0[i] == 32 || abyte0[i] == 9; i++);
        int k;
        for(k = i; k < j; k++)
            if(abyte0[k] == 61 || abyte0[k] == 32 || abyte0[k] == 9)
                break;

        String s = new String(abyte0, 0, i, k - i).toLowerCase();
        Vector vector = new Vector(10);
        if(k != j)
            while(k < j) 
            {
                while(k < j && (abyte0[k] == 32 || abyte0[k] == 61 || abyte0[k] == 9 || abyte0[k] == 44 || abyte0[k] == 34)) 
                    k++;

                i = k;
                for(; k < j && abyte0[k] != 32 && abyte0[k] != 61 && abyte0[k] != 9 && abyte0[k] != 44 && abyte0[k] != 34; k++);
                if(i != k)
                {
                    String s1 = new String(abyte0, 0, i, k - i).toLowerCase();
                    vector.addElement(s1);
                }
            }

        directives.put(s, vector);
    }

    public void addStringDirective(String s, String s1)
    {
        s = s.toLowerCase();
        s1 = s1.toLowerCase();
        Object obj = directives.get(s);
        if(obj == null || !(obj instanceof Vector))
        {
            obj = new Vector(10);
            directives.put(s, obj);
        }
        ((Vector)obj).addElement(s1);
    }

    public void setDirective(String s)
    {
        s = s.toLowerCase();
        directives.put(s, nullDirective);
    }

    public void setStringDirective(String s, String s1)
    {
        s = s.toLowerCase();
        s1 = s1.toLowerCase();
        Vector vector = new Vector(10);
        vector.addElement(s1);
        directives.put(s, vector);
    }

    public void setIntDirective(String s, int i)
    {
        setStringDirective(s, String.valueOf(i));
    }

    public Enumeration getStringDirective(String s)
    {
        s = s.toLowerCase();
        Object obj = directives.get(s);
        if(obj == null || !(obj instanceof Vector))
        {
            obj = new Vector(10);
            directives.put(s, obj);
        }
        return ((Vector)obj).elements();
    }

    public int getIntDirective(String s)
    {
        s = s.toLowerCase();
        Object obj = directives.get(s);
        if(obj == null || !(obj instanceof Vector))
            return 0;
        if(((Vector)obj).size() < 1)
            return 0;
        String s1 = (String)((Vector)obj).elementAt(0);
        try
        {
            return Integer.parseInt(s1);
        }
        catch(NumberFormatException ex)
        {
            return 0;
        }
    }

    public boolean isDirectiveSet(String s)
    {
        s = s.toLowerCase();
        Object obj = directives.get(s);
        return obj != null;
    }

    public String toString()
    {
        Enumeration enumeration = directives.keys();
        StringBuffer stringbuffer = null;
        while(enumeration.hasMoreElements()) 
        {
            String s = (String)enumeration.nextElement();
            Object obj = directives.get(s);
            if(stringbuffer == null)
                stringbuffer = new StringBuffer(s);
            else
                stringbuffer.append("," + s);
            if(obj != nullDirective && (obj instanceof Vector))
            {
                boolean flag = true;
                Enumeration enumeration1 = ((Vector)obj).elements();
                if(enumeration1.hasMoreElements())
                {
                    while(enumeration1.hasMoreElements()) 
                    {
                        String s1 = (String)enumeration1.nextElement();
                        if(flag)
                        {
                            if(((Vector)obj).size() == 1)
                                try
                                {
                                    Integer.valueOf(s1);
                                    stringbuffer.append("=" + s1);
                                    break;
                                }
                                catch(NumberFormatException ex) {}
                            stringbuffer.append("=\"" + s1);
                            flag = false;
                        }
                        else
                        {
                            stringbuffer.append("," + s1);
                        }
                    }

                    if(!flag)
                        stringbuffer.append("\"");
                }
            }
        }

        return stringbuffer.toString();
    }

    private Hashtable directives;
    private String nullDirective;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -