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文件, 找到元素, 在其中添加元素, 代码如下 :

  • conf/catalina/localhost : 在该目录下创建web.xml , 在该文件中编写元素 , 代码如下:

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.个别请求头介绍

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;

自动刷新响应头:

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 请求 )

.net框架post请求没反应

网络处理2-异步POST请求和同步请求

get请求和post请求区别

GET请求和POST请求详述

vue中post请求报400的解决