AJAX 入门 day1

news2024/9/26 21:55:18

目录

1.AJAX 概念和 axios 使用

2.认识 URL

3.URL 查询参数

4.常用请求方法和数据提交

5.HTTP协议-报文

5.1 HTTP 协议-请求报文

5.2 HTTP 协议-响应报文

6.接口文档

7.案例 - 用户登录

8.form-serialize 插件


1.AJAX 概念和 axios 使用

“Ajax” 是 “Asynchronous(异步) JavaScript and XML” 的缩写,是一种用于创建动态网页的技术。它允许网页在不重新加载整个页面的情况下与服务器进行交互和更新内容,从而提高用户体验和页面的响应速度。

Ajax 的基本工作流程是:

  1. 用户在网页上触发事件(如点击按钮)。
  2. JavaScript 代码使用 XMLHttpRequest 对象向服务器发送请求。
  3. 服务器处理请求并返回数据。
  4. JavaScript 代码处理返回的数据,并更新页面内容,而无需重新加载整个页面。

怎么用 AJAX ?

1. 先使用 axios [æk‘sio ʊ s] 库, 与服务器进行 数据通信
  • 基于 XMLHttpRequest 封装、代码简单、月下载量在 14 亿次
  • Vue、React 项目中都会用到 axios
2. 再学习 XMLHttpRequest 对象的使用,了解 AJAX 底层原理

语法:
1. 引入 axios.js: https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js
2. 使用 axios 函数
  • 传入配置对象
  • 再用 .then 回调函数接收结果,并做后续处理

练习:

需求:请求目标资源地址,拿到省份列表数据,显示到页面
目标资源地址: http://hmajax.itheima.net/api/province
代码:
<body>
    <p></p>
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    <script>
        /* 通过后台数据渲染到页面 */
        const p = document.querySelector('p')

        axios({
            url: 'https://hmajax.itheima.net/api/province'
        }).then(result => {
            // console.log(result)
            // console.log(result.data.list)
            p.innerHTML = result.data.list.join('<br>')
        })
    </script>
</body>

2.认识 URL

URL,即统一资源定位符(Uniform Resource Locator),是用来指定互联网资源位置的地址。

一个典型的 URL 由以下几个部分组成:

  1. 协议(Protocol):指定使用的网络协议,例如 httphttpsftp 等。比如 https:// 表示使用安全的 HTTP 协议。
  2. 域名(Domain Name):表示资源所在的服务器的名称,例如 www.example.com
  3. 端口号(Port)(可选):指定服务器上用于通信的端口。例如,http://example.com:8080 指的是端口号为 8080 的服务器。
  4. 资源路径(Path):指向服务器上特定的资源或文件的位置。例如 /path/to/resource
  5. 查询字符串(Query String)(可选):提供附加的参数或数据,通常以 ? 开始。例如 ?key1=value1&key2=value2
  6. 锚点(Fragment)(可选):指向页面内部的某个部分或位置,通常以 # 开始。例如 #section1

一个完整的 URL 可能如下所示:

https://www.example.com:8080/path/to/resource?key1=value1&key2=value2#section1

最常见的URL是这样的:

参数说明:

  • http 协议:超文本传输协议,规定浏览器和服务器之间传输数据的格式
  • 域名:标记服务器在互联网中方位
  • 资源路径:标记资源在服务器下的具体位置

3.URL 查询参数

定义:浏览器提供给服务器的 额外信息 ,让服务器返回浏览器想要的数据
语法:http://xxxx.com/xxx/xxx ? 参数名1=值1 & 参数名2=值2

语法:使用 axios 提供的 params 选项
注意:axios 在运行时把参数名和值,会拼接到 url ?参数名=值
城市列表: http://hmajax.itheima.net/api/city?pname=河北省

