Maven、springboot(javaweb第四天)

Maven作用

管理和构建java项目的工具

依赖管理

方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题

只需要在配置文件pom中描述

同一项目结构

maven统一项目结构:
src:
------main(实际项目资源)
------------java(java源代码目录)
------------resource(配置文件目录)
------text(测试项目资源)
------pom.xml(项目配置文件)

项目构建

标准跨平台(Linux、Windows、MacOS)的自动化项目构建工具
自动:
清理、编译、测试、打包、发布

介绍

通过插件实现标准化构建
项目对象模型
依赖管理模型
仓库:存储资源、管理jar包
分为:本地、中央、远程仓库

依赖管理

引入后要重新加载才会生效

<dependencies>
    <dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      <version>3.8.1version>
      <scope>testscope>
    dependency>
dependencies>

依赖传递

依赖其他项目会依赖其他项目依赖的包

可以通过exclusions排除不想要的依赖

 <dependency>
      <groupId>ch.qos.logbackgroupId>
      <artifactId>logback-classicartifactId>
      <version>1.2.3version>
      <exclusions>
        <exclusion>
          <groupId>org.slf4jgroupId>
          <artifactId>slf4j-apiartifactId>
        exclusion>
      exclusions>
    dependency>

依赖范围

通过scops设置作用范围(默认整个模块)
取值:
compile(默认):主程序+测试程序+打包
test:测试程序
provided:主程序、测试程序
runtime:测试程序、打包

<dependencies>
    <dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      <version>3.8.1version>
      <scope>testscope>//只在test有效
    dependency>
dependencies>

生命周期

对所有项目构建过程进行抽象和统一

3套相互独立的生命周期:
clean:清理工作
default:核心工作:编译、打包等
site:生成报告、发布站点等

clean
clean:移除上次构建生成的文件

default
compile:编译项目源代码
test:使用合适的单元测试框架进行测试
package:将编译后的文件打包,如jar、war等
install:安装项目到本地仓库

同一个生命周期
运行后面也会运行前面步骤

SpringBoot

SpringBoot入门

创建springboot工程、选择web开发
定义HelloController,添加hello方法、添加注解
运行测试

package com.example.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return "hello world";
    }
}

@RestController//请求处理类
@RequestMapping(响应的请求)//请求处理方法

http协议

规定浏览器和服务器数据传输的规则

概述

特点:
基于TCP协议:面向连接、安全
基于请求响应模型:一次请求一次响应
无状态协议:
对事务没有记忆能力、每次请求-响应都是独立的
缺点:多次请求不能共享数据
优点:速度快

请求协议

GET /hello HTTP/1.1  请求方式、资源路径、协议(请求行)
Accept:   text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: max-age=0
Connection: keep-alive
Host: localhost:8080
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
sec-ch-ua: "Google Chrome";v="137", "Chromium";v="137", "Not/A)Brand";v="24"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"

请求头:
Host:请求主机名
User-Agent:浏览器版本
Accept:浏览器接收信息类型
Accept-Language:浏览器偏好的语言
Accept-Encoding:浏览器可以支持的压缩类型
Content-Type:请求主体的数据类型
Content-Length:请求主体的大小(单位字节)

请求体(post特有):
get:请求参数在请求行
post:请求参数在请求体

响应协议

HTTP/1.1 200 OK 响应行(协议、状态码、描述)
Content-Type: text/html;charset=UTF-8
Content-Length:11
Date: Thu, 05 Jun 2025 08:18:19 GMT
Keep-Alive: timeout=60
Connection: keep-alive

响应行:
状态码:
1xx:响应中:你没发送完整我等着
2xx:成功
3xx:重定向:资源不在我这里,我给你指路,你去找
4xx:客户端错误
5xx:服务端错误

响应头:
Content-Type:响应内容的数据类型
Content-Length:响应内容的字节数(单位字节)
Content-Encoding:响应压缩算法
Cache-Control:客户端如何缓存
Set-Cookie:为当前页面所在域设置cookie

响应体:
与响应头隔一行
响应回来的数据

协议解析

你可能感兴趣的:(maven,spring,boot,java)