仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 544|回复: 8
打印 上一主题 下一主题

[学习教程] JAVA网页编程之jsp Servlet基本进门进修:读取HTTP哀求...

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.js|servlet|哀求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);
}
}

令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。
海妖 该用户已被删除
沙发
发表于 2015-1-20 16:18:52 | 只看该作者
[url]http://www.ckuyun.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://www.ckuyun.com[/url]去下,安装上有什么问题,可以到论坛上去提问。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-27 07:07:34 来自手机 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
再现理想 该用户已被删除
地板
发表于 2015-1-30 13:31:26 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
活着的死人 该用户已被删除
5#
发表于 2015-2-6 08:47:16 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-14 05:27:02 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
愤怒的大鸟 该用户已被删除
7#
发表于 2015-3-4 04:53:42 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
再见西城 该用户已被删除
8#
发表于 2015-3-11 17:06:07 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
简单生活 该用户已被删除
9#
发表于 2015-3-27 00:10:00 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 13:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表