仓酷云

标题: JAVA网页设计JSP 读取HTTP哀求头 [打印本页]

作者: 分手快乐    时间: 2015-1-18 11:34
标题: JAVA网页设计JSP 读取HTTP哀求头
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是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的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。
作者: admin    时间: 2015-1-21 10:14
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
作者: 爱飞    时间: 2015-1-25 20:37
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 海妖    时间: 2015-1-27 15:03
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 谁可相欹    时间: 2015-2-5 06:34
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者: 乐观    时间: 2015-2-11 06:44
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者: 飘飘悠悠    时间: 2015-2-21 19:31
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 仓酷云    时间: 2015-3-6 21:06
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
作者: 变相怪杰    时间: 2015-3-13 09:08
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 分手快乐    时间: 2015-3-13 09:08
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者: 深爱那片海    时间: 2015-3-13 09:08
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 简单生活    时间: 2015-3-17 04:06
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者: 第二个灵魂    时间: 2015-3-21 10:12
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者: 若天明    时间: 2015-3-30 05:46
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
作者: 小女巫    时间: 2015-3-31 22:33
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者: 金色的骷髅    时间: 2015-4-3 03:48
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 只想知道    时间: 2015-4-10 02:04
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者: 再见西城    时间: 2015-4-10 22:53
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
作者: 愤怒的大鸟    时间: 2015-4-11 17:42
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 小妖女    时间: 2015-4-22 00:47
Java是一种计算机编程语言,拥有跨平台、面向对java




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2