📄 cachecontrolheader.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 + -