1、HTTP协议
HTTP,超文本传输协议(HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为 了提供一种发布和接收HTML页面的方法。
Http协议的组成:Http协议由Http请求和Http响应组成,当在浏览器中输入网址访问某个网站时,你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请求后会组织响应数据封装成一个Http响应返回给浏览器。即没有请求就没有响应。
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<title>Title</title></head><body>
<form action="#" method="post">
<input type="text" name="UserName" value="yyb">
<input type="password" name="Password" value="123456">
<input type="submit" value="测试">
</form></body></html>
2、HTTP请求
image.png1)请求行
请求方式:POST、GET
请求的资源:http://localhost:63342/JavaWebDemo/form.html?UserName=yyb&Password=123456
协议版本:HTTP/1.1
HTTP/1.0,发送请求,创建一次连接,获得一个web资源,连接断开。
HTTP/1.1,发送请求,创建一次连接,获得多个web资源,保持连接。
2)请求头
请求头是客户端发送给服务器端的一些信息,使用键值对表示key:value
image.png
3)请求体
当请求方式是post的时候,请求体会有请求的参数,比如:username=zhangsan&password=123
如果请求方式为get,那么请求参数不会出现在请求体中,会拼接在url地址后面,比如:http://localhost:8080...?username=zhangsan&password=123
String getHeader(String name) 获取请求中的报头信息
请求头
String value = request.getHeader("host");// 根据头名称获取头值
System.out.println("host:"+value);
Enumeration getHeaderNames() 获取请求中所有报头的集合
//遍历所有头
Enumeration<String> enums = request.getHeaderNames();// 获取所有头名称
while(enums.hasMoreElements()){
String headerName = enums.nextElement();
String headerValue = request.getHeader(headerName);
System.out.println(headerName+":"+headerValue);
}
}
String getContextPath() 获取请求上下文路径
String getRequestURI() 获取请求中的URI
// 请求资源
System.out.println("URI:"+request.getRequestURI());
System.out.println("URL:"+request.getRequestURL());
String getMethod() 获取HTTP请求方法
// 请求方式
System.out.println("请求方式:"+request.getMethod());
// http协议版本
System.out.println("Http协议:"+request.getProtocol());
String getRemoteAddr() 获取客户端IP
3、HTTP响应
image.png1)响应行
Http协议状态码:
常用的状态码如下:
200 :请求成功。
302 :请求重定向。
304 :请求资源没有改变,访问本地缓存。
404 :请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。
500 :服务器内部错误。通常程序抛异常。
状态信息:状态信息是根据状态码变化而变化的
2)响应头
响应也都是键值对形式,服务器端将信息以键值对的形式返回给客户端
image.png
3)响应体
响应体是服务器回写给客户端的页面正文,浏览器将正文加载到内存,然后解析渲染 显示页面内容
网友评论