spring Boot的使用Http协议进行创建

323 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一.Http协议

1.Http协议就是指客户端和服务器之间通信时,发送的数据,需要遵守的规则、Http协议中的数据又叫报文 2.请求的Http协议格式

  • 客户端给服务器发送数据叫请求
  • 服务器给客户端回传数据叫响应
  • 请求又分为GET请求、和POST请求

GET请求

  • 请求行 1.请求的方式 GET 2.请求的资源路径[+?+请求参数] 3.请求协议的版本号 HTTP/1.1

  • 请求头 1.key:value 组成 不同的键值对,表示不同的含义

Accept告诉服务器,客户端可以接受的数据类型
Accept-Language考试服务器客户端可以接收的语言类型 zh-CN-->中文中国 en-US -->英文美国
User-Agent浏览器的信息
Accept-Encoding告诉服务器,客户端可以接收的数据编码格式
Host表示请求的服务器ip和端口哈
Connection告诉服务器请求连接如何处理
Keep-Alive告诉服务器回传数据不要马上关闭,保存一小时的连接
Closed马上关闭

POST请求

  • 请求行 1.请求的方式 POST 2.请求的资源路径[+?+请求参数] 3.请求协议的版本号 HTTP/1.1

  • 请求头 1.key:value 组成 不同的键值对,表示不同的含义

  • 请求体 --->就是发送给服务器的数据

Accept告诉服务器,客户端可以接受的数据类型
Accept-Language考试服务器客户端可以接收的语言类型 zh-CN-->中文中国 en-US -->英文美国
Referer表示请求发起时,浏览器地址栏中的地址从(那里来)
User-Agent浏览器的信息
Content-Type表示发送的数据类型
application/x-www-form-urlencoded表示提交的数据格式是:name=value,然后对其进行url编码
url编码是八非英文内容转换为:%xx%xx
multipart/form-date表示以多段的新式提交给数据给服务器(以流的形式提交,用于上传)
Content-Length表示发送的数据的长度
Cache-Control表示如何控制缓存 No-cache不缓存

常用请求头

  • Accept : 表示客户端可以接收的数据类型
  • Accpet-Language: 表示客户端可以接收的语言类型
  • User-Agent : 表示客户端浏览器的信息
  • Host : 表示请求时的服务器ip和端口号

那些是GET请求、那些是POST请求

  • GET请求 1.form标签 method=get 2. a 标签 3. link 标签引入 css 4. Script 标签引入 js 文件 5. img 标签引入图片 6. iframe 标签引入 html 页面 7. 在浏览器地址栏中输入地址后回车

  • POST请求 1.form标签 method=Post

  • 常用的响应码说明

200表示请求成功
302表示请求重定向
404表示请求服务器已经收到了,但是你要的数据不存在(请求地址错误)
500表示服务器已经收到请求,但服务器内部错误(代码错误)

MIME类型说明

  • MIME是HTTP协议中数据类型,多功能Internet邮件扩充服务。MIME格式是”大类型/小类型“,并与某一种扩展名相对应
文本MIME类型
超文本.html txt/html
普通文本.txt text/plain
JPEG图形.jpeg image/jpeg
AVI文件.avi video/mpeg

十.HttpServletRequest类

每次只要有请求进入Tomcat服务器,Tomcat服务器就会把请求过来的Http协议信息解析好封装daoRequest对象中。然后传递到Service方法(doGET 和doPost)中给我们使用,我们可以通过HttpServletRequest对象,获得到所有请求的信息 HttpServletRequest类的常用方法

getRequestURI()获取请求的资源路径
getRequestURL()获取请求的统一资源定位符(绝对路径)
getRemoteHost()获取客户端的ip地址
getHeader()获取请求头
getParameter()获取请求的参数
getParameterValues()获取请求的参数(多个值的时候使用)
getMethod()获取请求的方式GET或POST
setAttribute(key,value)设置域数据
getAttribute(key)获取域数据
getRequestDispatcher()获取请求转发对象
public class ServletTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("URI-->" + req.getRequestURI());
        System.out.println("URL-->" + req.getRequestURL());
        System.out.println("客户端地址ip"+ req.getRemoteHost());
        System.out.println("请求头User - Agent" + req.getHeader("User-Agemt"));
        System.out.println("请求的方式"+ req.getMethod());
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }
}

图片.png

二如何获取参数代码演示

public class ServletTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    req.setCharacterEncoding("UTF-8");
    System.out.println("这是Get方法");
       //获取请求的参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String[] hobby = req.getParameterValues("hobby");
        System.out.println("用户名 :" + username);
        System.out.println("密码 :" + password);
        System.out.println("兴趣爱好 :" + Arrays.asList(hobby)); //要转化为数据Arrays进行输出因为是多个数据,单个数据直接输出就可
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      req.setCharacterEncoding("UTF-8");
    System.out.println("这是POST方法");
       //获取请求的参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String[] hobby = req.getParameterValues("hobby");
        System.out.println("用户名 :" + username);
        System.out.println("密码 :" + password);
        System.out.println("兴趣爱好 :" + Arrays.asList(hobby)); //要转化为数据Arrays进行输出因为是多个数据,单个数据直接输出就可
    }
}

三.测试表单

<%--
  Created by IntelliJ IDEA.
  User: 程序员小徐同学
  Date: 2022-01-11
  Time: 14:41
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>程序员小徐同学</title>
  </head>
  <body>
  <h3>开始了新的测试</h3>
  <form action="http://localhost:8888/day2/servlet" method="get">
    用户名:<input type="text" name="username"><br>
    密码 : <input type="password" name="password"> <br>
    兴趣爱好 : <input type="checkbox" name="hobby" value="java"> java<br>
    <input type="checkbox" name="hobby" value="c++">c++<br>
    <input type="checkbox" name="hobby" value="php">php<br>
    <input type="submit" value="提交">
  </form>
  </body>
</html>

图片.png

图片.png