客户请求的处理HTTP请求报头.ppt_第1页
客户请求的处理HTTP请求报头.ppt_第2页
客户请求的处理HTTP请求报头.ppt_第3页
客户请求的处理HTTP请求报头.ppt_第4页
客户请求的处理HTTP请求报头.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

客户请求的处理客户请求的处理:HTTP:HTTP请求报头请求报头 主讲主讲: :刘晓涛刘晓涛 议程议程 HTTPHTTP请求报头的读取请求报头的读取 制作所有请求报头的表格制作所有请求报头的表格 了解各种请求报头了解各种请求报头 通过压缩页面减少下载时间通过压缩页面减少下载时间 区分不同的浏览器类型区分不同的浏览器类型 一个典型的一个典型的HTTPHTTP请求请求 GET /GET /servlet/Search?keywordsservlet/Search?keywords= =servlets+jspservlets+jsp HTTP/1.1 HTTP/1.1 Accept: image/gif, image/jpg, */*Accept: image/gif, image/jpg, */* Accept-Encoding: Accept-Encoding: gzipgzip Connection: Keep-AliveConnection: Keep-Alive Cookie: Cookie: userIDuserID=id456578=id456578 Host: Host: RefererReferer: : http:///findbooks.html User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)Windows NT 5.0) 理解理解HTTPHTTP无疑会有助于更有效地使用无疑会有助于更有效地使用servletservlet和和JSPJSP 请求报头的读取请求报头的读取 ( (HttpServletRequestHttpServletRequest中的方法中的方法) ) 通用方法通用方法 uugetHeader (getHeader (报头名对大小写不敏感报头名对大小写不敏感) ) uugetHeadersgetHeaders uugetHeaderNamesgetHeaderNames 专用方法专用方法 uugetCookiesgetCookies uugetAuthTypegetAuthType和和getRemoteUsergetRemoteUser uugetContentLengthgetContentLength uugetContentTypegetContentType uugetDateHeadergetDateHeader uugetIntHeadergetIntHeader 获取相关信息的方法获取相关信息的方法 uugetMethod, getMethod, getRequestURIgetRequestURI , , getQueryStringgetQueryString, , getProtocolgetProtocol 缺失报头的检查缺失报头的检查 HTTP 1.0HTTP 1.0 uu所有请求报头都是可选的所有请求报头都是可选的 HTTP 1.1HTTP 1.1 uu仅仅HostHost是必需的是必需的 结论结论 uu在试图使用由在试图使用由request.getHeaderrequest.getHeader返回的值之前一定要返回的值之前一定要 检查它是否为检查它是否为nullnull。 String String valval = = request.getHeader(“Somerequest.getHeader(“Some-Name“);-Name“); if (if (valval != null != null) ) 制作所有请求报头的表格制作所有请求报头的表格 public class public class ShowRequestHeadersShowRequestHeaders extends extends HttpServletHttpServlet public void public void doGet(HttpServletRequestdoGet(HttpServletRequest request, request, HttpServletResponseHttpServletResponse response) response) throws throws ServletExceptionServletException, , IOExceptionIOException out.println(docTypeout.println(docType + “n“ + + “n“ + “+title+“n“+“+title+“n“+ “n“ +“n“ + “ + title + “n“ +“ + title + “n“ + “Request Method: “ +“Request Method: “ + request.getMethodrequest.getMethod()() + “n“ + + “n“ + “Request URI: “ +“Request URI: “ + request.getRequestURIrequest.getRequestURI()() + “n“ + + “n“ + “Request Protocol: “ +“Request Protocol: “ + request.getProtocolrequest.getProtocol()() + “n“ +n“ + 制作所有请求报头的表格(续)制作所有请求报头的表格(续) “n“ +“n“ + “n“ +“n“ + “Header NameHeader Value“);“Header NameHeader Value“); Enumeration Enumeration headerNamesheaderNames = = request.getHeaderNamesrequest.getHeaderNames();(); while(headerNames.hasMoreElementswhile(headerNames.hasMoreElements() () String String headerNameheaderName = ( = (String)headerNames.nextElementString)headerNames.nextElement();(); out.printlnout.println(“ + (“ + headerNameheaderName);); out.printlnout.println(“ “+(“ “+request.getHeader(headerNamerequest.getHeader(headerName);); out.printlnout.println(“n“);(“n“); public void public void doPost(HttpServletRequestdoPost(HttpServletRequest request, request, HttpServletResponseHttpServletResponse response) response) throws throws ServletExceptionServletException, , IOExceptionIOException doGet(requestdoGet(request, response);, response); 常见常见HTTP 1.1HTTP 1.1请求报头请求报头 AcceptAccept uu标示标示浏览器能够处理的浏览器能够处理的MIMEMIME类型类型 uu可以向不同的客户程序发送不同的内容。例如,可以向不同的客户程序发送不同的内容。例如,PNGPNG文文 件拥有较好的压缩特性但并不被浏览器广泛支持。件拥有较好的压缩特性但并不被浏览器广泛支持。 servletservlet可以检查浏览器是否支持可以检查浏览器是否支持PNGPNG文件,如果支持文件,如果支持 则发送则发送“ 否则发送否则发送“ .。 uu警告:在点击警告:在点击RefreshRefresh按钮时,按钮时,IEIE会错误在设置这个报会错误在设置这个报 头。但在最初的请求中,对这个报头的设置是正确的头。但在最初的请求中,对这个报头的设置是正确的 Accept-EncodingAccept-Encoding uu标示标示浏览器能够处理的编码浏览器能够处理的编码(如(如gzipgzip或或compresscompress) uu参见随后的例子参见随后的例子 常见常见HTTP 1.1HTTP 1.1请求报头(续)请求报头(续) AuthorizationAuthorization uu用于发送受密码保护的页面的用户身份验证信息。用于发送受密码保护的页面的用户身份验证信息。 uu应该尽可能使用应该尽可能使用HTMLHTML表单来发送用户名表单来发送用户名/ /密码,在会话密码,在会话 对象中存储信息;而不是这个报头。因为这种方式会对象中存储信息;而不是这个报头。因为这种方式会 弹出一个小而简练的对话框,许多用户不熟悉它。弹出一个小而简练的对话框,许多用户不熟悉它。 uu服务器拥有其他高级的方式来设置受密码保护的页面服务器拥有其他高级的方式来设置受密码保护的页面 ,无须显式地在,无须显式地在servletservlet中编写相关的代码。中编写相关的代码。 常见常见HTTP 1.1HTTP 1.1请求报头(续)请求报头(续) ConnectionConnection uu在在HTTP 1.0HTTP 1.0中,中,keep-alivekeep-alive表示浏览器能够处理持续性连接。在表示浏览器能够处理持续性连接。在 HTTP 1.1HTTP 1.1中,持续性连接是默认的。持续性连接表示:对于来自中,持续性连接是默认的。持续性连接表示:对于来自 同一客户的相隔时间很近的请求(如与同一页面相关联的图像,同一客户的相隔时间很近的请求(如与同一页面相关联的图像, 或具有框架的页面中的不同单元),服务器可以重用已有的或具有框架的页面中的不同单元),服务器可以重用已有的 socketsocket。 uuservletservlet并不能单方面地完成这项工作;要使持续性连接的使用成并不能单方面地完成这项工作;要使持续性连接的使用成 为可能,它们能够做的就是给予服务器足够的信息。因此,它们为可能,它们能够做的就是给予服务器足够的信息。因此,它们 应该用应该用setContentLengthsetContentLength设置设置Content-LengthContent-Length(输出的长度使用(输出的长度使用 ByteArrayOutputStreamByteArrayOutputStream来确定)。来确定)。 CookieCookie uu给出之前发送到客户端的给出之前发送到客户端的cookiecookie。使用。使用getCookiesgetCookies,不要使用,不要使用 getHeadergetHeader。参见后面的课程。参见后面的课程。 常见常见HTTP 1.1HTTP 1.1请求报头(续)请求报头(续) HostHost uu标示最初的标示最初的URLURL中给出的主机。中给出的主机。 uu在在HTTP 1.1HTTP 1.1中这是一个必需的报头。如果您在编写定制的中这是一个必需的报头。如果您在编写定制的HTTPHTTP客客 户程序,或者使用户程序,或者使用HTTP/1.1HTTP/1.1版本版本telnettelnet到服务器,那么了解这一到服务器,那么了解这一 点十分重要。点十分重要。 If-Modified-SinceIf-Modified-Since uu标示仅当在指定的日期之后被改动过时客户才希望获得该页面标示仅当在指定的日期之后被改动过时客户才希望获得该页面 uu不要直接处理这种情况,而应实现不要直接处理这种情况,而应实现getLastModifiedgetLastModified。 常见常见HTTP 1.1HTTP 1.1请求报头(续)请求报头(续) RefererReferer uu引用页面的引用页面的URLURL uu对于流量跟踪有作;许多服务器都记录这项信息对于流量跟踪有作;许多服务器都记录这项信息 uu也可用来让用户设置相应的参数,然后再返回到跳转过来的页面也可用来让用户设置相应的参数,然后再返回到跳转过来的页面 uu很容易被哄骗;所以不要将它作为确定付费网站显示了多少次您很容易被哄骗;所以不要将它作为确定付费网站显示了多少次您 的标题广告的唯一途径。的标题广告的唯一途径。 uu某些浏览器某些浏览器(Opera)(Opera),广告过滤器,广告过滤器(Web Washer)(Web Washer),和个人防火墙,和个人防火墙 (Norton)(Norton)会屏蔽这个报头会屏蔽这个报头 User-AgentUser-Agent uu最好用来鉴定客户的类型最好用来鉴定客户的类型 浏览器、浏览器、I-modeI-mode的移动电话等。的移动电话等。 uu对于对于WebWeb应用,请尽可能使用其他报头。应用,请尽可能使用其他报头。 uu同样,也很容易被哄骗。同样,也很容易被哄骗。 uu参见后面的例子参见后面的例子 发送经过压缩的发送经过压缩的WebWeb页面页面: :GzipUtilities.javaGzipUtilities.java public class public class GzipUtilitiesGzipUtilities public static public static booleanboolean isGzipSupported(HttpServletRequestisGzipSupported(HttpServletRequest request) request) String encodings = String encodings = request.getHeader(“request.getHeader(“AcceptAccept-Encoding-Encoding“);“); return(encodingsreturn(encodings != != null) != -1); public static public static booleanboolean isGzipDisabledisGzipDisabled ( (HttpServletRequestHttpServletRequest request) request) String flag = String flag = request.getParameter(“request.getParameter(“disableGzipdisableGzip“);“); return(flagreturn(flag != != null)“); public static public static PrintWriterPrintWriter getGzipWritergetGzipWriter ( (HttpServletResponseHttpServletResponse response) throws response) throws IOExceptionIOException return(newreturn(new PrintWriter(newPrintWriter(new GZIPOutputStreamGZIPOutputStream(response.getOutputStream(response.getOutputStream();(); 发送经过压缩的发送经过压缩的WebWeb页面:页面:LongServlet.javaLongServlet.java public class public class LongServletLongServlet extends extends HttpServletHttpServlet public void public void doGet(HttpServletRequestdoGet(HttpServletRequest request, request, HttpServletResponseHttpServletResponse response) response) throws throws ServletExceptionServletException, , IOExceptionIOException response.setContentType(“textresponse.setContentType(“text/html“);/html“); / Change the definition of “out“ depending on/ Change the definition of “out“ depending on / whether or not / whether or not gzipgzip is supported. is supported. PrintWriterPrintWriter out; out; if (if (GzipUtilities.isGzipSupported(requestGzipUtilities.isGzipSupported(request) ); response.setHeader(“Contentresponse.setHeader(“Content-Encoding“, “-Encoding“, “gzipgzip“);“); else else out = out = response.getWriterresponse.getWriter();(); 发送经过压缩的发送经过压缩的WebWeb页面页面: :LongServlet.javaLongServlet.java ( (续续) ) out.printlnout.println ( (docTypedocType + + “n“ +“n“ + “ + title + “n“ +“ + title + “n“ + “n“ +“n“ + “ + title + “n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论