JaveWeb后端-Web基础-SpringBoot Web、HTTP协议

Spring

官网:spring.io

SpringBootWeb使用步骤

1、创建SpringBoot工程,勾选web开发依赖


2、定义请求处理类~~Controller,定义请求处理方式

java 复制代码
@RestController//表示当前类是一个请求处理类
public class HelloController {
    @RequestMapping("/hello")
    public String hello(String name){
        System.out.println("name:"+name);
        return "hello:"+name+"~";
    }
}

3、运行启动类,测试

HTTP协议

Hyper Text Transfer Protocol

特点:

1、基于TCP协议:面向连接,安全

2、基于请求-响应模型:一次请求对应一次响应

3、HTTP是无状态的连接:对事务处理没有记忆能力,每次请求-响应都是独立的

缺点:多次请求间不能共享数据

优点:速度快

HTTP-请求协议

请求数据格式

红色:请求行

黄色:请求头

常见请求头

请求体:POST请求,存放请求参数
get方式和post方式

请求数据获取

java 复制代码
@RestController
public class RequestController {
    @RequestMapping("/request")
    public String request(HttpServletRequest request){
        //1、获取请求方式
        String method = request.getMethod();
        System.out.println("请求方式:"+method);
        //2、获取请求url地址
        String url = request.getRequestURL().toString();//http://localhost:8080/request
        System.out.println("请求url地址:"+url);
        String uri = request.getRequestURI();
        System.out.println("请求uri地址:"+uri);
        //3、获取请求协议
        String protocol = request.getProtocol();//HTTP/1.1
        System.out.println("请求协议:"+protocol);
        //4、获取请求参数-name,age
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        System.out.println("请求参数-name:"+name);
        System.out.println("请求参数-age:"+age);
        //5、获取请求头-Accept
        String header = request.getHeader("Accept");
        System.out.println("请求头-Accept:"+header);

        return "OK";
    }

}

HTTP-响应协议

响应数据格式

响应数据:响应行,响应头,响应体

状态码图鉴

java 复制代码
@RestController
public class ResponseController {
    /**
     * 方式一:使用HttpServletResponse设置响应数据
     * @param response
     * @throws IOException
     */
    @RequestMapping("/response")
    public void response(HttpServletResponse  response) throws IOException {
        //1、设置响应状态码
        response.setStatus(401);
        //2、设置响应头
        response.setHeader("name","it");
        //3、设置响应体
        response.getWriter().write("<h1>hello response</h1>");
    }
    /**
     * 方式二:使用ResponseEntity设置响应数据
     */

    @RequestMapping("/response2")
    public ResponseEntity<String> response2(){
        return ResponseEntity.status(401)//响应状态码
                .header("name","javaweb-ai")//响应头
                .body("<h1>hello response2</h1>");//响应体
    }

}
相关推荐
太平洋月光12 分钟前
AI 快捷指令:Cursor Rules · Commands · Skills
前端·ai编程
默_笙15 分钟前
😁 LLM 不知道的事它不会说"不知道",而是会"编"——RAG 就是让它闭嘴先查资料
前端·javascript
stringwu17 分钟前
用 LangGraph 落地飞书 Bug 自动修复 Agent 实践
前端
Revolution6117 分钟前
变量提升到底提升了什么:为什么 var 是 undefined,let 却直接报错
前端·javascript
Revolution6122 分钟前
本地明明正常,为什么 CI 又挂了:一次前端构建失败的排查过程
前端·前端工程化
太平洋月光29 分钟前
stagewise如何结合cursor开发
前端·ai编程
前端Hardy30 分钟前
JavaScript 终于又进化了!ES2026 正式发布,这些新特性你必须知道!
前端
光影少年31 分钟前
react navite 页面跳转、传参、路由监听、导航栏自定义
前端·react native·react.js
黑土豆42 分钟前
CSS 新特性:Container Queries 到底能解决什么痛点?
前端·css
奈何不吃鱼1 小时前
【SpringBoot】业务多线程四大实战场景
java·spring boot·多线程