Http协议

本文详细介绍了HTTP协议的基本概念,包括请求与响应数据包的格式、GET与POST请求的区别,以及在Java Web开发中常见的编码问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Http协议

超文本传输协议是一款应用层协议,主要定义了浏览器与服务器之间的通讯过程传输数据的格式.


请求数据包格式


第一部分:请求行

GET /hello HTTP/1.1

请求方式:GET/POST

请求资源路径:/hello

协议的类型与版本: HTTP/1.1


第二部分:若干消息头

包含若干键值对,描述了客户端发送请求数据包时的一些状态,或请求数据包的描述信息.

key:value

key:value

第三部分:请求实体

包含请求数据包中的一些参数(仅限于post请求)


响应数据包格式

第一部分:响应行

HTTP/1.1  2000K

1.协议的类型与版本

2.状态码

响应状态描述:200正常 ;404资源找不到 ;500服务器内部异常


第二部分:若干消息头

这些消息头描述了响应数据包中的一些状态,以及响应数据包中的一些信息.

key:value

key:value

.....


第三部分:响应实体

主要存放服务器端返回给浏览器的数据

可能是html源码,可能是图片.


使用eclipse自带TCP/IP模拟器,查看数据包格式.

只有form表单可以发送post请求


get与post之间区别

1>请求参数存放位置

get:在url后面的?拼接

post:参数放在请求数据包请求实体部分.

2>参数数据量大小

get:url传递数据量大小有限制

post:理论上没有限制(参数在请求实体部分)

3>安全性

get:相对不安全

post:相对安全

4>编码相关

get:不适合传递中文参数

post:比较适合传递中文参数


javaweb开发过程中常见编码问题:

1>在servlet代码中输出中文,结果在页面中查看出现乱码.

原因是tomcat默认输出response编码是iso88591.

解决方案:

在response.getWriter()之前,设置response的内容类型.

resp.setContentType("text/html;charset=utf-8"); 

的作用是指定对服务器响应进行重新编码的编码

1)告诉tomcat容器,输出的信息是使用编码为utf-8编码.

2)在响应数据包中添加ContentType消息头,

ContentType:text/html;charset=utf-8 浏览器会按照utf-8解析.


2>在表单中输入中文信息,提交后再servlet里面接收后,打印是乱码.

1)若要提交中文参数,必须使用post请求,这样参数会存放再内容部分,tomcat接收之后才可以进行编码处理.

(请求行中不支持asc码中文字符)

2)servlet中,在request.getParameter()获取参数之前需要设置request的参数接收编码:

浏览器发送request时的编码类型<meta charset="UTF-8">

request.setCharecterEncoding("utf-8");(的作用是设置对客户端请求进行重新编码的编码。)


**** 而tomcat服务器是默认采用iso-8859-1来对请求消息进行解码的,如果前后不一就很容易出现乱码问题.如果是post请求只需要设置request.setCharacterEncoding()与请求消息编码前的编码方式一样就可以.
如果是get请求,tomcat默认的是用iso-8859-1来进行解码,此时request.setCharacterEncoding()不起作用,可以在tomcat的server.xml的Connector元素的useBodyEncodingForURI="true"使得起作用 



useBodyEncodingForURI="true" URIEncoding="UTF-8"




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值