java学习

NO.38 WebServer思路

2017-08-08  本文已影响0人  smallnumber

我们需要开发一个可供浏览器访问的网页服务端。

客户端HTTP协议中的请求信息格式:

请求行

GET /index.html HTTP/1.1CRLF

消息报头

消息正文

以行为单位发送至服务端 每行结尾以(CR LF)

CR:回车  LF:换行


服务端需要响应客户端对应的资源----HTTP协议要求实际响应客户端时的数据格式:

HTTP/1.1 200 OK CRLF        状态行

Content-Type:text/html CRLF  响应头信息

Content-Length:100CRLF      响应头信息

CRLF        单独发送CRLF指明响应头全部发送完毕

DATA        实际数据

1)状态行

状态行格式:

HTTP-Version Status_code Reason_Phrase CRLF

HTTP协议版本      状态代码      状态描述CRLF

例如:HTTP/1.1 200 OK CRLF

状态代码第一个数字有5种:

1xx:指示信息,表示请求已接收,继续处理。

2xx:成功,表示请求已接收,理解,接受

3xx:重定向,要完成请求需要更进一步的操作

4xx:客户端错误,请求语法错误或请求无法实现

5xx:服务端错误,服务器未能实现该请求

常见的状态码及描述:

200 OK                    客户端请求成功

400 Bad Request     客户端请求有语法错误,服务端不能理解

401 Unauthonzed    请求未授权

403 Forbidden          服务端接收到请求,但是拒绝提供服务

404 Not Found          请求的资源不存在

500 Internal Server Error 服务器发生了不可预期的错误

503 Service Unavailable  服务器当前不能够处理客户端请求

2)响应头

响应头注明很多返回的信息,按行输出

常见----Content-Type:用来指明发送给接收者的媒体类型

常见的Content-Type:

text/html:    HTML格式文件(网页)

text/xml:      XML格式文件

image/gif:    gif格式图片

image/jpeg:  jpeg格式图片

image/png:   png格式图片

Content-Length:用来指明发送给接收者实体正文的长度,简单说就是发送过去的数据的字节量

CRLF        单独发送CRLF指明响应头全部发送完毕

3)响应正文

DATA        实际数据

我们获取输入流,读取客户端发送过来的数据,然后给于客户端反馈,输出流使客户端得到请求的信息。

上一篇下一篇

猜你喜欢

热点阅读