案例:
地区查询
需求:根据输入的省份名字和城市名字,查询地区并渲染列表
效果图:
代码:
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <script>
    /*
      获取地区列表: http://hmajax.itheima.net/api/area
      查询参数:
        pname: 省份或直辖市名字
        cname: 城市名字
    */

    const btn = document.querySelector('.sel-btn')
    btn.addEventListener('click', function () {
      // 获取表单数据
      pName = document.querySelector('.province').value
      cName = document.querySelector('.city').value

      // console.log(11)
      // console.log(cname)
      axios({
        url: 'https://hmajax.itheima.net/api/area',
        params: {
          pname: pName,
          cname: cName
        }
      }).then(result => {
        // console.log(result.data.list)
        document.querySelector('.list-group').innerHTML = result.data.list.map(item => {
          return `
            <li class="list-group-item">${item}</li>
          `
        }).join('')
      })

    })

  </script>

4.常用请求方法和数据提交

请求方法:对服务器 资源 ,要执行的 操作
使用场景: 当数据需要在服务器上 保存

案例:

数据提交-注册账号

需求:通过 axios 提交用户名和密码,完成注册功能
注册用户 URL 地址: http://hmajax.itheima.net/api/register
请求方法: POST
参数名:
username 用户名(中英文和数字组成,最少 8 位)
password 密码(最少 6 位)

代码:

<body>
  <button class="btn">注册用户</button>
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <script>
    /*
      注册用户: http://hmajax.itheima.net/api/register
      请求方法: POST
      参数名:
        username: 用户名 (中英文和数字组成, 最少8位)
        password: 密码 (最少6位)

      目标: 点击按钮, 通过axios提交用户和密码, 完成注册
    */

    const btn = document.querySelector('.btn')

    btn.addEventListener('click', function () {
      axios({
        url: 'http://hmajax.itheima.net/api/register',
        method: 'POST',
        data: {
          username: 'linhanxin',
          password: '123456'
        }
      }).then(result => {
        console.log(result)
        //获取错误信息,显示给用户看
      }).catch(error => {
        alert(error.response.data.message)
      })
    })
  </script>
</body>

axios错误处理,可以让客户端更直观看到错误信息。从而去修改。

捕捉到的 error 是一个错误对象。

5.HTTP协议-报文
 

5.1 HTTP 协议-请求报文

HTTP 协议:规定了浏览器发送及服务器返回内容的 格式
请求报文 :浏览器按照 HTTP 协议要求的 格式 ,发送给服务器的 内容

请求报文的组成部分有:
  • 1. 请求行:请求方法,URL,协议
  • 2. 请求头:以键值对的格式携带的附加信息,比如:Content-Type
  • 3. 空行:分隔请求头,空行之后的是发送给服务器的资源
  • 4. 请求体:发送的资源

5.2 HTTP 协议-响应报文

HTTP 协议:规定了浏览器发送及服务器返回内容的 格式
响应报文 :服务器按照 HTTP 协议要求的 格式 返回给浏览器的 内容
响应报文的组成部分有:
  • 1. 响应行(状态行):协议、HTTP 响应状态码、状态信息
  • 2. 响应头:以键值对的格式携带的附加信息,比如:Content-Type
  • 3. 空行:分隔响应头,空行之后的是服务器返回的资源
  • 4. 响应体返回的资源

HTTP 响应状态码
HTTP 响应状态码:用来表明请求 是否成功 完成
比如: 404(服务器找不到资源)

6.接口文档

接口文档 描述 接口 的文章 (后端工程师)
接口 :使用 AJAX 和服务器通讯时, 使用的 URL 请求方法 以及参数
传送门 :https://apifox.com/apidoc/shared-1b0dd84f-faa8-435d-b355-5a8a329e34a8

通过接口文档,就可以根据里面的需求来实现代码。

7.案例 - 用户登录

案例-用户登录
  • 1. 点击登录时,判断用户名和密码长度
  • 2. 提交数据和服务器通信
  • 3. 提示信息
    • 并且实现成功或者失败返回不同颜色的提示框

