新建一个Spring Boot项目
这里使用的idea编辑器。快速生成java 项目。
生成项目目录
java-app: 项目的根目录。
.idea: IntelliJ IDEA 的项目配置文件夹。
.mvn: Maven 的相关配置。
src: 源代码目录。
main: 主代码部分。
java: Java 源代码文件夹。
com: 包名的顶层目录。
example: 示例包。
javaapp: 项目特定的包。
JavaAppApplication.java: 主应用程序类。
resources: 资源文件夹。
static: 静态资源(如 CSS、JS 文件)。
templates: 模板文件。
application.properties: 配置文件。
test: 测试代码部分。
java: 测试 Java 源代码文件夹。
com: 包名的顶层目录。
example: 示例包。
javaapp: 项目特定的包。
JavaAppApplicationTests.java: 测试类。
.gitignore: Git 忽略文件。
HELP.md: 项目帮助文档。
mvnw: Maven Wrapper 脚本。
mvnw.cmd: Windows 下的 Maven Wrapper 脚本。
pom.xml: Maven 项目的配置文件。
主程序代码
package com.example.javaapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//启动类
@SpringBootApplication
public class JavaAppApplication {
public static void main(String[] args) {
SpringApplication.run(JavaAppApplication.class, args);
}
}
- 包声明:
package com.example.javaapp;
这行代码定义了类所在的包,通常用于组织类和避免命名冲突。
2. 导入语句:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
这些导入语句引入了 Spring Boot 的核心类。SpringApplication 用于启动应用程序,@SpringBootApplication 是一个组合注解,包含了多个功能(如自动配置、组件扫描等)。
主类:
这是应用程序的主类,使用 @SpringBootApplication 注解标记,表示这是一个 Spring Boot 应用。
主方法:
public static void main(String[] args) {
SpringApplication.run(JavaAppApplication.class, args);
}
main 方法是 Java 应用程序的入口点。SpringApplication.run 方法启动 Spring 应用程序,传入当前类和命令行参数。
整体上,这段代码定义了一个简单的 Spring Boot 应用程序的启动结构。
添加mySql数据库信息
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=springboot
spring.datasource.password=springboot
启动第一个程序
报错了
解决报错,缺少了MySql依赖项
pom.xml添加mysql依赖配置
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.31</version>
<scope>runtime</scope>
</dependency>
报错信息消失
开始启动
重新启动项目
编写第一个接口
在同级目录下面建立一个controller文件夹。然后建立一个 JavaAppController.java 文件的控制器。
定义RESTful API控制器
引入
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping
;:导入GetMapping注解,这个注解用于处理HTTP GET请求。它可以将一个方法映射到特定的URL路径。import org.springframework.web.bind.annotation.RestController
;:导入RestController注解,这个注解用于标识一个类为RESTful控制器。它的作用是将控制器中的每个方法的返回值直接作为HTTP响应体返回,而不是返回一个视图。
结合起来,这段代码通常出现在一个Spring Boot应用中,用于定义一个处理GET请求的RESTful API控制器。
package com.example.javaapp.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class JavaAppController {
@GetMapping("/test")
public String test() {
return "hello java";
}
}
启用Spring MVC的Web功能
这里的含义是使用mvc模板绑定html模板,绑定数据层。如果是这种方式,则需要开启mvc的web功能
package com.example.javaapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@SpringBootApplication
@EnableWebMvc
public class JavaAppApplication {
public static void main(String[] args) {
SpringApplication.run(JavaAppApplication.class, args);
}
}
MVC模式示例
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class EmployeeController {
@GetMapping("/employees")
public String getEmployees(Model model) {
// 假设我们有一个员工列表
List<Employee> employees = fetchEmployees();
// 将员工列表添加到模型中
model.addAttribute("employees", employees);
// 返回视图名称
return "employeeList"; // 视图名称
}
}
我这里没有使用这样方式
定义实体类
定义一个实体类,用于表示任务表的字段
package com.example.javaapp.entity;
import lombok.Data;
// 导入Lombok:import lombok.Data; 导入Lombok库中的@Data注解。Lombok是一个Java库,用于减少样板代码
// @Data注解:这个注解自动生成以下内容:
// 所有字段的getter和setter方法。
// toString()方法,方便打印对象信息。
// equals()和hashCode()方法,便于比较对象。
@Data
public class JavaApp {
private String name;
private String code;
}
添加lombok依赖项
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version> <!-- 使用最新版本 -->
<scope>provided</scope>
</dependency>
报错,原因是我还没建表
建数据表
继续报错
该模式需要建立 list.html绑定数据
也就是刚才说的那种模式,则需要这种方式。
修改模式为RestController注解模式
package com.example.javaapp.controller;
// import org.springframework.stereotype.Controller;
// import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;
import com.example.javaapp.entity.Employee;
import com.example.javaapp.repository.JavaAppDAO;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/web")
public class JavaAppController {
private final JavaAppDAO javaAppDAO;
public JavaAppController(JavaAppDAO javaAppDAO) {
this.javaAppDAO = javaAppDAO;
}
@GetMapping("/list")
public List<Employee> listEmployees() {
return javaAppDAO.getAllEmployees();
}
}
重启应用,查询接口
编写新增接口
@PostMapping("/add")
public String addEmployee(@RequestBody Employee employee) {
javaAppDAO.createEmployee(employee.getName(), employee.getCode()); // 调用服务层方法添加员工
return "员工添加成功"; // 返回成功消息
}
处理报错
数据表有多余的字段,删除即可
新增接口编写完成
编写修改接口
@PutMapping("/update/{id}")
public String updateEmployeed(@PathVariable String id, @RequestBody Employee employee) {
javaAppDAO.updateEmployee(id, employee.getName(), employee.getCode()); // 调用服务层方法更新员工
return "员工更新成功"; // 返回成功消息
}
测试接口
编写删除接口
//删除接口
@DeleteMapping("/delete/{id}")
public String deleteEmployeed(@PathVariable String id) {
javaAppDAO.deleteEmployee(id);
return "员工删除成功";
}
报错 java: 错误: 不支持发行版本 5
版本不一致导致修改版本一致即可
1. 查看 -文件-项目结构-项目设置-项目
查看settings里面的java Compiler
文件-设置
去File里找Settings打开,在打开的页面中找到Build开头的那一串,接着找它下面Compiler下的java compiler,
修改到对应的版本,然后应用保存就可以关闭了。
重新运行代码.
程序包org.springframework.stereotype 不存在——解决办法
1.File—>Settings----->Build,Execution,Deployment——>Maven——>Runner——>选择Delegate IDE,选择自己安装的JRE的路径
springboot打包jar
先设置:点击 File ==> Project Structure ==> Artifacts ==> 点击加号 ==> 选择JAR ==> 选择From modules with dependencies
开始打包
打包完成
打完了以后,就会出现jar的包
宝塔部署jar包
宝塔配置java jdk的环境
上传jar包到服务器目录
生成端口信息,配置端口放行
配置端口代理的域名
浏览器打开:v3.kestrel-task.cn/employee/li… 即可看到界面