Spring Boot 实战:构建一个简单的 Web 应用

news2024/12/25 20:25:02

在 Java 开发领域,Spring Boot 凭借其简洁高效的开发模式,成为了众多开发者的首选框架。今天,我们就一起来通过实际代码示例,构建一个简单的 Spring Boot Web 应用,感受它的魅力。

一、准备工作

在开始之前,确保你已经安装了 Java Development Kit(JDK)和一个合适的集成开发环境(IDE),这里我们以 IntelliJ IDEA 为例。

二、创建 Spring Boot 项目

  1. 打开 IntelliJ IDEA,点击 “File” -> “New” -> “Project”。
  2. 在弹出的对话框中,选择 “Spring Initializr”,然后点击 “Next”。
  3. 填写项目相关信息,如 “Group”(组织名)、“Artifact”(项目名)、“Name”(项目显示名)等,并选择合适的 Java 版本。这里我们假设 Group 为 “com.example”,Artifact 为 “demo”,Name 为 “Spring Boot Demo”。
  4. 选择 “Web” 依赖,这将为我们的项目添加 Spring MVC 相关的功能,以便构建 Web 应用。
  5. 点击 “Next”,然后选择项目保存的路径,最后点击 “Finish”。此时,一个基本的 Spring Boot 项目结构就创建好了。

三、项目结构解析

创建好的项目结构主要包含以下几个部分:

  • src/main/java:存放 Java 源代码。
    • com.example.demo:这是我们项目的主包,其中包含了应用的主要代码。
      • DemoApplication.java:这是 Spring Boot 应用的入口类,它标注了@SpringBootApplication注解,用于启动整个应用程序。
  • src/main/resources:存放应用的资源文件,如配置文件等。
    • application.properties(或application.yml):在这里可以配置应用的各种属性,如数据库连接、服务器端口等。默认情况下,Spring Boot 会提供一些基本的配置。
  • src/test/java:存放测试代码。用于对应用的各个部分进行单元测试和集成测试,确保代码的正确性和稳定性。

四、编写代码

  1. 创建一个简单的控制器(Controller)
    com.example.demo包下创建一个名为HelloController.java的文件,代码如下:

收起

java

复制

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String helloWorld() {
        return "Hello, Spring Boot!";
    }
}

在这个控制器中,我们使用了@RestController注解,表明这是一个 RESTful 风格的控制器。@GetMapping("/hello")注解用于映射 HTTP GET 请求到helloWorld方法。当我们访问/hello路径时,该方法会返回 “Hello, Spring Boot!” 字符串。

  1. 运行应用
    回到DemoApplication.java文件,右键点击该文件,选择 “Run ‘DemoApplication’"(或者使用快捷键)来启动应用程序。

五、测试应用

在浏览器中输入http://localhost:8080/hello(默认情况下,Spring Boot 应用在本地运行的端口是 8080),你将会看到页面上显示 “Hello, Spring Boot!”。这表明我们的简单 Web 应用已经成功运行。

六、扩展与优化

  1. 添加更多的请求处理方法
    你可以在HelloController中添加更多的@GetMapping(或其他 HTTP 请求方法注解)方法,来处理不同的请求路径和业务逻辑。例如:

收起

java

复制

@GetMapping("/greet/{name}")
public String greetUser(@PathVariable String name) {
    return "Hello, " + name + "!";
}

这个方法会接收一个路径参数name,并返回个性化的问候语。当你访问http://localhost:8080/greet/John时,页面会显示 “Hello, John!”。

  1. 集成数据库
    如果你的应用需要与数据库交互,可以添加相关的数据库依赖(如 MySQL、PostgreSQL 等)到项目中,并在application.properties文件中配置数据库连接信息。然后,使用 Spring Data JPA 来进行数据访问操作。例如:
  • 首先,在pom.xml文件中添加 MySQL 驱动依赖:

收起

xml

复制

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
  • 然后,在application.properties文件中配置数据库连接:

收起

properties

复制

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update

这里假设数据库名为 “mydb”,用户名是 “root”,密码是 “password”。spring.jpa.hibernate.ddl-auto属性用于设置 Hibernate 在启动时对数据库表结构的操作策略,这里设置为 “update” 表示根据实体类的变化自动更新数据库表结构。

  • 接下来,创建一个实体类(Entity)和数据访问接口(Repository)。假设我们有一个名为 “User” 的实体类,代码如下:

收起

java

复制

package com.example.demo.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;

    // 构造函数、Getter和Setter方法
    public User() {
    }

    public User(String name, String email) {
        this.name = name;
        this.email = email;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}
  • 然后创建一个数据访问接口UserRepository,继承自JpaRepository

收起

java

复制

package com.example.demo.repository;

import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}
  • 现在,你就可以在服务层(Service)或控制器中使用UserRepository来进行数据库操作了。例如,在HelloController中添加一个方法来保存用户信息:

收起

java

复制

@RestController
public class HelloController {

