JSP学习笔记——HTTP请求和响应

这篇博客详细介绍了HTTP协议,包括其无状态和短连接的特点,HTTP请求的组成部分(请求行、请求头、请求正文)以及常见的请求方法,如GET、POST等。同时,文章还深入讲解了HTTP响应,包括状态行、响应头和响应正文,以及常见的响应状态码和响应头字段,如Content-Type、Location等。
摘要由CSDN通过智能技术生成

超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。是一个应用程序级的基于TCP / IP协议,分布式,协作,超媒体信息系统(互联网)。http有两个特点,无状态和短连接,短连接是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出一个请求,然后Web服务器返回响应(response),连接就被关闭了,无状态是指是对于事务处理没有记忆能力,在服务器端不保留连接的有关信息。HTTP是属于OSI模型中应用层,在实现http连接之前,要实现tcp传输层协议,并与网络层的Ip协议配合建立Internet连接。

1.http请求

搞清楚HTTP请求之前,还得搞清楚HTTP的URL,这给出了需要请求资源的足够信息。一般的http的URL形式为http://host[":"port][abs_path],[]中的内容为可缺省的,其中http表示用来操作的工具,http就表示HTTP定位网络资源,当然相似的还有ftp等。host表示域名,比如www.baidu.com,port表示端口号,默认为80,abs_path表示请求资源的URL,如果没有,则必须要在整个URL结尾加上“/”,比如baidu的地址会自动变更为http://www.baidu.com/,一个不缺省的URL可以是http:192.168.0.116:8080/index.jsp。

http请求分为三个部分:请求行、请求头、请求正文。

请求行的格式为:method URL HTTP-version,也就是请求方法、URI和协议版本,其中method有以下几种

1.GET    请求获取URI所标识的资源,然后获取资源

2.POST    命令向服务器发出执行某个动作的指令,有可能会修改服务器上的某些数,

3.HEAD    请求获取由URI所标识的资源的响应消息报头

4.PUT     请求服务器存储一个资源,并用Request-URI作为其标识

5.DELETE  请求服务器删除Request-URI所标识的资源

6.TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断

7.OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

其中GET和POST最常用比如GET /index.html HTTP/1.0,POST forecast HTTP/1.0。

请求包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

请求头例举以下几种常见头

Accept:浏览器可接受的MIME类型。 
Accept-Charset:浏览器可接受的字符集。 
Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。 
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 
Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。 
Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。 
Content-Length:表示请求消息正文的长度。 
Cookie:这是最重要的请求头信息之一,用于Cookie处理。 
From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。 
Host:初始URL中的主机和端口。 
If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。 
PRagma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。 
Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 
User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用

比如下面就是请求头,而且可以通过javax.servlet.http.HttpServletRequest对象的实例函数求得。

Accept:image/gif.image/jpeg.*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
Accept-Encoding:gzip,deflate.

最后请求正文,注意一点请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束。也就是说请求正文中可以不写,当然也可以包含客户提交的查询字符串信息,比如:
username=jinqiao&password=1234

2.http响应

类似于http请求,http相应可分为:状态行、响应头、响应正文。

状态行可以由HTTP-Version Status-Code Reason-Phrase也就是协议版本、数字形式的状态码及状态描述,协议版本类似于http响应,比如可以使http/1.1,状态码由3个数字组成,表示请求是否被理解或者满足,下面对数字的取值不同做分析,首位数字有5种可能,表示意思如下

1xx:  

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值