|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。js|哀求5.1HTTP哀求头概述
HTTP客户程序(比方扫瞄器),向服务器发送哀求的时分必需指明哀求范例(通常为GET大概POST)。若有需要,客户程序还能够选择发送其他的哀求头。年夜多半哀求头并非必须的,但Content-Length除外。关于POST哀求来讲Content-Length必需呈现。
上面是一些最多见的哀求头:
Accept:扫瞄器可承受的MIME范例。
Accept-Charset:扫瞄器可承受的字符集。
Accept-Encoding:扫瞄器可以举行解码的数据编码体例,好比gzip。Servlet可以向撑持gzip的扫瞄器前往经gzip编码的HTML页面。很多情况下这能够削减5到10倍的下载工夫。
Accept-Language:扫瞄器所但愿的言语品种,当服务器可以供应一种以上的言语版本时要用到。
Authorization:受权信息,一般呈现在对服务器发送的WWW-Authenticate头的应对中。
Connection:暗示是不是必要耐久毗连。假如Servlet看到这里的值为“Keep-Alive”,大概看到哀求利用的是HTTP1.1(HTTP1.1默许举行耐久毗连),它就能够使用耐久毗连的长处,当页面包括多个元素时(比方Applet,图片),明显地削减下载所必要的工夫。要完成这一点,Servlet必要在应对中发送一个Content-Length头,最复杂的完成办法是:先把内容写进ByteArrayOutputStream,然后在正式写出内容之前盘算它的巨细。
Content-Length:暗示哀求动静注释的长度。
Cookie:这是最主要的哀求头信息之一,拜见前面《Cookie处置》一章中的会商。
From:哀求发送者的email地点,由一些特别的Web客户程序利用,扫瞄器不会用到它。
Host:初始URL中的主机和端口。
If-Modified-Since:只要当所哀求的内容在指定的日期以后又经由修正才前往它,不然前往304“NotModified”应对。
Pragma:指定“no-cache”值暗示服务器必需前往一个革新后的文档,即便它是代办署理服务器并且已有了页面的当地拷贝。
Referer:包括一个URL,用户从该URL代表的页面动身会见以后哀求的页面。
User-Agent:扫瞄器范例,假如Servlet前往的内容与扫瞄器范例有关则该值十分有效。
UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE扫瞄器所发送的非尺度的哀求头,暗示屏幕巨细、色彩深度、操纵体系和CPU范例。
有关HTTP头完全、具体的申明,请拜见http://www.w3.org/Protocols/的HTTP标准。
5.2在Servlet中读取哀求头
在Servlet中读取HTTP头长短常便利的,只必要挪用一下HttpServletRequest的getHeader办法便可。假如客户哀求中供应了指定的头信息,getHeader前往对应的字符串;不然,前往null。部分头信息常常要用到,它们有公用的会见办法:getCookies办法前往Cookie头的内容,经剖析后寄存在Cookie对象的数组中,请拜见前面有关Cookie章节的会商;getAuthType和getRemoteUser办法分离读取Authorization头中的一部份内容;getDateHeader和getIntHeader办法读取指定的头,然后前往日期值或整数值。
除读取指定的头以外,使用getHeaderNames还能够失掉哀求中一切头名字的一个Enumeration对象。
最初,除检察哀求头信息以外,我们还能够从哀求主命令行取得一些信息。getMethod办法前往哀求办法,哀求办法一般是GET大概POST,但也有多是HEAD、PUT大概DELETE。getRequestURI办法前往URI(URI是URL的从主机和端口以后到表双数据之前的那一部分)。getRequestProtocol前往哀求命令的第三部分,通常为“HTTP/1.0”大概“HTTP/1.1”。
5.3实例:输入一切的哀求头
上面的Servlet实例把一切吸收到的哀求头和它的值以表格的情势输入。别的,该Servlet还会输入主哀求命令的三个部分:哀求办法,URI,协定/版本。
ShowRequestHeaders.java
packagehall;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
importjava.util.*;
publicclassShowRequestHeadersextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html");
PrintWriterout=response.getWriter();
Stringtitle="显现一切哀求头";
out.println(ServletUtilities.headWithTitle(title)+
"<BODYBGCOLOR=\"#FDF5E6\">\n"+
"<H1ALIGN=CENTER>"+title+"</H1>\n"+
"<B>RequestMethod:</B>"+
request.getMethod()+"<BR>\n"+
"<B>RequestURI:</B>"+
request.getRequestURI()+"<BR>\n"+
"<B>RequestProtocol:</B>"+
request.getProtocol()+"<BR><BR>\n"+
"<TABLEBORDER=1ALIGN=CENTER>\n"+
"<TRBGCOLOR=\"#FFAD00\">\n"+
"<TH>HeaderName<TH>HeaderValue");
EnumerationheaderNames=request.getHeaderNames();
while(headerNames.hasMoreElements()){
StringheaderName=(String)headerNames.nextElement();
out.println("<TR><TD>"+headerName);
out.println("<TD>"+request.getHeader(headerName));
}
out.println("</TABLE>\n</BODY></HTML>");
}
publicvoiddoPost(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。 |
|