选择Java及Spring Boot构建Web服务具有显著优势,Java的跨平台兼容性保证了服务可在不同操作系统上顺畅运行,而Spring Boot的成熟框架则大大简化了开发流程,减少了繁琐配置。此外,强大的社区支持、易于维护与扩展的特性、优异的性能、强大的安全性、对微服务架构的友好支持,以及便利的测试环境,都使得Java及Spring Boot成为构建稳定、高效、安全的Web服务的理想选择。
VS Code安装插件并连接服务器
Visual Studio Code连接VMware虚拟机-CSDN博客 使用VS Code连接云服务器会方便操作一些,也可以使用IDEA等工具。
安装VS Code的Java运行插件,安装完这些插件后可以快速创建Spring项目,还支持动态修改网站代码,在编写代码时
Extension Pack for Java:
- 扩展包,其中包含了多个有用的Java开发工具。
- 提供了丰富的Java开发功能,如代码补全、重构工具、代码格式化等。
- 支持自动生成构造函数、getter和setter方法,以及方法返回值的自动推断等。
- 可以通过设置快捷键来提高插件的使用效率。
Spring Boot Tools:
- 提供了一套工具来辅助Spring Boot应用的开发。
- 可能包括代码生成、自动补全、语法高亮等功能,以提升开发效率。
- 可能还支持与Spring Boot相关的调试和性能分析工具。
Spring Initializr Java Support:
- 该插件可能支持通过Spring Initializr快速生成Spring Boot项目骨架。
- 提供了项目创建时的可选配置,如选择项目元数据、Java版本、依赖项等。
- 简化了新项目的搭建过程,提高了开发效率。
Spring Boot Dashboard:
- 提供了一个管理和监视Spring Boot应用程序的界面。
- 允许启动、停止、重启和调试Spring Boot应用程序。
- 可查看应用程序的日志和端点,并支持管理多个应用程序。
- 集成了服务发现功能,便于浏览和连接到已发现的服务。
- 允许配置特定的运行时配置和环境变量,以精细调整应用程序。
Red Hat Dependency Analytics :
- 该插件可能提供项目依赖关系的深入分析,帮助开发者理解和管理项目的依赖。
- 可能包含对依赖项的安全性、许可证和兼容性的检查。
- 有助于识别和修复潜在的依赖问题,以确保项目的稳定性和安全性。
安装git
sudo apt install git
安装Java
我选择的Java版本是Java17,Java 17是一个LTS版本,意味着它将获得长期的官方支持和维护。
安装Java运行时环境 JRE:
JRE是在计算机操作系统之上运行的软件层,它为Java程序提供运行时支持,包括Java虚拟机(JVM)、核心类库以及Java API,JRE的主要功能是执行字节码、提供常见的类库以及访问系统资源,从而确保Java程序能够顺利运行。
sudo apt install default-jre
安装JDK:
JDK是Java语言的软件开发工具包,它包含了Java的运行环境(即JVM+Java系统类库)以及一系列供开发者使用的Java工具,JDK主要用于构建在Java平台上发布的应用程序、Applet和组件。对于开发者而言,JDK提供了开发Java程序所必需的基本工具,但不包含具体的开发软件。随着Java技术的不断发展,JDK也在不断更新和迭代,以适应新的编程需求和技术趋势。从JDK 5.0开始,Java平台被划分为多个版本,如Java SE(标准版)、Java EE(企业版,后改名为Jakarta EE)和Java ME(微型版),以满足不同领域和开发场景的需求。
sudo apt-get install openjdk-17-jdk -y
验证版本
java -version
切换Java版本,运行命令后输入版本号即可切换:
sudo update-alternatives --config java
安装Maven
也可以使用gradle,maven我使用的更熟悉些。Maven和Gradle都是自动化构建工具,Maven是Apache软件基金会组织维护的一款自动化构建工具,专注于服务Java平台的项目构建和依赖管理,Maven使用XML文件来描述项目信息,具有强大的依赖管理能力,并能从中央仓库自动下载所需的库和插件。Gradle是一个基于Apache Ant和Apache Maven概念的开源项目自动化构建工具,支持从maven远程仓库、nexus私服、ivy仓库以及本地文件获取依赖,可以使用Groovy或Kotlin DSL来声明项目设置,而不是XML。
sudo apt install maven
添加国内镜像源,settings.xml通常在etc/maven/目录下,在srttings.xml文件的mirrors中添加:
sudo vi settings.xml
<mirrors>
<!-- 阿里云Maven镜像 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- 阻止HTTP访问的伪仓库镜像 -->
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP. </name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
</mirrors>
验证Maven版本
mvn -version
安装SDKMAN
先安装zip和unzip
sudo apt install zip unzip
安装SDKMAN
SDKMAN类似于Python的包管理工具pip或Anaconda,但主要针对基于JVM的工具和SDK,SDKMAN允许用户在计算机上安装、管理和切换不同的软件开发工具,它特别适用于管理多个Java版本,以及其他基于JVM的语言和工具.
curl -s "https://get.sdkman.io" | bash
新建终端,使SDKMAN生效:
source "$HOME/.sdkman/bin/sdkman-init.sh"
验证安装是否成功
sdk
安装Sprint Boot
Spring Boot能自动配置大部分常用配置,避免了手动配置的繁琐,spring boot自带Web服务器如Tomcat、Jetty,无需外部部署,适用于Web应用、RESTful服务、批处理作业等多种类型的应用程序开发。
sdk install springboot
验证Spring Boot CLI是否安装成功
spring --version
安装并连接MySQL库
在VS Code中操作MySQL数据库_vscode mysql 创建数据库-CSDN博客 可以按这个操作,在服务器中需要注意一下创建MySQL用户和赋权的问题。
sudo apt-get install mysql-server
安装Node.js和npm
方便后续的前端页面编写
sudo apt install nodejs
sudo apt install npm
创建Spring Boot项目
在VS Code中点击快捷创建按钮
选择构建工具
选择 Maven
语言选择Java
随后输入Group Id,通常Group Id是网站域名反写,Group Id 通常代表项目所属的组织或公司。在Maven项目中,它用于唯一标识项目的组织部分,没有域名也可以使用默认的Group Id.
接下来,输入项目的名称Artifact Id,再根据需要选择项目的版本、Spring Boot版本以及项目所需的依赖(如Spring Web, Spring Data JPA等)
我选择了这三个依赖:
随后选择将项目文件放在/home/用户名的目录下,可以限制应用的访问权限,提高安全性。
cd到新建的项目目录下,可以看到项目框架已经安装完成:
编写静态页面
Spring Boot可以自动将 /src/main/resources/static 目录下的文件作为静态资源提供,只需要将页面文件放进去就可以,在static目录下创建index.html、script.js、styles.css三个文件:
<!-- index.html -->
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GGboy</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header>
<h1 class="colorful-title">欧耶!原来是GGboy</h1>
</header>
<main>
<section class="image-gallery">
</section>
<section class="character-info">
<h2>猪猪侠介绍</h2>
<p id="pigHeroIntro">猪猪侠是一个勇敢而聪明的超级英雄,他总是勇敢地面对挑战,用他的智慧和力量保护他的朋友和家园。他有一颗善良的心,总是乐于助人,深受大家的喜爱。</p>
<h3>Go语言介绍</h3>
<p id="goLangIntro">
Go语言是一种由猪猪侠新的语言,一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点:
<br>
1. 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。
<br>
2. Go语言为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格include文件与库的开头。
<br>
3. Go语言是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感觉起来比典型的面向对象语言更轻量级。
<br>
4. Go语言完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。
<br>
按照其设计,Go打算为多核机器上系统软件的构造提供一种方法。
<br>
Go语言是一种猪猪型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生了。
</p>
</section>
</main>
<script src="script.js"></script>
<button onclick="window.location.href='https://www.csdn.net/';">快来点击小猪猪</button>
</body>
</html>
// script.js
document.addEventListener('DOMContentLoaded', function() {
const imageGallery = document.querySelector('.image-gallery');
const imageUrls = [
'https://tse3-mm.cn.bing.net/th/id/OIP-C.X7-Eyw-eFgdmIMxulVXRfAHaHa?rs=1&pid=ImgDetMain',
'https://tse4-mm.cn.bing.net/th/id/OIP-C.lDpdCQhVNxV6HO8qkgb3cwHaHD?w=510&h=486&rs=1&pid=ImgDetMain',
'https://tse2-mm.cn.bing.net/th/id/OIP-C.wLioQHhuKBlwpNl24hTLZwAAAA?w=400&h=408&rs=1&pid=ImgDetMain',
'https://tse1-mm.cn.bing.net/th/id/OIP-C.yTP33CZBMdATDzYMH58QyQHaHa?rs=1&pid=ImgDetMain'
];
imageUrls.forEach(function(imageUrl) {
const img = document.createElement('img');
img.src = imageUrl;
img.alt = 'GGboy靓照';
imageGallery.appendChild(img);
});
});
/* styles.css */
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f2f2f2;
}
header {
background-color: #333;
color: white;
text-align: center;
padding: 20px;
}
@keyframes blink {
0% { opacity: 1; }
50% { opacity: 0; }
100% { opacity: 1; }
}
.colorful-title {
font-size: 48px;
text-transform: uppercase;
letter-spacing: 2px;
animation: color-change 3s infinite;
background: linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
animation: blink 1s linear infinite;
}
@keyframes color-change {
0% {background-position: 0 0;}
50% {background-position: 100% 0;}
100% {background-position: 0 0;}
}
.image-gallery {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: nowrap;
padding: 10px;
}
.image-gallery img {
flex: 0 0 auto;
max-width: 20%;
margin: 0 10px;
}
@keyframes colorChange {
0% { color: #ff0000; }
20% { color: #00ff00; }
40% { color: #0000ff; }
60% { color: #ffff00; }
80% { color: #ff00ff; }
100% { color: #ff0000; }
}
#goLangIntro {
font-family: 'Arial', sans-serif;
font-size: 16px;
line-height: 1.6;
color: #333;
text-align: justify;
animation: colorChange 0.5s linear infinite;
}
#pigHeroIntro {
font-family: 'Arial', sans-serif;
font-size: 16px;
line-height: 1.6;
color: #333;
text-align: justify;
animation: colorChange 0.5s linear infinite;
}
运行Spring Boot项目
输入命令试运行Spring Boot项目:
mvn spring-boot:run
如果是在虚拟机运行的,在宿主机浏览器输入:
虚拟机IP:端口号
# 比如127.0.0.1:8080
运行成功,接下来就可以编辑其他功能了
解决pom.xml文件报错,补全缺失的jar包
有时pom.xml文件会进行报错,原因使jar包或镜像没有设置好
这是可以输入命令清除已安装的依赖并从新安装即可:
mvn clean
mvn compile
如仍出现报错
使用git进行版本管理并将项目上传至代码托管平台
创建git仓库:
git init
这时会显示关于默认分支名称的提示:
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
可以根据需要选择是否设置一个全局默认的初始分支名称,如果需要的话可以输入以下命令:
git config --global init.defaultBranch main
这样就设置成了main分支。
将文件添加到Git仓库中进行跟踪:
git add .
添加制定文件进行跟踪为:
git add HELP.md mvnw mvnw.cmd pom.xml src
在git中设置用户名和邮箱:
git config --global user.name "用户名"
git config --global user.email 邮箱
提交修改:
git commit -m "Initial commit of demo project"
随后按照使用Git将代码上传至代码托管平台GitCode_代码上传平台-CSDN博客 即可将代码上传到托管平台