JavaWeb8---GET请求, POST请求, 响应
Posted 冬有雪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb8---GET请求, POST请求, 响应相关的知识,希望对你有一定的参考价值。
1.Web应用
静态网站 :
* 在webapps目录下创建一个目录 (命名不包含中文和空格) , 这个目录称之为项目目录.
* 在项目目录下创建html文件
动态网站 :
- 在webapps目录下创建一个目录
- 在项目目录下创建如下内容 :
- WEB-INF目录
- 在WEB-INF目录下创建web.xml文件
- 创建静态或动态页面
2.配置外部应用
原来我们的项目在webapps下, 现在放在外面, 有两种方式 :
- conf/server.xml : 打开server.xml文件, 找到元素, 在其中添加元素, 代码如下 :
- path : 指定当前应用的名称 ;
- docBase : 指定应用的物理位置 ;
- 浏览器访问路径 : http://localhost:8080/web/index.html
- conf/catalina/localhost : 在该目录下创建web.xml , 在该文件中编写元素 , 代码如下:
- 文件名 : 指定当前应用的名称 ;
- docBase : 指定应用的物理位置 ;
- 浏览器访问路径 : http://localhost:8080/web/index.html
3.HTTP协议概述
GET请求 :
GET /JavaWeb282/index.jsp HTTP/1.1
Accept: */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
Accept-Encoding: gzip, deflate
Host: 192.168.70.1
Connection: Keep-Alive
Cookie: JSESSIONID=E0D100237F0A36810BDA4F202D893242
请求协议的格式 :
请求行
多个请求头信息 : 头名称:头值
空行
请求体 (get请求没有请求体, 但是必须有空行)
响应 :
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 649
Date: Sat, 07 Apr 2018 06:06:57 GMT
响应协议的格式:
响应行(协议/版本 状态码 状态码的解释)
状态码: 2开头: 成功;
3开头: 转发;
4开头: 客户端错误; 404: 文件未找到
5开头: 服务器错误; 500: 服务器内部错误
响应头 (key/value格式)
Content-Type : 响应内容的MIME类型, MIME是网络传输的一种媒体
空行
响应正文
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="http://192.168.70.1:80/JavaWeb282/">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
This is my JSP page. <br>
<h1>dong</h1>
</body>
</html>
4.POST请求中HTTP请求协议内容
POST /JavaWeb282/index.jsp HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://192.168.70.1/JavaWeb282/login.html
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: 192.168.70.1
Content-Length: 34
Connection: Keep-Alive
Cache-Control: no-cache
username=dongshuai&password=123456
username=dongshuai&password=123456
正文(体), 发送给服务器的只有一行字符串, 多个参数中间用&隔开
Content-Type: application/x-www-form-urlencoded
表示表单中的数据会自动使用URL来编码! (上传的时候会修改Content-Type)
如果输入框写的是中文
username=%E8%91%A3%E5%B8%85&password=123456
字节+128 --> 转换成16进制-->添加%前缀
5.个别请求头介绍
- Referer:http://192.168.70.1/JavaWeb282/index.jsp : 请求来自哪个页面
- 统计访问来源
- 防盗链
5.2 响应码
- 200 : 请求成功
- 404 : 请求的资源没找到
- 500 : 请求的资源找到了, 但服务器出现了内部错误
- 302 : 重定向, 当响应码为302时, 表示服务器要求浏览器重新发送一个请求, 服务器会发送一个响应头 Location, 它制定了新请求的URL地址
- 304 : 当用户第一次请求index.html时, 在请求中包含一个名为Last-Modified响应头, 这个头说明了index.html的最后修改时间, 浏览器会把index.html内容, 以及最后响应时间缓存下来. 当用户第二次请求index.html时, 在请求中包含一个名为If-Modified-Since请求头, 它的值就是第一次请求时服务器通过Last-Modified响应头发送给浏览器的值, 即index.html的最后修改时间, If-Modified-Since请求头就是告诉服务器, 将index.html的修改时间和服务器上的修改时间做对比, 如果相同, 服务器会发响应码304, 不会有响应正文, 表示index.html与浏览器上次缓存的相同, 无需再次发送, 浏览器可以显示自己的缓存页面, 如果比对不同, name说明index.html已经做了修改, 服务器会响应200.
响应头
* Last-Modified : 最后的修改时间
请求头
* If-Modified-Since : 把上次请求index.html的最后修改时间还给服务器
5.3 其他响应头
告诉浏览器不要缓存的响应头:
- Expires:-1;
- Cache-Control: no-cache;
- Pragma: no-cache;
自动刷新响应头:
- Refresh:3;url=http://www.donuai.net
5.4 HTML中指定响应头
在HTML页面中可以使用<meta http-equiv="" content=""> 来指定响应头.
例如: 在index.html中给出
<meta http-equiv="Refresh" content="3;url=http://www.doni.net">
表示浏览器显示index.html页面3秒后, 自动跳转到http://www.dongi.net
以上是关于JavaWeb8---GET请求, POST请求, 响应的主要内容,如果未能解决你的问题,请参考以下文章
OkHttpOkHttp Get 和 Post 请求 ( 同步 Get 请求 | 异步 Get 请求 | 同步 Post 请求 | 异步 Post 请求 )