Maven&Springboot知识点

前置
在Windows条件下启动nginx
开启nginx 从nginx路径下输入nginx.exe
关闭nginx 重新启动窗口输入nginx -s stop
重新加载nginx 启动窗口输入 nginx -s reload
检查nginx的配置文件语法格式是否正确,nginx -t
nginx的端口上80
80端口走的是http协议,80端口在浏览器上访问可以省略的。
nginx是静态资源服务器,静态资源:不走数据库的就是静态资源

Maven

初识Maven

统一了一个标准,后边所有的项目都是按照一个模型出来的。使用起来不会出现太多的额外状况。
基于java来实现的一个管理和控制项目的软件
Maven的作用:

  • 依赖管理 :jar包就找Manven要。
  • 提供了统一的项目结构。
  • 一键构建。参与从源码到发布的各个过程。

Maven可以理解为管家,我们只需要提要求,maven帮我们去实现。
项目对象模型:POM 通过一小段描述信息来管理项目的构建、报告和文档。

创建包名?

公司域名:www.qq.com/www.baidu.com
域名反写:com.qq /com.baidu
项目名称:springboot_quickstart
com.qq.bootdemo
子包 :
com.qq.bootdemo

     - web
     - service
     - mapper

Maven概概述

Maven模型仓库

仓库:用于存储资源,管理各种jar包

仓库的本质就是一个目录(文件夹),这个目录就被用来存储开发中所有依赖和插件

Maven和jar包的关系:
我们开发者问maven要jar包,对于maven来说需要给我们提供jar包。已经有的可以直接提供,不存在的jar包maven会去中央仓库找,
**中央仓库是什么意思呢?**由Maven团队维护的全球唯一的,中央仓库是阿帕奇进行维护jar包的仓库,中央仓库在国外,下载速度很慢 中央仓库的地址是https://repo1.maven.org/maven2/
maven的下载流程:maven先去本地仓库找,本地仓库没有就去私服查找,私服没有就去中央仓库进行查找,如果有就直接下载,如果中央仓库不存在jar包就没有办法了
**什么叫本地仓库?**我们自己从网上git下来的就是本地仓库。
私服:一般由公司团队搭建的私有仓库

Maven模型

  • 项目对象模型
  • 依赖管理模型 --依赖管理
  • 构建生命周期/阶段 --一键构建 maven是可以参与项目从源码阶段到发布阶段的整个过程‘管家’/maven通过一个个的插件来帮助我们实现对应的功能

功能介绍
1、构建生命周期阶段(Build lifecycle & phases)
2、项目对象模型
3、依赖管理模型(Dependency)
在pom中配置depedencies,需要什么jar包就添加进去。

一组标签用来藐视一个唯一的jar包,一组
这么一个标签可以成为坐标也称之为依赖。

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope><!--scope是作用范围-->,
						<!--默认的是Complie一直有效 
						test单元测试有效 
						provided在写代码期间有效,运行的时候就没了 -->


        </dependency>
    </dependencies>


所谓唯一:
	groupId==》组织名/公司名
	artifactId==》产品
	version==》定义唯一的版本号
看到点就是目录,就要再往下找。

Maven项目管理

pom配置详解

POM (Project Object Model) :指的是项目对象模型,用来描述当前的maven项目。

  • 使用pom.xml文件来实现
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <!-- POM模型版本 -->
  <modelVersion>4.0.0</modelVersion>

  <!-- 当前项目坐标 -->
  <groupId>com.itheima</groupId>
  <artifactId>maven_project1</artifactId>
  <version>1.0-SNAPSHOT</version>

  <!-- 打包方式 -->
  <packaging>jar</packaging>

</project>

pom文件详解:

  • :pom文件的根标签,表示当前maven项目
  • :声明项目描述遵循哪一个POM模型版本
    • 虽然模型本身的版本很少改变,但它仍然是必不可少的。目前POM模型版本是4.0.0
  • 坐标 :、、
    • 定位项目在本地仓库中的位置,由以上三个标签组成一个坐标
  • :maven项目的打包方式,通常设置为jar或war(默认值:jar)

Maven坐标详解

什么是坐标?

  • Maven中的坐标是资源的唯一标识 , 通过该坐标可以唯一定位资源位置
  • 使用坐标来定义项目或引入项目中需要的依赖

Maven坐标主要组成

  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima) 一般是公司域名的反写
  • artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service) 产品名称
  • version:定义当前项目版本号

