1. http协议(了解)
(1)http协议是什么?
是一种网络应用层协议,规定了浏览器与web服务器之间如何通信以及相应的数据包的格式。
注:
TCP/IP(传输层和网络层协议),可以确保数据可以可靠的传递。
Http协议(应用层协议)将数据打包之后,需要依赖TCP/IP协议来传递数据包。
1)通信过程:
建立连接
发送请求
发送响应
关闭连接
2)优点
web服务器可以利用有限的连接数为尽可能多的请求服务。
(2)数据包的结构
1)请求数据包
a.请求行 (请求方式 请求资源路径 协议和版本)
b.若干消息头
注:
消息头是一个键值对(以": "隔开),浏览器与web服务器之间可以通过发送消息头来传递一些特定的信息,比如浏览器可以发送"user-agent"消息头告诉服务器,浏览器的类型和版本。
c.实体内容
注:
get请求没有数据,只有发送post请求时,才会有数据(请求参数) 。
2)响应数据包
a.状态行 (协议和版本 状态码 状态描述)
注:
200: 正确
404: 依据请求路径找不到对应的资源
500: 系统出错
b.若干消息头
注:
服务器也可以将一些消息头发送给浏览器,比如,通过发送"content-type"消息头,告诉浏览器,服务器发送过来的数据类型以及编码。
c.实体内容
程序处理的结果,浏览器需要解析出来,生成相应的页面。
(3)两种请求方式
1)get请求
a.哪一些情况下,浏览器会发送get请求?
在地址栏输入某个地址。
点击链接。
表单默认的提交方式。
b.特点
会将请求参数显示在浏览器地址栏,不安全。
注:
有一些网络设备(比如路由器),会记录所有的请求地址,如果包含了敏感的请求参数,则不安全。
会将请求参数添加到请求行(也就是请求资源路径的后面),只能提交少量的数据。
注:
请求行大约只能存放约2k左右的数据。
2)post请求
a.哪一些情况下,浏览器会发送post请求?
设置表单的method属性为"post"。
b.特点
浏览器地址栏不会显示请求参数,相对安全。
注:
不管是哪种请求类型,都不会对数据加密。对于敏感数据,一定要加密处理。
请求参数会添加到实体内容里面,可以提交大量的数据。
注:
实体内容里面添加的数据量理论上是没有限制的。
2.读取请求参数值
(1)方式一
String request.getParameter(String paramName);
注:
paramName:请求参数名。
如果请求参数名写错,返回null。
(2)方式二
String[] request.getParameterValues(String paramName);
注:
有多个请求参数名相同时,用该方法。
3.Servlet输出中文时产生的乱码问题
(1)为什么会有乱码?
out输出时,默认会使用iso-8859-1来编码。
4.表单包含有中文参数值产生的乱码问题
(1)为什么会有乱码?
表单提交时,会对中文参数值进行编码,比如,
使用utf-8来编码,而服务器端默认会使用iso-8859-1来解码,所以产生了乱码。
注:
会按照打开该表单所在的页面时的字符集来
编码。
(2)如何解决?
1)情形1: post请求
2)情形2: get请求
修改server.xml