📄 mimeheaders.java
字号:
package servlet.http;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Enumeration;
import java.util.Vector;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletOutputStream;
public class MimeHeaders
{
public MimeHeaders(int i)
{
headers = new MimeHeaderField[8];
buf = new byte[i];
}
public MimeHeaders()
{
this(512);
}
public void clear()
{
for(int i = 0; i < count; i++)
headers[i].reset();
count = 0;
}
public int size()
{
return count;
}
public Enumeration names()
{
return new MimeHeadersEnumerator(this);
}
public void putHeader(String s, String s1)
{
putHeader(s).setValue(s1);
}
public void putIntHeader(String s, int i)
{
putHeader(s).setIntValue(i);
}
public void putDateHeader(String s, long l)
{
putHeader(s).setDateValue(l);
}
public void putDateHeader(String s)
{
putHeader(s).setDateValue();
}
public String getHeader(String s)
{
MimeHeaderField mimeheaderfield = find(s);
if(mimeheaderfield != null)
return mimeheaderfield.getValue();
else
return null;
}
public String[] getHeaders(String s)
{
Vector vector = new Vector();
String as[] = null;
for(int i = 0; i < count; i++)
if(headers[i].nameEquals(s))
vector.addElement(headers[i].getValue());
if(vector.size() > 0)
{
as = new String[vector.size()];
for(int j = 0; j < as.length; j++)
as[j] = (String)vector.elementAt(j);
}
return as;
}
public int getIntHeader(String s)
throws NumberFormatException
{
MimeHeaderField mimeheaderfield = find(s);
if(mimeheaderfield != null)
return mimeheaderfield.getIntValue();
else
return -1;
}
public long getDateHeader(String s)
throws IllegalArgumentException
{
MimeHeaderField mimeheaderfield = find(s);
if(mimeheaderfield != null)
return mimeheaderfield.getDateValue();
else
return -1L;
}
public String getHeaderName(int i)
{
if(i >= 0 && i < count)
return headers[i].getName();
else
return null;
}
public String getHeader(int i)
{
if(i >= 0 && i < count)
return headers[i].getValue();
else
return null;
}
protected MimeHeaderField getField(int i)
{
if(i >= 0 && i < count)
return headers[i];
else
return null;
}
public int getFieldCount(String s)
{
int i = 0;
for(int j = 0; j < count; j++)
if(headers[j].nameEquals(s))
i++;
return i;
}
protected MimeHeaderField find(String s)
{
for(int i = 0; i < count; i++)
if(headers[i].nameEquals(s))
return headers[i];
return null;
}
public void removeHeader(String s)
{
for(int i = 0; i < count; i++)
if(headers[i].nameEquals(s))
{
MimeHeaderField mimeheaderfield = headers[i];
mimeheaderfield.reset();
headers[i] = headers[--count];
headers[count] = mimeheaderfield;
return;
}
}
public boolean containsHeader(String s)
{
return find(s) != null;
}
public void read(ServletInputStream servletinputstream)
throws IOException
{
byte abyte0[];
if(count == 0)
abyte0 = buf;
else
abyte0 = new byte[buf.length];
int i = 0;
do
{
int j = i;
do
{
int k = abyte0.length - i;
if(k > 0)
{
k = servletinputstream.readLine(abyte0, i, k);
if(k == -1)
throw new IOException("Connection reset.");
}
i += k;
if(k == 0 || abyte0[i - 1] == 10)
break;
byte abyte1[] = new byte[abyte0.length * 2];
System.arraycopy(abyte0, 0, abyte1, 0, abyte0.length);
abyte0 = abyte1;
}
while(true);
if(--i > j && abyte0[i - 1] == 13)
i--;
if(i != j)
putHeader().parse(abyte0, j, i - j);
else
return;
}
while(true);
}
public void write(ServletOutputStream servletoutputstream)
throws IOException
{
for(int i = 0; i < count; i++)
headers[i].write(servletoutputstream);
servletoutputstream.println();
}
protected MimeHeaderField putHeader(String s)
{
MimeHeaderField mimeheaderfield = find(s);
if(mimeheaderfield == null)
{
mimeheaderfield = putHeader();
mimeheaderfield.setName(s);
}
return mimeheaderfield;
}
void appendHeader(String s, String s1)
{
MimeHeaderField mimeheaderfield = putHeader();
mimeheaderfield.setName(s);
mimeheaderfield.setValue(s1);
}
protected MimeHeaderField putHeader()
{
int i = headers.length;
if(count >= i)
{
MimeHeaderField amimeheaderfield[] = new MimeHeaderField[count * 2];
System.arraycopy(headers, 0, amimeheaderfield, 0, i);
headers = amimeheaderfield;
}
MimeHeaderField mimeheaderfield;
if((mimeheaderfield = headers[count]) == null)
headers[count] = mimeheaderfield = new MimeHeaderField();
count++;
return mimeheaderfield;
}
public int getAll(byte abyte0[], int i)
{
int j = i;
for(int k = 0; k < count; k++)
i += headers[k].getBytes(abyte0, i);
return i - j;
}
public String toString()
{
StringBuffer stringbuffer = new StringBuffer();
stringbuffer.append("{");
for(int i = 0; i < count; i++)
{
stringbuffer.append("{");
stringbuffer.append(headers[i].toString());
stringbuffer.append("}");
if(i < count - 1)
stringbuffer.append(",");
}
stringbuffer.append("}");
return stringbuffer.toString();
}
public void dump(PrintStream printstream)
{
for(int i = 0; i < count; i++)
printstream.println(headers[i]);
}
private MimeHeaderField headers[];
private int count;
private byte buf[];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -