Spring Boot快速搭建一个简易商城项目【一展示商城首页篇】

   前言:今天我来使用Spring Boot快速搭建一个简易商城项目以下是相关的思路流程,如果有更好的思路,欢迎大佬评论留言!!!

一,实现思路:

  1. 创建 Spring Boot 项目: 使用 Spring Initializr(https://start.spring.io/)创建一个新的 Spring Boot 项目,添加 Web、JPA、freemack(或其他模板引擎Thymeleaf)、MySQL(或其他数据库)的依赖。

  2. 设计数据库结构: 设计商城所需的数据库表,比如商品表、订单表、用户表等。使用 JPA 或者 MyBatis 等持久层框架来实现对数据库的访问与操作。

  3. 创建实体类: 根据数据库设计创建对应的实体类,并使用注解来映射到数据库表,同时定义实体之间的关联关系。

  4. 编写业务逻辑: 创建服务类来处理商城的业务逻辑,比如商品的增删改查,用户的注册登录,订单的生成与支付等。

  5. 创建控制器: 编写控制器来响应前端页面的请求,接收参数并调用服务层完成相应的业务逻辑处理,然后返回结果给前端页面。

  6. 创建前端页面: 使用 Thymeleaf 或其他前端模板引擎创建商城的前端页面,包括商品展示页、购物车、订单页面等。

  7. 测试与调试: 对整个项目进行测试与调试,确保各项功能正常运行。

  8. 部署与发布: 将项目打包成可执行的 JAR 包,部署到服务器上并启动项目。

以上是一个简单的商城项目的搭建流程。在实际开发中,还需要考虑安全性、性能优化、异常处理等方面的内容。希望这些步骤能够对你有所帮助!如果还有其他问题,请随时提问。

二,使用到的相关技术点:

  1. Spring Boot:作为基础框架,用于快速构建应用程序的后端。

  2. MySQL(或其他数据库):作为数据存储后端,用于存储商品、订单、用户等信息。

  3. Spring Web:用于构建 Web 应用程序,处理 HTTP 请求和响应。

  4. Freemack:用于创建商城的前端页面,实现页面与后端数据的交互。

  5. Spring Security:用于处理用户认证、授权等安全相关的功能。

  6. RESTful API:如果你打算提供给其他应用程序使用的接口,可以考虑使用 RESTful 风格的 API。

  7. Swagger:用于生成 API 文档,方便前端开发人员了解后端接口的使用方法。

  8. Lombok:简化 Java 代码的开发,通过注解的方式来减少冗长的代码。

  9. Log4j/Logback:用于日志记录,方便排查问题和追踪应用程序运行状态。

三,具体步骤:

pom文件:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lya</groupId><artifactId>lyaspshop</artifactId><version>0.0.1-SNAPSHOT</version><name>lyaspshop</name><description>lyaspshop</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.7.6</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
<!--    热加载--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
<!--        test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
<!--      mybatis-plus  --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.2</version></dependency>
<!--        集合分割--><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>20.0</version></dependency><!-- Druid 数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.lya.lyaspshop.LyaspshopApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

配置:application.yml文件:都有注释放心引用:

server:port: 8080
spring:freemarker:# 设置模板后缀名suffix: .html# 设置文档类型content-type: text/html# 设置页面编码格式charset: UTF-8# 设置页面缓存cache: false# 设置ftl文件路径template-loader-path: classpath:/templates# 设置静态文件路径,js,css等mvc:static-path-pattern: /static/**datasource:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456url: jdbc:mysql://localhost:3306/lyaspshopdruid:filter:stat:merge-sql: true                          # 合并 SQL 语句slow-sql-millis: 5000                    # 慢查询阈值,单位为毫秒initial-size: 5                              # 初始连接数max-active: 20                               # 最大活跃连接数max-pool-prepared-statement-per-connection-size: 20  # 每个连接上缓存的 PreparedStatement 数量max-wait: 60000                              # 获取连接的最大等待时间,单位为毫秒min-evictable-idle-time-millis: 30000         # 连接在池中最小空闲时间,超过该时间会被销毁,单位为毫秒min-idle: 5                                  # 最小空闲连接数pool-prepared-statements: true               # 启用预编译语句缓存stat-view-servlet: # Druid 的监控页面配置allow: 127.0.0.1                          # 允许访问的 IP 地址enabled: true                              # 是否启用监控页面login-password: admin                      # 登录密码login-username: admin                      # 登录用户名reset-enable: true                          # 是否允许重置统计信息url-pattern: /druid/*                       # 监控页面的访问路径test-on-borrow: true                         # 在连接池中获取连接时,是否进行有效性检测test-on-return: false                        # 在连接池中归还连接时,是否进行有效性检测test-while-idle: true                        # 在连接池中空闲连接的扫描间隔时间内,是否进行有效性检测time-between-eviction-runs-millis: 60000      # 空闲连接的扫描间隔时间,单位为毫秒validation-query: SELECT 1 FROM DUAL          # 用于校验连接是否有效的 SQL 查询语句web-stat-filter: # Druid 的 Web 统计过滤器配置enabled: true                              # 是否启用 Web 统计过滤器exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'  # 排除的资源路径session-stat-enable: true                   # 是否记录 Session 的统计信息session-stat-max-count: 100                 # 最多同时记录的 Session 数量url-pattern: /*                             # 统计过滤器的 URL 匹配模式mybatis-plus:#类型别名type-aliases-package: com.lya.lyaspshop.pojo
configuration:#驼峰命名法map-underscore-to-camel-case: true
logging:level:com.lya.lyaspshop.mapper: debug

PageController 

package com.lya.lyaspshop.controller;import com.google.common.collect.Lists;
import com.lya.lyaspshop.pojo.Goods;
import com.lya.lyaspshop.service.impl.GoodsServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;import java.util.List;@Controller
public class PageController {@Autowiredprivate GoodsServiceImpl goodsService;@RequestMapping("/")public String index(Model model) {List<Goods> gs1 = goodsService.queryshopbytypeguava("01", 6);List<List<Goods>> ps1 = Lists.partition(gs1, 3);List<Goods> gs2 = goodsService.queryshopbytypeguava("07", 12);List<List<Goods>> ps2 = Lists.partition(gs2, 4);model.addAttribute("ps1", ps1);model.addAttribute("ps2", ps2);return "index";}@RequestMapping("/page/{page}")public String to(@PathVariable("page") String page) {return page.replace(".html", "");}}

商城首页:

<!DOCTYPE html>
<html><head lang="en"><#include "common/head.html"><link rel="stylesheet" type="text/css" href="css/public.css"/><link rel="stylesheet" type="text/css" href="css/index.css" /></head><body><!------------------------------head------------------------------><#include "common/top.html"><!-------------------------banner---------------------------><div class="block_home_slider"><div id="home_slider" class="flexslider"><ul class="slides"><li><div class="slide"><img src="img/banner2.jpg"/></div></li><li><div class="slide"><img src="img/banner1.jpg"/></div></li></ul></div></div><!------------------------------thImg------------------------------><div class="thImg"><div class="clearfix"><a href="${ctx}/page/vase_proList.html"><img src="img/i1.jpg"/></a><a href="${ctx}/page/proList.html"><img src="img/i2.jpg"/></a><a href="#2"><img src="img/i3.jpg"/></a></div></div><!------------------------------news------------------------------><div class="news"><div class="wrapper"><h2><img src="img/ih1.jpg"/></h2><div class="top clearfix"><a href="${ctx}/page/proDetail.html"><img src="img/n1.jpg"/><p></p></a><a href="${ctx}/page/proDetail.html"><img src="img/n2.jpg"/><p></p></a><a href="${ctx}/page/proDetail.html"><img src="img/n3.jpg"/><p></p></a></div><div class="bott clearfix"><a href="${ctx}/page/proDetail.html"><img src="img/n4.jpg"/><p></p></a><a href="${ctx}/page/proDetail.html"><img src="img/n5.jpg"/><p></p></a><a href="${ctx}/page/proDetail.html"><img src="img/n6.jpg"/><p></p></a></div><h2><img src="img/ih2.jpg"/></h2><#list ps1 as ps ><div class="flower clearfix tran"><#list ps as p ><a href="proDetail.html" class="clearfix"><dl><dt><span class="abl"></span><img src="${p.goodsImg}"/><span class="abr"></span></dt><dd>${p.goodsName}</dd><dd><span>¥ ${p.goodsPrice}</span></dd></dl></a></#list></div></#list></div></div><!------------------------------ad------------------------------><a href="#" class="ad"><img src="img/ib1.jpg"/></a><!------------------------------people------------------------------><div class="people"><div class="wrapper"><h2><img src="img/ih3.jpg"/></h2><div class="pList clearfix tran"><a href="proDetail.html"><dl><dt><span class="abl"></span><img src="img/s7.jpg"/><span class="abr"></span></dt><dd>【最家】不锈钢壁饰墙饰软装</dd><dd><span>¥688.00</span></dd></dl></a><a href="proDetail.html"><dl><dt><span class="abl"></span><img src="img/s10.jpg"/><span class="abr"></span></dt><dd>【最家】小城动物木板画壁挂北欧</dd><dd><span>¥188.00</span></dd></dl></a><a href="proDetail.html"><dl><dt><span class="abl"></span><img src="img/s4.jpg"/><span class="abr"></span></dt><dd>【最家】玄关假山水壁饰背景墙饰挂件创意</dd><dd><span>¥599.00</span></dd></dl></a><a href="proDetail.html"><dl><dt><span class="abl"></span><img src="img/s9.jpg"/><span class="abr"></span></dt><dd>【最家】金属树枝壁饰铜鸟装饰品</dd><dd><span>¥928.00</span></dd></dl></a></div><div class="pList clearfix tran"><a href="proDetail.html"><dl><dt><span class="abl"></span><img src="img/s6.jpg"/><span class="abr"></span></dt><dd>【最家】金属壁饰创意背景墙面挂件创意</dd><dd><span>¥228.00</span></dd></dl></a><a href="proDetail.html"><dl><dt><span class="abl"></span><img src="img/s8.jpg"/><span class="abr"></span></dt><dd>【最家】小城动物木板画壁挂北欧</dd><dd><span>¥199.00</span></dd></dl></a><a href="proDetail.html"><dl><dt><span class="abl"></span><img src="img/s12.jpg"/><span class="abr"></span></dt><dd>【最家】欧式复古挂钟创意餐厅钟表家居挂件</dd><dd><span>¥666.00</span></dd></dl></a><a href="proDetail.html"><dl><dt><span class="abl"></span><img src="img/s1.jpg"/><span class="abr"></span></dt><dd>【最家】客厅地中海欧式现代相片墙创意</dd><dd><span>¥59.80</span></dd></dl></a></div><div class="pList clearfix tran"><a href="proDetail.html"><dl><dt><span class="abl"></span><img src="img/s5.jpg"/><span class="abr"></span></dt><dd>【最家】铁艺荷叶壁挂软装背景墙上装饰品</dd><dd><span>¥800.00</span></dd></dl></a><a href="proDetail.html"><dl><dt><span class="abl"></span><img src="img/s3.jpg"/><span class="abr"></span></dt><dd>【最家】欧式照片墙 创意组合结婚礼物</dd><dd><span>¥189.00</span></dd></dl></a><a href="proDetail.html"><dl><dt><span class="abl"></span><img src="img/s2.jpg"/><span class="abr"></span></dt><dd>【最家】欧式钟表相框墙挂墙创意组合</dd><dd><span>¥148.00</span></dd></dl></a><a href="proDetail.html"><dl><dt><span class="abl"></span><img src="img/s11.jpg"/><span class="abr"></span></dt><dd>【最家】小城动物木板画壁挂北欧</dd><dd><span>¥188.00</span></dd></dl></a></div></div></div><#include "common/footer.html"/><script src="js/public.js" type="text/javascript" charset="utf-8"></script><script src="js/nav.js" type="text/javascript" charset="utf-8"></script><script src="js/jquery.flexslider-min.js" type="text/javascript" charset="utf-8"></script><script type="text/javascript">$(function() {$('#home_slider').flexslider({animation: 'slide',controlNav: true,directionNav: true,animationLoop: true,slideshow: true,slideshowSpeed:2000,useCSS: false});});</script></body>
</html>

查询首页类型语句:

<select id="queryshopbytypeguava" resultType="goods">SELECT*FROMt_goods g,t_dict_data tWHEREg.goods_type = t.dict_valueAND t.dict_value = #{type} LIMIT #{size}
</select>

访问试用

遇到的报错:

注:

在 MyBatis 中,@Param 注解用于给 SQL 语句中的参数起一个自定义的名称,以便在 XML 映射文件中引用这些参数。在 Java 中使用 @Param 注解可以帮助提高 SQL 语句的可读性和灵活性。以下是 @Param 注解的基本用法:

  1. 在接口方法中使用 @Param 注解:

    public interface UserMapper { User selectUserById(@Param("userId") int userId); }

    在这个例子中,@Param 注解用于给参数 userId 起了一个别名 "userId"。

  2. 在 XML 映射文件中引用 @Param 注解定义的参数:

    <select id="selectUserById" resultType="User"> SELECT * FROM user WHERE id = #{userId} </select>

    在这个例子中,我们可以通过 #{userId} 引用接口方法中使用 @Param 注解定义的参数。

通过使用 @Param 注解,我们可以更清晰地表达出每个参数的含义,避免在 XML 文件中直接引用方法参数名带来的歧义。此外,@Param 注解还可以用于解决传递多个参数时的问题,比如在 SQL 语句中引用多个参数。

需要注意的是,在 MyBatis 的 3.4.1 版本之前,如果你使用了 Java 8 及以上版本,MyBatis 会自动支持参数的注解,不需要显式地使用 @Param 注解。但是,为了代码的清晰性和规范性,建议在接口方法中明确地使用 @Param 注解。

总而言之,@Param 注解可以让你在 MyBatis 中更清晰地定义参数,并在 XML 映射文件中引用这些参数,从而提高代码的可读性和维护性。

在 Spring 框架中,@PathVariable 注解用于从 URL 路径中提取参数值,以便在处理请求的方法中使用。它通常与 @RequestMapping 注解一起使用,用于将路径变量与请求的 URL 匹配。

下面是 @PathVariable 注解的基本用法:

  1. 在控制器方法中使用 @PathVariable 注解:
@Controller @RequestMapping("/users") public class UserController { @GetMapping("/{id}") public String getUserById(@PathVariable("id") int userId) { // 处理逻辑 return "user"; } }

在这个例子中,@PathVariable 注解将 URL 路径中的 {id} 部分提取为 userId 参数,并将其传递给 getUserById 方法。

  1. 在请求的 URL 中使用路径变量:

GET /users/123

在这个例子中,请求的 URL 包含路径变量 123,它会被 @PathVariable("id") 提取并传递给 getUserById 方法的 userId 参数。

通过使用 @PathVariable 注解,我们可以方便地从 URL 中提取路径变量,并在处理请求的方法中使用。这样可以使代码更具可读性和灵活性,并且可以实现根据不同的路径变量执行不同的逻辑。

需要注意的是,@PathVariable 注解默认是必需的,即请求的 URL 中必须包含对应的路径变量。如果路径变量是可选的,可以使用 @PathVariable(required = false) 或者给参数设置默认值来指定它是可选的。

希望对你有所帮助!如果还有其他问题,请随时提问。

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

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

相关文章

一种用于解决子图同构问题的子图特定因子

判断两个图是否同构可以从两个方面考虑 当两个图的节点的个数不等时&#xff1a;显然&#xff0c;这两个图是不可能同构。当两个图的节点的个数相等时&#xff1a;此时&#xff0c;需根据邻接矩阵的特征值来进行区分。例&#xff1a;两个图的邻接矩阵分别为 A , A ′ ∈ R n …

Hikvision SPON IP网络对讲广播系统存在命令执行漏洞CVE-2023-6895 附POC软件

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. Hikvision SPON IP网络对讲广播系统简介 微信公众…

理解文件系统

一 什么是文件系统 文件系统是计算机操作系统中的一个核心组件&#xff0c;用于管理计算机中的文件和文件夹。它提供了一种组织和访问计算机存储设备上数据的方式。文件系统使用户能够创建、修改、删除和查找文件&#xff0c;以及组织文件和文件夹的层次结构。 ps: linux一共有…

全局代理的詳細使用指南(Windows、Mac、Android、iOS)

全局代理IP又稱全局IP代理&#xff0c;允許用戶通過一個代理伺服器來發送和接收互聯網上的資訊。這個代理伺服器會隱藏用戶的真實IP地址&#xff0c;並將其替換為代理伺服器的IP地址。 除了常見的提高網路安全保護和突破地理限制的功能外&#xff0c;全局代理IP還可以做到以下…

C语言例题6

1.以下程序运行后的输出结果是&#xff1a;17。 main() {int x15; while(x>10&&x<50) {x; if (x/3) {x ; break;} else continue;} printf("%d\n",x); } 首先&#xff0c;我们分析程序中的逻辑和操作。 初始化 x 为 15。进入 while 循环&…

【FPGA】高云FPGA之科学的FPGA开发流程

FPGA开发流程 开发流程1、设计定义2、设计输入3、分析和综合4、功能仿真5、布局布线6、时序仿真7、IO分配以及配置文件&#xff08;bit流文件&#xff09;的生成8、配置&#xff08;烧录&#xff09;FPGA9、在线调试 例子1、设计定义1.1 需求1.2 原理图1.3 真值表 2、设计输入2…

HTML 实操试题(一)

创建一个包含标题、段落和链接的基本HTML文档&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><ti…

Docker - 镜像 | 容器 | 数据卷 日常开发常用指令 + 演示(一文通关)

目录 Docker 开发常用指令汇总 辅助命令 docker version docker info docker --help 镜像命令 查看镜像信息 下载镜像 搜索镜像 删除镜像 容器命令 查看运行中的容器 运行容器 停止、启动、重启、暂停、恢复容器 杀死容器 删除容器 查看容器日志 进入容器内部…

软件测试/测试开发丨Pytest学习笔记

Pytest 格式要求 文件: 以 test_ 开头或以 _test 结尾类: 以 Test 开头方法/函数: 以 _test 开头测试类中不可以添加构造函数, 若添加构造函数将导致Pytest无法识别类下的测试方法 断言 与Unittest不同, 在Pytest中我们需要使用python自带的 assert 关键字进行断言 assert…

SpringBoot实用开发(五)-- RedisTemplate处理String类型的数据

目录 1. 新增操作 2. 查看操作 3. 批量获取value值 4. 返回value的长度 5.

中介者模式-Mediator Pattern-1

如果在一个系统中对象之间的联系呈现为网状结构&#xff0c; 对象之间存在大量的多对多联系&#xff0c;将导致系统非常复杂。 这些对象既会影响别的对象&#xff0c;也会被别的对象所影响。 这些对象称为同事对象&#xff0c;它们之间通过彼此的相互作用实现系统的行为。 在网…

找不到msvcp140.dll怎么办-msvcp140.dll丢失的解决方法分享

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp140.dll丢失”。那么&#xff0c;msvcp140.dll究竟是什么文件&#xff1f;为什么会出现丢失的情况&#xff1f;本文将详细介绍msvcp140.dll的属性、作用以及丢失的原因&#xff0c;并…

Java学习笔记(八)——面向对象编程(高级)

目录 一、类变量和类方法 &#xff08;一&#xff09;类变量/静态变量 类变量内存布局 类变量使用注意事项和细节 &#xff08;二&#xff09;类方法 类方法经典的使用场景 类方法使用注意事项和细节 二、理解main方法语法 三、代码块 代码块使用注意事项和细节 四、…

Graylog日志搜索技巧

graylog搜索日志用的语法是Syntax接近Lucene&#xff0c;搜起来比较方便 Search query languagehttps://go2docs.graylog.org/4-0/making_sense_of_your_log_data/writing_search_queries.html?tocpathSearching%20Your%20Log%20Data|_____1 1.Syntax 语法 1.1 基本匹配 搜…

java keytool.exe ssl

JDK如果没有先安装 JDK8 install_jdk aleady install-CSDN博客 java keytool.exe ssl keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore D:\server.keystore -validity 3650 server.ssl.key-storeD:\server.keystore server.ssl.key-…

怎么使用jupter notebook并配置环境变量

有的时候需要使用Jupyter Notebook运行代码&#xff0c;Jupyter Notebook的主要特点&#xff1a; ① 编程时具有语法高亮、缩进、tab补全的功能。 ② 可直接通过浏览器运行代码&#xff0c;同时在代码块下方展示运行结果。 ③ 以富媒体格式展示计算结果。富媒体格式包括&…

linux ubuntu常用命令大总结(1)

假设&#xff1a;在/home/test文件夹下有一个a.py文件 清屏 clear 文件和目录操作&#xff1a; clear: 清屏 clearls: 列出 /home/test 目录中的文件和子目录。 ls ls /home/testcd: 切换到 /home/test 目录。 cd cd /home/testpwd: 显示当前工作目录的路径。 pwdtouch:…

Docker jenkins 镜像制作

下载war包 https://www.jenkins.io/download/ 镜像制作 # 使用基础镜像&#xff0c;这里以 OpenJDK 11 为例 FROM adoptopenjdk/openjdk11-openj9 # 设置工作目录 WORKDIR /app# 复制 WAR 包到工作目录 COPY jenkins.war /app/# 暴露容器端口&#xff08;如果应用程序监听了…

Springboot整合多数据源,Mybatis-plus,druid 的实现

第一步、导入依赖 <?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/P…

IPv4 VS IPv6代理全解,跨境电商代理IP选哪种?

IP&#xff08;互联网协议&#xff09;被网站用来收集用户位置信息。当今最流行的两种互联网协议是 IPv4 和 IPv6。 在我们选择IP代理的过程中可以看到IPv4、IPv6两种类型&#xff0c;他们有何区别&#xff1f;如何选择&#xff1f;下面为大家讲解&#xff01; 在这篇文章中&a…