代码:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>11.案例_登录</title>
  <!-- 引入bootstrap.css -->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css">
  <!-- 公共 -->
  <style>
    html,
    body {
      background-color: #EDF0F5;
      width: 100%;
      height: 100%;
      display: flex;
      justify-content: center;
      align-items: center;
    }

    .container {
      width: 520px;
      height: 540px;
      background-color: #fff;
      padding: 60px;
      box-sizing: border-box;
    }

    .container h3 {
      font-weight: 900;
    }
  </style>
  <!-- 表单容器和内容 -->
  <style>
    .form_wrap {
      color: #8B929D !important;
    }

    .form-text {
      color: #8B929D !important;
    }
  </style>
  <!-- 提示框样式 -->
  <style>
    .alert {
      transition: .5s;
      opacity: 0;
    }

    .alert.show {
      opacity: 1;
    }
  </style>
</head>

<body>
  <div class="container">
    <h3>欢迎-登录</h3>
    <!-- 登录结果-提示框 -->
    <div class="alert alert-success" role="alert">
      提示消息
    </div>
    <!-- 表单 -->
    <div class="form_wrap">
      <form>
        <div class="mb-3">
          <label for="username" class="form-label">账号名</label>
          <input type="text" class="form-control username">
        </div>
        <div class="mb-3">
          <label for="password" class="form-label">密码</label>
          <input type="password" class="form-control password">
        </div>
        <button type="button" class="btn btn-primary btn-login"> 登 录 </button>
      </form>
    </div>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <script>
    // 目标1:点击登录时,用户名和密码长度判断,并提交数据和服务器通信
    //  不要盲目写代码,先写需求,然后再翻译成代码
    const btn = document.querySelector('.btn-login')
    const admin = document.querySelector('.alert')

    btn.addEventListener('click', () => {
      const username = document.querySelector('.username').value
      const password = document.querySelector('.password').value

      // 封装函数,提示用户登录状态
      function status(mes, flag) {
        // 1.显示提示框
        admin.classList.add('show')

        // 2.实现细节
        admin.innerHTML = mes
        const bgStyle = flag ? 'alert-success' : 'alert-danger'
        admin.classList.add(bgStyle)

        // 3.提示两秒后消失
        timeOut = setTimeout(function () {
          admin.classList.remove('show')
          admin.classList.remove(bgStyle)
        }, 2000)

      }

      if (username.length < 8) {
        console.log('账户不能少于8位')
        status('账户不能少于8位', false)
        // 不满足条件就返回,不要往下执行
        return
      }

      if (password.length < 6) {
        console.log('密码不能少于6位')
        status('密码不能少于6位', false)
        // 不满足条件就返回,不要往下执行
        return
      }
      // console.log(11)

      axios({
        url: 'http://hmajax.itheima.net/api/login',
        method: 'POST',
        // 属性名和属性值的变量名一样可以简写
        data: {
          username,
          password
        }
      }).then(result => {
        // 打印对象
        console.log(result.data.message)
        status(result.data.message, true)
      }).catch(error => {
        // 捕捉错误信息
        console.log(error.response.data.message)
        status(error.response.data.message, false)
      })
    })
  </script>
</body>

</html>

8.form-serialize 插件

作用: 快速 收集表单元素的值

使用:

  • 1.引入form-serialize 插件的 js文件
  • 2.通过调用serialize(表单,对象)函数来实现
    • 使用serialize函数,快速收集表单元素的值
             * 参数1:要获取哪个表单的数据
             *  表单元素设置name属性,值会作为对象的属性名

             * 参数2:配置对象
             *  hash 设置获取数据结构
             *    - true:JS对象(推荐)一般请求体里提交给服务器
             *    - false: 查询字符串(username="Xxx" & )
             *  empty 设置是否获取空值
             *    - true: 获取空值(推荐)数据结构和标签结构一致
             *    - false:不获取空值

代码演示:

