JavaWeb基础-HTTP协议、请求协议、响应协议

一. HTTP协议

        1. HTTP协议:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则

        2. HTTP协议特点:

                ① 基于TCP协议:面向链接,安全

                ② 基于请求-响应模型的:一次请求对应一次响应

                ③ HTTP协议是无状态的协议:对于事物处理没有记忆能力,每次请求-响应都是独立的(缺点:多次请求间数据不能共享;优点:速度快)

二. HTTP-请求协议

        1. 请求数据格式

        请求方式-get请求参数在请求行中,没有请求体(如:localhost:8080/hello?name=卡莎);get请求大写在浏览器中是有限制的。

        请求方式-post请求参数在请求体中;post请求大小是没有限制的

        2. 请求数据获取

                (1) web服务器(Tomcat)对HTTP协议的请求数据进行解析,并进行了封装(HttpServletRequest),在调用Controller方法的时候传递给了该方法。这样,就使得程序员不必直接对协议进行操作,web开发更加便捷

package com.example;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RequestController {
    @RequestMapping("/request")
    public String request(HttpServletRequest request){
        //1.获取请求方式
        System.out.println("获取请求方式" + request.getMethod());

        //2.获取URL地址
        System.out.println("获取URL地址" +request.getRequestURL());
        System.out.println("获取URI地址" +request.getRequestURI());

        //3.获取请求协议
        System.out.println("获取请求协议" +request.getProtocol());

        //4.获取请求参数-name.age
        System.out.println("获取请求参数" +request.getParameter("name"));
        System.out.println("获取请求参数" +request.getParameter("age"));

        //5.获取请求头-Accept
        System.out.println("获取请求头Accept" +request.getHeader("Accept"));

        return "OK";
    }
}

三. HTTP-响应协议

        1. 响应数据格式

         2. 响应数据设置

                1. web服务器对HTTP协议的响应数据进行了封装(HttpServletResponse),并在调用Controller方法的时候传递给了该方法。这样就使得程序员不必直接对协议进行操作,让Web开发更加便捷

package com.example;

import jakarta.servlet.http.HttpServletResponse;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;

@RestController
public class ResponseController {

    /*
    * 方式一 原始HttpServletResponse
    * */
    @RequestMapping("/response")
    public void response(HttpServletResponse response) throws IOException {
        //1.设置响应状态码
        response.setStatus(HttpServletResponse.SC_OK);

        //2.设置响应头
        response.setHeader("Content-Type","text/html");

        //3.设置响应体
        response.getWriter().write("<h1>Hello Response</h1>");

    }

    /*
    * 方式二:spring 设置响应数据
    * */
    @RequestMapping("/response2")
    public ResponseEntity<String> responseEntity() {
        //链式编程
        return ResponseEntity.status(HttpServletResponse.SC_OK)
                .header("Content-Type","text/html")
                .body("<h1>Hello ResponseEntity</h1>");
    }
}

  

        注意:响应状态码 和 响应头如果没有特殊要求的话,通常不手动设定。服务器会根据请求处理的逻辑,自动设置响应状态码和响应头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值