包管理工具 Maven 官网
官方网站:https://maven.apache.org/
Maven, a Yiddish word meaning accumulator of knowledge, began as an attempt to simplify the build processes in the Jakarta Turbine project. There were several projects, each with their own Ant build files, that were all slightly different. JARs were checked into CVS. We wanted a standard way to build the projects, a clear definition of what the project consisted of, an easy way to publish project information, and a way to share JARs across several projects.
The result is a tool that can now be used for building and managing any Java-based project. We hope that we have created something that will make the day-to-day work of Java developers easier and generally help with the comprehension of any Java-based project.
官方网站下载 Maven
Maven 是一个项目管理工具,可以对 Java 项目进行自动化的构建和依赖管理。Maven 包含了一个项目对象模型Project Object Model
,一组标准集合,一个项目生命周期Project Lifecycle
,一个依赖管理系统Dependency Management System
,和用来运行定义在生命周期阶段phase
中插件plugin
目标goal
的逻辑。当你使用 Maven 的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven commands 常用命令
命令 | 解释 |
---|---|
mvn compile | 编译源代码 |
mvn deploy | 发布项目 |
mvn site | 生成项目相关信息的网站 |
mvn clean | 清除项目目录中的生成结果 |
mvn package | 根据项目生成 jar |
mvn install | 在本地 Repository 中安装 jar |
mvn archetype:generate | 创建 Maven 项目 |
安装 JDK Java 环境
Thank you for downloading this release of the Java™ Platform, Standard Edition Development Kit (JDK™). The JDK is a development environment for building applications and components using the Java programming language.
The JDK includes tools for developing and testing programs written in the Java programming language and running on the Java platform.
安装地址:https://www.oracle.com/java/technologies/downloads/#jdk19-windows
选择 Window 版本进行下载
Compressed Archive 和 Installer 版本区别?
Windows x64 Compressed Archive:压缩版本,需要自行配置(推荐)
Windows x64 Installer:可执行 exe 安装版本,安装过程程序自行配置 JDK 环境变量
配置环境变量:JAVA_HOME
编辑系统变量 Path,添加变量值
%JAVA_HOME%\bin
CMD 端测试 Java 是否安装成功?
C:\Users\HP>java --version
java 19.0.2 2023-01-17
Java(TM) SE Runtime Environment (build 19.0.2+7-44)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)
配置 Maven 环境变量
配置环境变量:MAVEN_HOME
编辑系统变量 Path,添加变量值
%MAVEN_HOME%\bin
判断 Maven 是否安装成功?
C:\Users\HP>mvn -version
Apache Maven 3.9.0 (9b58d2bad23a66be161c4664ef21ce219c2c8584)
Maven home: E:\Environment\apache-maven-3.9.0
Java version: 19.0.2, vendor: Oracle Corporation, runtime: E:\Environment\jdk-19.0.2
Default locale: zh_CN, platform encoding: UTF-8
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
C:\Users\HP>mvn
The JAVA_HOME environment variable is not defined correctly,
this environment variable is needed to run this program.
Maven 配置文件
maven依赖下载存放的路径,默认依赖包存放在C盘。
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
“C:\Users\Administrator.m2\repository”
目录下,可以查看 maven 的 setting.xml 配置,查看默认路径的配置,我们将默认的修改为我们自己指定的别的盘符的目录。
自定义设置 Maven 存放路径
<localRepository>E:\Environment\customized-maven-repository</localRepository>
Maven 镜像源
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<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 的中央仓库,因为 maven 中央仓库在国外,所以下载会很慢,选择国内的站点阿里镜像下载会很快。
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
Springboot 初始化
初始化 Spring Initializr 服务器 URL
阿里云初始化 start.aliyun.com:Java 8 或 Java 11
Spring 官方初始化 start.spring.io:Java 8、Java 11、Java 17、Java 19
Spring Web
选择 SpringBoot 初始化依赖 Dependencies
Build web, including RESTful, applications usingSpring MVC.Uses Apache Tomcat as the defaultembedded container.
在 IEDA 配置 Maven
配置 Maven 主路径、用户设置文件、本地仓库
IEDA 根据 pom.xml 进行下载 Maven 包
然后进行导入 Maven 工程 lmporting Maven projects
Waiting for Maven import completion 等待 Maven 导入完成
Maven 下载相关插件 Downloading Maven Plugins
启动 Springboot 服务器
Windows Defender 防火墙已经阻止此应用的部分功能
2023-02-20T00:00:32.898+08:00 INFO 6816 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729
2023-02-20T00:00:32.926+08:00 INFO 6816 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2023-02-20T00:00:32.936+08:00 INFO 6816 --- [ restartedMain] c.mslmsxp.mathscat.MathscatApplication : Started MathscatApplication in 2.384 seconds (process running for 3.736)
LiveReload server is running on port 35729
Tomcat started on port(s): 8080 (http) with context path ‘’
package com.mslmsxp.mathscat.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Controller
public class IndexController {
@RequestMapping("/index")
public String IndexShow() {
return "Hello World";
}
}
浏览器运行结果:
application.properties
#应用启动端口
server.port=8080
#应用名称
spring.application.name=mineproject
GET 请求接收 Param
package com.mslmsxp.mathscat.controller;
import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Controller
public class IndexController {
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String IndexShow(@RequestParam String username) {
System.out.println(username);
return "Hello World";
}
}
@RequestParam
@RequestParam 常用来处理简单类型的绑定,其原理是通过 Request.getParameter()
获取参数值。因为使用 request.getParameter()
方式获取参数,所以可以处理 get 方式中参数的值,也可以处理 post 方式中 表单中参数的值。
提交方式 GET、POST,注解有两个属性: value、required
value 用来指定要传入值的 id 名称:即请求参数的 key 对应,也是表单属性的 name 的值对应,required用来指示参数是否必须绑定,默认为true,即请求参数必须携带该参数,不携带将报错。
@RequestBody
@RequestBody 适用于以 POST 为请求方式,请求参数以 Json 格式放在请求体中的前端请求,所以在使用 @RequestBody 接收数据时,一般都用 POST 方式进行提交,并将参数放以 Json 的格式放在请求体中。
处理的数据的请求头 Content-Type:application/json
、application/xml
等等,不能是 application/x-www-form-urlencoded
编码的内容。
其参数解析主要是 SpringMVC 通过使用 HandlerAdapter 配置的 HttpMessageConverters 来解析 HttpEntity 中的数据,然后绑定到相应的 bean 上。
当然在后端接口中,@RequestBody
和 @RequestParam()
可以同时使用,但得注意 @RequestBody
只能有一个,而 @RequestParam()
个数不限制。
SpringBoot + MongoDB
下载 mongodb 依赖
配置 Mongodb 连接 application.properties
spring.data.mongodb.port=27017
spring.data.mongodb.host=localhost
spring.data.mongodb.database=minicat
spring.data.mongodb.username=root
spring.data.mongodb.password=123456
创建实体类 例如:Student
package com.mslmsxp.mathscat.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.data.annotation.Id;
@Data
@AllArgsConstructor
public class Student {
@Id
private String id;
private String name;
}
MongoTemplate 使用
package com.mslmsxp.mathscat.controller;
import com.mslmsxp.mathscat.pojo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Controller
public class IndexController {
@Autowired(required = false)
private MongoTemplate mongo;
@RequestMapping("/mongo/add")
public String IndexShow() {
Student student = new Student(null, "唤醒手腕");
String res = mongo.insert(student).toString();
return res;
}
}
mongo.insert 返回值是插入的对象
添加成功
IDEA Spring 工程里,经常会遇到 Could not autowire. No beans of ‘xxx’ type found 的错误提示。但程序的编译和运行都是没有问题的,有时候也有可能会报错,无法运行程序,这个错误提示并不会产生影响。但红色的错误提示看起来很不舒服。
@Autowired:表示自动注入,自动从 Spring 的上下文找到合适的 bean 来注入。
Mongodb 查询
@Autowired(required = false)
private MongoTemplate mongo;
@RequestMapping("/mongo/show")
public List<Student> StudentShow() {
List<Student> students = mongo.findAll(Student.class);
return students;
}
常用 查询 函数
查询Student文档的全部数据
mongoTemplate.findAll(Student.class)
查询 Student 文档 id 为 id 的数据
mongoTemplate.findById(<id>, Student.class)
根据 query 内的查询条件查询
mongoTemplate.find(query, Student.class);
根据 query 内的查询条件修改
mongoTemplate.upsert(query, update, Student.class)
根据 query 内的查询条件删除
mongoTemplate.remove(query, Student.class)
新增 document
mongoTemplate.insert(student)
where 条件查询
public ApiResponse findStudentListByConditions(Student student) {
Query query = new Query(Criteria.where("name").is(student.getName()));
List<Student> students = mongoTemplate.find(query, Student.class);
return Api.ok(students);
}
模糊查询 【^】开始 以【$】结束 【.*】相当于Mysql中的【%】
public ApiResponse findStudentsLikeName(String name) {
String regex = String.format("%s%s%s", "^.*", name, ".*$");
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Query query = new Query(Criteria.where("name").regex(pattern));
List<Student> students = mongoTemplate.find(query, Student.class);
return Api.ok(students);
}
分页查询
public PageApiResponse findStudentsPage(StudentRequest request) {
try {
Query query = new Query();
if (StringUtils.isNotEmpty(request.getUsername())) {
String regex = String.format("%s%s%s", "^.*", request.getUsername(), ".*$");
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
query.addCriteria(Criteria.where("username").regex(pattern));
}
int totalCount = (int) mongoTemplate.count(query, Student.class);
List<Student> studentList = mongoTemplate.find(query.skip(request.getOffset()).limit(request.getPageSize()), Student.class);
PageApiResponse response = PageApi.ok(studentList, totalCount, "获取列表成功");
response.setTotalPage(PageCounter.toTalPage(totalCount, request.getPageSize()));
response.handleRequest(request);
return response;
} catch (Exception e) {
throw new SystemException(-1, "获取分页数据出错");
}
}
MongoDB 远程连接
没有配置验证权限数据库,结果尝试发现增加 authSource 字段即可
spring.data.mongodb.uri=mongodb://user:pwd@ip1:port1,ip2:port2/业务数据库?authSource=权限校验数据库
Springboot SSL 证书
application.properties 配置文件
server.ssl.key-store=classpath:xxx.com.pfx
server.ssl.key-store-password=xxxxxx
server.ssl.key-store-type=PKCS12(根据证书)
腾讯云下载 Tomcat 证书(Springboot 是内嵌 Tomcat)
Linux yum 安装 JDK
在 /etc/profile 配置了自己的 Java 环境后 java -version 发现并不是我们配置的 Java 环境
先查看自带 Java rpm -qa | grep jdk
[root@VM-4-16-centos ~]# rpm -qa | grep jdk
java-1.8.0-openjdk-devel-1.8.0.312.b07-2.el8_5.x86_64
java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64
copy-jdk-configs-4.0-2.el8.noarch
java-1.8.0-openjdk-headless-1.8.0.312.b07-2.el8_5.x86_64
如何进行删除?
[root@VM-4-16-centos ~]# rpm -e --nodeps java-1.8.0-openjdk-devel-1.8.0.312.b07-2.el8_5.x86_64
再次查看是否删除,rpm -qa | grep jdk
后无结果则删除成功
source /etc/profile
最后再 java -version
可以发现就我们配置的 Java 环境了。
yum 安装 Java 环境?
首先执行以下命令查看可安装的jdk版本:
yum -y list java*
选择自己需要的 JDK 版本进行安装,比如这里安装 1.8,执行以下命令:
yum install -y java-1.8.0-openjdk-devel.x86_64
安装完成之后,查看安装的 JDK 版本,输入以下指令:
java -version
便可以看到自己安装的 JDK 版本信息。你如果好奇这个自动安装把 JDK 安装到哪里去了,其实你可以在 usr/lib/jvm
下找到它们。
Linux Oracle 安装 JDK
Oracle 甲骨文 JDK 下载地址:https://www.oracle.com/cn/java/technologies/downloads/
上传到服务器你的目录下:
然后进行解压后,进入 /bin 目录下:
[root@VM-4-16-centos bin]# ./java -version
java version "19.0.2" 2023-01-17
Java(TM) SE Runtime Environment (build 19.0.2+7-44)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)
如果想要在任何目录下都能使用,则配置环境变量
[root@localhost java]# vi /etc/profile
配置 JAVA_HOME 和 追加 PATH
JAVA_HOME=/home/javaenv/jdk_19.0.2
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
首先按字母 I
键进入编辑,按 ESC
退出编辑,输入 :wq
保存退出
刷新环境配置使其生效
source /etc/profile
测试当前 java 环境
[root@VM-4-17-centos ~]# java -version
java version "19.0.2" 2023-01-17
Java(TM) SE Runtime Environment (build 19.0.2+7-44)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)