如下图就是使用坐标表示一个项目:

    <groupId>com.itheima</groupId>
    <artifactId>maven_demo</artifactId>
    <version>1.0-SNAPSHOT</version>

注意:

  • 上面所说的资源可以是插件、依赖、当前项目。
  • 我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。

properties作用:
1、定义共有的属性。可以理解为临时的变量
2、约定程序的版本信息

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

依赖管理

依赖配置

依赖:指当前项目运行所需要的jar包。一个项目中可以引入多个依赖:
例如:在当前工程中,我们需要用到logback来记录日志,此时就可以在maven工程的pom.xml文件中,引入logback的依赖。具体步骤如下:

  1. 在pom.xml中编写标签
  2. 在标签中使用引入坐标
  3. 定义坐标的 groupId、artifactId、version

注意顺序不要乱顺序
如果引入的依赖,在本地仓库中不存在,将会连接远程仓库 / 中央仓库,然后下载依赖(这个过程会比较耗时,耐心等待)

<dependencies>
    <!-- 第1个依赖 : logback -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.11</version>
    </dependency>
    <!-- 第2个依赖 : junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

依赖传递

依赖具有传递性

早期我们没有使用maven时,向项目中添加依赖的jar包,需要把所有的jar包都复制到项目工程下。如下图所示,需要logback-classic时,由于logback-classic又依赖了logback-core和slf4j,所以必须把这3个jar包全部复制到项目工程下
快捷键:ctrl+alt+空格 可以把信息补全出来

依赖传递可以分为:

  1. 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  2. 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

image-20220616115445812.png
依赖传递:
a
b
c
a和b 直接依赖
a和c 简介依赖

排除依赖

什么是排除依赖?

  • 排除依赖:指主动断开依赖的资源。(被排除的资源无需指定版本)
<dependency>
    <groupId>com.itheima</groupId>
    <artifactId>maven-projectB</artifactId>
    <version>1.0-SNAPSHOT</version>
   
    <!--排除依赖, 主动断开依赖的资源-->
    <exclusions>
    	<exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </exclusion>
    </exclusions>
</dependency>

排除依赖:
a
b
c
a不知道c的存在要在b中配置

<dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.11</version>
 					 <exclusions>
    					<exclusion>
           		 <groupId>junit</groupId>
           		 <artifactId>junit</artifactId>
        		</exclusion>
    </exclusions>
</dependency>

依赖范围

image-20220616123806894.png
依赖的作用范围

  1. 主程序范围有效(main文件夹范围内)
  2. 测试程序范围有效(test文件夹范围内)
  3. 是否参与打包运行(package指令范围内)
  <!--给当前的项目设置junit    -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope><!--作用范围,默认的是Complie-->
            <!--程序  依赖a =》为了写代码不报错,程序打包的时候也没有a的代码
            写代码 是编译=》检查语法有没有错误
            程序.jar =>里边都是可以执行的代码  程序没有a

            服务器上有a,
            provided只有两个jar包和他有关系
                一个是servlet
                另外一个是jsp。

            -->

        </dependency>
    </dependencies>

compile 一直存在

test 测试中存在

provided 写代码能导报,运行的时候不存在(别人已经提供了!!!)

生命周期

三套生命周期

clean 清理(删除trget目录) 常用
mvn clean 删除target
default 默认(项目从源码阶段到部署阶段) 常用
mvn compile 编译代码,生成target
mvn test 先执行compile 生成target,直接单元测试
mvn package 先执行compile 然后执行test,最后将代码打包(jar/war/pom:父子工程)
mvn install 先执行compile,然后执行test,在执行package,最后把jar包安装到本地仓库
site 站点 没用

生命周期的对应命令是按照先后顺序走的,中途断了不会继续往后运行了!!!

Springboot入门

boot模板:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.3</version>
    <relativePath/>
</parent>

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.20</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.7.3</version>
        </plugin>
    </plugins>
</build>

快速入门

简介:spring makes java simp
https://spring.io
springboot是基于springFramework。
优点:

  1. 简化配置
  2. 快速开发

spring boot 可以帮助我们非常快速地构建应用程序、简化开发、提高效率
javaweb本质:通过浏览器访问去执行特定的java代码
class能够玩的是反射,以后看到xxx.class

  1. cv坐标
  2. 编写项目启动类
    1. _/项目启动类/
      _@SpringBootApplication
      public class BootDemoApplication {
      public static void main(String[] args) {
      SpringApplication.run(BootDemoApplication.class,args);
      }
      }
  3. 页面功能类
    1. _/页面功能类/
      _@RestController
      public class HelloController {
      @RequestMapping(“/hello”)
      public String hello(){
      return “hello 王佳伟”;
      }
      }

