文档介绍:客户请求的处理:HTTP请求报头
主讲:刘晓涛
议程
HTTP请求报头的读取
制作所有请求报头的表格
了解各种请求报头
通过压缩页面减少下载时间
区分不同的浏览器类型
一个典型的HTTP请求
GET /servlet/Search?keywords=servlets+jsp HTTP/
Accept: image/gif, image/jpg, */*
Accept-Encoding: gzip
Connection: Keep-Alive
Cookie: userID=id456578
Host: erer:
User-Agent: Mozilla/ (compatible; MSIE ; Windows NT )
理解HTTP无疑会有助于更有效地使用servlet和JSP
请求报头的读取(HttpServletRequest中的方法)
通用方法
getHeader (报头名对大小写不敏感)
getHeaders
getHeaderNames
专用方法
getCookies
getAuthType和getRemoteUser
getContentLength
getContentType
getDateHeader
getIntHeader
获取相关信息的方法
getMethod, getRequestURI , getQueryString, getProtocol
缺失报头的检查
HTTP
所有请求报头都是可选的
HTTP
仅Host是必需的
结论
。String val = ("Some-Name");if (val != null) {…}
制作所有请求报头的表格
public class ShowRequestHeaders extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
(docType + "<HTML>\n" +
"<HEAD><TITLE>"+title+"</TITLE></HEAD>\n"+
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1 ALIGN=\"CENTER\">" + title + "</H1>\n" +
"<B>Request Method: </B>" +
() + "<BR>\n" +
"<B>Request URI: </B>" +
() + "<BR>\n" +
"<B>Request Protocol: </B>" +
() + "<BR><BR>\n" +
制作所有请求报头的表格(续)
"<TABLE BORDER=1 ALIGN=\"CENTER\">\n" +
"<TR BGCOLOR=\"#FFAD00\">\n" +
"<TH>Header Name<TH>Header Value");
Enumeration headerNames = ();
while(()) {
String headerName = (String)();
("<TR><TD>" + headerName);
(" <TD>"+(headerName));
}
("</TABLE>\n</BODY></HTML>");
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);}}
常见HTTP
Accept
标示浏览器能够处理的MIME类型
可以向不同的客户程序发送不同的内容。例如,PNG文件拥有较好的压缩特性但并不被浏览器广泛支持。servlet可以检查浏览器是否支持PNG文件,如果支持则发送<IMG SR