我们使用Eclipse编写的javaweb项目,最终会发布到tomcat的webapps目录下,Eclipse是我们的开发环境,tomcat是运行环境。
HTTP叫超文本传输协议,基于请求/响应模式。
HTTP是无状态协议,FTP是有状态。
请求协议(格式)和响应协议(格式)
请求协议
请求首行:请求方式 请求路径 协议和版本,例如:GET /index.html HTTP/1.1。
2~n请求头:请求头名称:请求内容,即为key:value格式,例如:Host:localhost:8080。
空行:用来与请求体分开。
请求体:GET没有请求体,只有POST有请求体。
GET请求
HTTP默认的请求方式是GET。
GET:
- 没有请求体。
- 数据必须在1K之内。
- GET请求数据会暴露在浏览器的地址栏中。(密码)
GET请求的常用的操作
在浏览器的地址栏中直接给出URL,那么一定就是GET请求。
点击页面上的超链接也一定是GET请求。
提交表单时,表单默认是GET请求,也可以设置为POST
POST请求
数据不会出现在地址栏中。
数据的大小没有上限。
有请求体。
请求体中如果出现中文,会使用URL编码。
使用表单可以发送POST请求,但表单默认是GET
<from action="" method="post"></from>
响应协议
响应首行
响应头信息
空行
响应体
状态码:200 表示请求成功
Content-Type:text/html;charse=UTF-8:响应体使用UTF-8编码。
状态码
响应头说明了响应的真正含义,例如200表示响应成功,302表示重定向,这说明浏览器需要再发一个新的请求。
200:请求成功,浏览器通常会把响应体内容显示在浏览器中。
404:请求的资源没找到。说明客户端错误的请求了不存在的资源。
500:请求资源找到了,但是服务器内部出现了错误。
302:重定向,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新的URL地址。
304:
其他相应头
告诉浏览器不要缓存的响应头:
- Expires:-1;
- Cache-Control:no-cache;
- Pragma:no-cache;
自动刷新响应头,浏览器会在3秒之后请求http://www.baidu.com
- Refresh:3;url=http://www.baidu.com
小笔记
URL编码
任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 %这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码,如:“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”。
packagedemo;
importjava.io.UnsupportedEncodingException;
importjava.net.URLEncoder;
importorg.junit.Test;
publicclassdemo{
@Test
public void fun1()throws UnsupportedEncodingException{
String s="大家好";
s=URLEncoder.encode(s,"UTF-8");
System.out.println(s);
}}
结果如下:
%E5%A4%A7%E5%AE%B6%E5%A5%BD
URL:统一资源定位符,俗称网址,它表示一个真实存在的资源!
URI:统一资源标识符,它包含URL,它更加宽泛,在网络上任何描述资源东西都是URI,它可以是不存在的资源,例如:ndsj@163.com。
网友评论