<body>
  <form action="javascript:;" class="example-form">
    <input type="text" name="uname">
    <br>
    <input type="text" name="pwd">
    <br>
    <input type="button" class="btn" value="提交">
  </form>
  <!-- 
    目标:在点击提交时,使用form-serialize插件,快速收集表单元素值
  -->
  <!-- 引入插件的js -->
  <script src="./lib/form-serialize.js"></script>
  <script>
    document.querySelector('.btn').addEventListener('click', () => {
      // 获取表单对象
      const form = document.querySelector('.example-form')
         /**
       * 2. 使用serialize函数,快速收集表单元素的值
       * 参数1:要获取哪个表单的数据
       *  表单元素设置name属性,值会作为对象的属性名
       *  建议name属性的值,最好和接口文档参数名一致
       * 参数2:配置对象
       *  hash 设置获取数据结构
       *    - true:JS对象(推荐)一般请求体里提交给服务器
       *    - false: 查询字符串(username="Xxx" & )
       *  empty 设置是否获取空值
       *    - true: 获取空值(推荐)数据结构和标签结构一致
       *    - false:不获取空值
      */
      const data = serialize(form, { hash: true, empty: true })
      console.log(data)

    })
  </script>
</body>

案例-用户登录
使用 form-serialize 插件, 收集 用户名和密码

代码实现:

<body>
  <div class="container">
    <h3>欢迎-登录</h3>
    <!-- 登录结果-提示框 -->
    <div class="alert alert-success" role="alert">
      提示消息
    </div>
    <!-- 表单 -->
    <div class="form_wrap">
      <form class="login-form">
        <div class="mb-3">
          <label for="username" class="form-label">账号名</label>
          <input type="text" class="form-control username" name="username">
        </div>
        <div class="mb-3">
          <label for="password" class="form-label">密码</label>
          <input type="password" class="form-control password" name="password">
        </div>
        <button type="button" class="btn btn-primary btn-login"> 登 录 </button>
      </form>
    </div>
  </div>
  <script src="./lib/form-serialize.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <script>
    // 目标1:点击登录时,用户名和密码长度判断,并提交数据和服务器通信
    // 目标2:使用提示框,反馈提示消息
    // 目标3:使用form-serialize插件,收集用户名和密码

    // 2.1 获取提示框
    const myAlert = document.querySelector('.alert')
    /**2.2 封装提示框函数,重复调用,满足提示需求
     * 功能:
     * 1. 显示提示框
     * 2. 不同提示文字msg,和成功绿色失败红色isSuccess(true成功,false失败)
     * 3. 过2秒后,让提示框自动消失
    */
    function alertFn(msg, isSuccess) {
      // 1> 显示提示框
      myAlert.classList.add('show')

      // 2> 实现细节
      myAlert.innerText = msg
      const bgStyle = isSuccess ? 'alert-success' : 'alert-danger'
      myAlert.classList.add(bgStyle)

      // 3> 过2秒隐藏
      setTimeout(() => {
        myAlert.classList.remove('show')
        // 提示:避免类名冲突,重置背景色
        myAlert.classList.remove(bgStyle)
      }, 2000)
    }

    // 1.1 登录-点击事件
    document.querySelector('.btn-login').addEventListener('click', () => {
      // 1.2 获取用户名和密码
      // 获取表单对象
      const form = document.querySelector('.login-form')
      // 利用serialize插件来实现获取表单的值
      const data = serialize(form, { hash: true, empty: true })
      // 利用解构简化开发
      const { username, password } = data

      console.log(data)


      // const username = document.querySelector('.username').value
      // const password = document.querySelector('.password').value
      // console.log(username, password)

      // 1.3 判断长度
      if (username.length < 8) {
        alertFn('用户名必须大于等于8位', false)
        console.log('用户名必须大于等于8位')
        return // 阻止代码继续执行
      }
      if (password.length < 6) {
        alertFn('密码必须大于等于6位', false)
        console.log('密码必须大于等于6位')
        return // 阻止代码继续执行
      }

      // 1.4 基于axios提交用户名和密码
      // console.log('提交数据到服务器')
      axios({
        url: 'http://hmajax.itheima.net/api/login',
        method: 'POST',
        data: {
          username,
          password
        }
      }).then(result => {
        alertFn(result.data.message, true)
        console.log(result)
        console.log(result.data.message)
      }).catch(error => {
        alertFn(error.response.data.message, false)
        console.log(error)
        console.log(error.response.data.message)
      })
    })
  </script>