开发步骤

web分析

HTTP协议

介绍

本质是通过一个路径敲回车能到java后台中的路径中并执行java代码
web是基于http1.0和http1.1的版本
HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输的规则。

  • http是互联网上应用最为广泛的一种网络协议
  • http协议要求:浏览器在向服务器发送请求数据时,或是服务器在向浏览器发送响应数据时,都必须按照固定的格式进行数据传输

结论:一来一回,一来指的是访问服务器,一回值得是回应浏览器

特点:

3次握手/4次挥手==>面试的标准

  • 基于TCP协议:面向连接,安全
  • 基于请求-响应模型

http协议本身是无状态的,每次请求都是独立的,如果要数据共享的话,http是做不到的,需要配合后台通过会话技术来实现的。

协议概述

请求协议

先有请求再有访问

GET :get没有请求体
POST:存在请求体,写的的任何参数都是在请求体中。
PUT
DELETE
OPTIONS:问询请求,前端处理

请求格式:

请求格式: 分为四部分
请求行:
GET /hello HTTP/1.1
、 使用空格进行区分的
GET 是请求方式,/hello是访问路径,HTTP/1.1 是/请求协议/版本号
请求头:
请求头是以Key:value 形式体现的
记住:content-type:表示数据通过那种格式传递到后台
请求空行
请求体

响应协议

格式介绍
回应格式

回应格式: 分为四部分
回应行:
HTTP/1.1 200
协议/ 200是状态码:
回应头:
Content-Type: text/html;charset=UTF-8
Content-Type:指的后台通过那种格式返回给浏览器
回应空行
回应体:上边响应看到

HTTP/1.1 200
Content-Type: text/html;charset=UTF-8
Content-Length: 10
Date: Sun, 16 Jul 2023 02:08:06 GMT
Keep-Alive: timeout=60
Connection: keep-alive
响应状态码

200表示成功
302表示重定向
304表示本地缓存(仅限于get请求)
400表示坏的请求(boot框架,如果参数对不上会出现这个问题)参数错了
404表示路径写错了
405表示方式没有被允许
500表示代码写错了

WEB服务器-Tomcat

介绍

服务器指的是硬件和软件
特点:免费 开源

Web服务器
Tomcat

Tomcat服务器软件是一个免费的开源的web应用服务器。是Apache软件基金会的一个核心项目。由Apache,Sun和其他一些公司及个人共同开发而成。
由于Tomcat只支持Servlet/JSP少量JavaEE规范,所以是一个开源免费的轻量级Web服务器。

JavaEE规范: JavaEE => Java Enterprise Edition(Java企业版)
avaEE规范就是指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF
jsp几乎淘汰掉了,每次运行都要编译,很麻烦

因为Tomcat支持Servlet/JSP规范,所以Tomcat也被称为Web容器、Servlet容器。JavaWeb程序需要依赖Tomcat才能运行。
Tomcat的官网: https://tomcat.apache.org/

基本使用

解压之后使用startup.bak运行

入门程序解析

与上次手动创建最终效果一致

起步依赖

spring-boot-starter-web和spring-boot-starter-test,在SpringBoot中又称为:起步依赖
而在SpringBoot的项目中,有很多的起步依赖,他们有一个共同的特征:就是以spring-boot-starter-作为开头。在以后大家遇到spring-boot-starter-xxx这类的依赖,都为起步依赖。
起步依赖有什么特殊之处呢,这里我们以入门案例中引入的起步依赖做为讲解:

  • spring-boot-starter-web:包含了web应用开发所需要的常见依赖
  • spring-boot-starter-test:包含了单元测试所需要的常见依赖

spring-boot-starter-web内部把关于Web开发所有的依赖都已经导入并且指定了版本,只需引入 spring-boot-starter-web 依赖就可以实现Web开发的需要的功能
image-20221202204013113.png

SpringBoot父工程

在我们之前开发的SpringBoot入门案例中,我们通过maven引入的依赖,是没有指定具体的依赖版本号的。

已经整合了很多的左边,用什么就配置什么,剩下的局势SpringBoot给你搞定
要啥找boot要,要来直接使用。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jie_Chang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值