    private final UserRepository userRepository;

    public HelloController(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @GetMapping("/hello")
    public String helloWorld() {
        return "Hello, Spring Boot!";
    }

    @PostMapping("/save-user")
    public String saveUser(@RequestParam String name, @RequestParam String email) {
        User user = new User(name, email);
        userRepository.save(user);
        return "User saved successfully!";
    }
}

这个方法接收用户的姓名和邮箱作为参数,创建一个User对象并保存到数据库中。

七、总结

通过这个简单的示例,我们初步了解了如何使用 Spring Boot 构建一个基本的 Web 应用。Spring Boot 的强大之处在于它提供了丰富的功能和便捷的开发方式,让我们能够快速搭建起一个应用的基础架构,并在此基础上进行扩展和优化。在实际项目开发中,你可以根据具体的需求进一步深入学习和应用 Spring Boot 的各种特性,如安全认证、缓存管理、异步处理等,以构建出更加完善和强大的应用系统。希望这篇博文对你学习 Spring Boot 有所帮助,如果你有任何问题或建议,欢迎在评论区留言交流。

以上就是关于 Spring Boot 带代码的一篇博文,你可以根据实际情况进行调整和扩展。祝你在 Spring Boot 的学习和开发之旅中取得成功!

如何在 Spring Boot 项目中添加数据库连接配置?

如何在 Spring Boot 项目中进行单元测试?

Spring Boot 项目中配置日志的示例代码

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

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

相关文章

GitHub 桌面版配置 |可视化界面进行上传到远程仓库 | gitLab 配置【把密码存在本地服务器】

&#x1f947; 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 &#x1f389; 声明: 作为全网 AI 领域 干货最多的博主之一&#xff0c;❤️ 不负光阴不负卿 ❤️ 文章目录 桌面版安装包下载clone 仓库操作如下GitLab 配置不再重复输入账户和密码的两个方…

今天最新早上好问候语精选大全,每天问候,相互牵挂,彼此祝福

1、朋友相伴&#xff0c;友谊真诚永不变&#xff01;彼此扶持绿树荫&#xff0c;共度快乐雨后天&#xff01;一同分享的表情&#xff0c;愿我们友情长存&#xff0c;一生相伴永相连&#xff01; 2、人生几十年&#xff0c;苦累伴酸甜&#xff0c;风华不再茂&#xff0c;雄心非当…

Verdi -- 打开Consol,创建和执行tcl命令举例

1.Verdi打开Console的步骤&#xff1a; For ref: 2创建tcl脚本. tcl脚本路径&#xff1a; 在Makefile下&#xff0c;与.v文件在同一个目录8_demo这个文件夹下。 font.tcl代码内容&#xff1a; verdiSetFont -monoFont "Courier" -monoFontSize "24" 作用…

基于java博网即时通讯软件的设计与实现【源码+文档+部署讲解】

目 录 1. 绪 论 1.1. 开发背景 1.2. 开发意义 2. 系统设计相关技术 2.1 Java语言 2.2 MySQL数据库 2.3 Socket 3. 系统需求分析 3.1 可行性分析 3.2 需求分析 3.3 系统流程图 3.4 非功能性需求 4. 系统设计 4.1 系统功能结构 4.2 数据库设计 5. 系统实现 5.…

视频汇聚融合云平台Liveweb一站式解决视频资源管理痛点

随着5G技术的广泛应用&#xff0c;各领域都在通信技术加持下通过海量终端设备收集了大量视频、图像等物联网数据&#xff0c;并通过人工智能、大数据、视频监控等技术方式来让我们的世界更安全、更高效。然而&#xff0c;随着数字化建设和生产经营管理活动的长期开展&#xff0…

Hadoop集群(HDFS集群、YARN集群、MapReduce​计算框架)

一、 简介 Hadoop主要在分布式环境下集群机器&#xff0c;获取海量数据的处理能力&#xff0c;实现分布式集群下的大数据存储和计算。 其中三大核心组件: HDFS存储分布式文件存储、YARN分布式资源管理、MapReduce分布式计算。 二、工作原理 2.1 HDFS集群 Web访问地址&…

文本的AIGC率检测原理

背景 你可能在学生群里或者视频中看过这样的消息&#xff1a;“我们学校要求论文AI率不能超过30%&#xff01;”、“你们学校查AI率吗&#xff1f;”之类的&#xff0c;这些消息到底是真是假&#xff1f; 随着人工智能的快速发展和广泛应用&#xff0c;不论是工作中还是学生学…

PODS:2024-12-21由麻省理工学院 和 OpenAI联合创建一个专门为个性化对象识别任务设计的数据集.

2024-12-21&#xff0c;由MIT和OpenAI联合创建的个性化视觉数据集&#xff0c;为细粒度和数据稀缺的个性化视觉任务提供了新的解决方案&#xff0c;推动了个性化模型的发展&#xff0c;具有重要的研究和应用价值。 一、研究背景&#xff1a; 在计算机视觉领域&#xff0c;现代…

OpenFeign快速入门 示例:黑马商城

使用起因 之前我们利用了Nacos实现了服务的治理,利用RestTemplate实现了服务的远程调用。这样一来购物车虽然通过远程调用实现了调用商品服务的方法,但是远程调用的代码太复杂了: 解决方法 并且这种调用方式比较复杂&#xff0c;一会儿远程调用&#xff0c;一会儿本地调用。 因…

YOLOv11模型改进-模块-引入多尺度大核注意力Multi-scale Large Kernel Attention

MLKA 的提出源于图像超分辨率任务的挑战性&#xff0c;该任务需重建低质量图像缺失的高频信息&#xff0c;但因 LR 与 HR 图像对应关系复杂&#xff0c;寻找像素相关性困难。此前模型扩展容量的方法增加了训练负担和数据收集成本&#xff0c;而采用的注意力机制无法同时获取局部…

学习思考:一日三问(学习篇)之匹配VLAN

学习思考&#xff1a;一日三问&#xff08;学习篇&#xff09;之匹配VLAN 一、学了什么&#xff08;是什么&#xff09;1.1 理解LAN与"V"的LAN1.2 理解"V"的LAN怎么还原成LAN1.3 理解二层交换机眼中的"V"的LAN 二、为何会产生需求&#xff08;为…

国际网络专线怎么申请开通?

随着国内企业在国际市场中的活跃度逐年提升&#xff0c;国际网络专线逐渐成为保障企业高效运营的重要基础设施。稳定且高效的网络不仅能够提升工作效率&#xff0c;还能为海外业务的顺利开展提供可靠保障。那么&#xff0c;国际网络专线如何开通&#xff1f;其申请流程是怎样的…

Ubuntu20.04安装openMVS<成功>.colmap<成功>和openMVG<失败(已成功)>

一、安装openMVS 参考官方文档 sudo apt-get -y install git mercurial cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev eigen git clone https://gitlab.com/libeigen/eigen --branch 3.4 mkdir eigen_build cd eigen_build &&\cmake . ../eigen -…

【magic-dash】01:magic-dash创建单页面应用及二次开发

文章目录 一、magic-dash是什么1.1 安装1.2 使用1.2.1 查看内置项目模板1.2.2 生成指定项目模板1.2.3 查看当前magic-dash版本1.2.4 查看命令说明1.2.5 内置模板列表二、创建虚拟环境并安装magic-dash三、magic-dash单页工具应用开发3.1 创建单页面项目3.1.1 使用命令行创建单页…

重温设计模式--原型模式

文章目录 原型模式定义原型模式UML图优点缺点使用场景C 代码示例深拷贝、浅拷贝 原型模式定义 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象&#xff1b; 核心中的核心就是 克隆clone ,后面讲 原型模式是一种创建型设计模式&#xff0c;它的主要…

Kibana8.17.0在mac上的安装

1、Kibana是什么 Kibana是与elasticsearch配套使用的数据分析与可视化工具&#xff0c;通过Kibana可以轻松与es中存储的数据进行高效的交互&#xff0c;包括数据写入、检索、删除等操作&#xff0c;并可以通过编写部分代码将数据做成各种报表&#xff0c;从而进行非常直观的统…

61.基于SpringBoot + Vue实现的前后端分离-在线动漫信息平台(项目+论文)

项目介绍 随着社会互联网技术的快速发展&#xff0c;每个行业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于在线动漫信息平台当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了在线动漫信息平台&#xff0c;它彻底…

【python】银行客户流失预测预处理部分,独热编码·标签编码·数据离散化处理·数据筛选·数据分割

数据预处理 通过网盘分享的文件&#xff1a;银行流失预测数据和代码 链接: https://pan.baidu.com/s/1loiB8rMvZArfjJccu4KW6w?pwdpfcs 提取码: pfcs 非数值特征处理 目的&#xff1a;将非数值特征转换为数值型&#xff0c;以便模型能够处理。方法&#xff1a; 地理位置&am…

从零开始使用MaxKB打造本地大语言模型智能问答系统与远程交互

文章目录 前言1. 下载运行Ollama2. 安装大语言模型3. 安装Cpolar工具4. 配置公网地址5. 固定公网地址6. MaxKB 添加Olama7.创建问答应用 前言 目前大语言模型&#xff08;LLM&#xff09;已经成为了人工智能领域的一颗璀璨明星&#xff0c;从自然语言处理到智能问答系统&#…

neo4j无法导入csv文件

文章目录 问题解决方案1. 检查Neo4j的neo4j.conf配置文件2. 确保文件路径正确3. 将CSV文件放置到import目录4. 重启Neo4j服务器 问题 neo4j browser中导入csv文件报错无法导入 具体&#xff1a;输入下列语句LOAD CSV WITH HEADERS FROM “file:///D:/KG/relation.csv” AS lin…