</body>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2137701.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试 - 找出作弊的人(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加…

JNI 详细介绍

一 介绍 java调⽤c&#xff0c;c代码可以通过JNIEnv执行java代码。 安卓NDK 已经对JNI环境进行了集成&#xff0c;我们可以通过android studio来快速搭建一个项目。 二 项目搭建 打开android studio 创建工程&#xff0c;创建工程选择模板Native C 三 模板格式介绍 生成的…

char 的整数存储解释

目录 1.原因讲解 1.有符号类型的char 2.无符号类型的char(0-255) 练习题1. 练习题2. 练习题3. 小心&#xff01;VS2022不可直接接触&#xff0c;否则&#xff01;没这个必要&#xff0c;方源面色淡然一把抓住&#xff01;顷刻炼化&#xff01; 1.原因讲解 1.有符号类型的…

AUTOSAR_EXP_ARAComAPI的5章笔记(6)

返回目录 5.3.5.5 Event-Driven vs Polling-Based access ara::com实现完全支持事件驱动和轮询的方式来访问新数据。 对于轮询方式&#xff0c;典型的用例是&#xff0c;一个应用程序被周期性地触发并在特定的截止时间前进行一些处理。这是调节器/控制算法的典型模式 —— 循…

如何清除KylinOS桌面操作系统桌面密钥环?

如何清除KylinOS桌面操作系统桌面密钥环&#xff1f; 1、问题现象2、解决 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、问题现象 打开桌面应用会出现【解锁秘钥环提示】&#xff1a; 2、解决 1、安装seahorse sudo apt-get insta…

【JavaEE】IP协议 应用层协议

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【Java】登神长阶 史诗般的Java成神之路 &#x1f576;️一.IP地址 IP协议&#xff08;Internet Protocol&#xff09;是TCP/IP协议族中最核心的协议之一&#xff0c;它定义了数据包在网络中传输的标准…

Word中插入当前日期与时间

Word中插入当前日期与时间 通过构建基块的方法快速插入当前日期与时间 快捷键操作 快捷键具体功能说明 Alt Shift D 插入当前日期date Alt Shift T 插如当前时间time Ctrl Shift F9 使得域文本变为正常文本 Ctrl F11 锁定域更新域菜单工具会变为黑色 C…

音视频入门基础:AAC专题(5)——FFmpeg源码中,判断某文件是否为AAC裸流文件的实现

一、引言 通过FFmpeg命令&#xff1a; ./ffmpeg -i XXX.aac 可以判断出某个文件是否为AAC裸流文件&#xff1a; 所以FFmpeg是怎样判断出某个文件是否为AAC裸流文件呢&#xff1f;它内部其实是通过adts_aac_probe函数来判断的。从《FFmpeg源码&#xff1a;av_probe_input_for…

Qt/C++ 了解NTFS文件系统,获取首张MFT表数据,解析文件记录头内容找到第一个属性偏移地址

系列文章目录 一、Qt/C 了解NTFS文件系统&#xff0c;了解MFT(Master File Table)主文件表&#xff08;一&#xff09; 二、Qt/C 了解NTFS文件系统&#xff0c;解析盘符引导扇区数据获取MFT(Master File Table)主文件表偏移地址 三、Qt/C 了解NTFS文件系统&#xff0c;获取首张…

还在为企微联系人烦恼?一招解决!企业微信2024年效率升级全攻略

现在信息多得让人眼花&#xff0c;微信里头那些企业微信的联系人是不是让你头疼&#xff1f; 看着满屏的绿色头像&#xff0c;心里想&#xff1a;“我就想和朋友聊聊天&#xff0c;怎么就这么难&#xff1f;”别急&#xff0c;今天教你个办法&#xff0c;轻松搞定这些小烦恼&am…

【无标题】达瓦达瓦

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

胤娲科技:解锁AI奥秘——产品经理的智能进化之旅

当AI不再是遥不可及的科幻 想象一下&#xff0c;你走进一家未来感十足的咖啡厅&#xff0c;无需言语&#xff0c;智能咖啡机就能根据你的偏好调制出一杯完美的拿铁&#xff1b; 打开手机&#xff0c;AI助手不仅提醒你今天有雨&#xff0c;还贴心推荐了最适合雨中漫步的音乐列表…

C语言中的GCC的优化和数组的存放方式、Cache机制、访问局部性

“我们仍需共生命的慷慨与繁华相爱&#xff0c;即使岁月以刻薄和荒芜相欺” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;第一题&#xff1a;***什么是gcc&#xff1a;***C 语言中&#xff0c;“gcc -O2”是使用 GCC 编译器时的一个编译选项。第一部分&#xff1a;为什…

利用yolov8模型实现的西红柿成熟程度检测系统包含源码+配置说明(基于YOLOv8的西红柿成熟程度检测系统)

西红柿成熟程度的检测对于农业生产尤为重要&#xff0c;可以提高收获效率和产品质量。本项目利用YOLOv8&#xff08;You Only Look Once v8&#xff09;模型实现了一个高效的西红柿成熟程度检测系统。该系统可以自动识别西红柿的颜色&#xff0c;从而判断其成熟程度。 关键特性…

pycharm从VCS获取项目报错unable to access:Recv failure:Connection was reset

&#xff08;已老实求放过&#xff09; 版本&#xff1a;PyCharm Community Edition 2024.2.1 【解决办法】取消Git的网络代理&#xff0c;在目标路径所在文件夹处右键选择Git Bash Here&#xff0c;输入以下命令&#xff1a; git config --global --unset http.proxy git …

2024最新版零基础学习Modbus通信协议(保姆级教程)

合集 - 上位机开发(2) 1.零基础学习Modbus通信协议09-13 2.RS485与ModbusRTU09-10 收起 大家好&#xff01;我是付工。 2012年开始接触Modbus协议&#xff0c;至今已经有10多年了&#xff0c;从开始的懵懂&#xff0c;到后来的顿悟&#xff0c;再到现在的开悟&#xff0c;…

STM32的寄存器深度解析

目录 一、STM32 寄存器概述 二、寄存器的定义与作用 三、寄存器分类 1.内核寄存器 2.外设寄存器 四、重要寄存器详解 1.GPIO 相关寄存器 2.定时器相关寄存器 3.中断相关寄存器 4.RCC 相关寄存器 五、寄存器操作方法 1.直接操作寄存器 2.使用库函数操作寄存器 六…

4个方法教你图片转PDF怎么弄。

我们有时候会接触了一些重要的图片文件或者资料&#xff0c;想要装换成可编辑的PDF格式&#xff0c;更方便自己管理。这时候就会需要转换的工具&#xff0c;我这里就有&#xff14;款可以完成这种转换的高效工具可以分享给大家。 1、365PDF转换软件 直通车&#xff1a;www.pdf…

软件设计之JavaWeb(3)

软件设计之JavaWeb(3) 此篇应在MySQL之后进行学习: 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷全新JavaWeb教程&#xff0c;企业主流javaweb技术栈 资料可以去尚硅谷官网免费领取 此章节最好学完JDBC观看 学习内容&#xff1a; 请求转发…

jenkins流水线+k8s部署springcloud微服务架构项目

文章目录 1.k8s安装2.jenkins安装3.k8s重要知识1.简介2.核心概念3.重要命令1.查看集群消息2.命名空间3.资源创建/更新4.资源查看5.描述某个资源的详细信息6.资源编辑7.资源删除8.资源重启9.查看资源日志10.资源标签 4.k8s控制台1.登录2.界面基本操作1.选择命名空间2.查看命名空…