SpringBoot 3.3 【一】手把手讲解-使用Eclipse创建第一个SpringBoot应用程序

简单动作,深刻联结。在这技术海洋,我备好舟,等你扬帆。启航吧!
🌟点击【关注】,解锁定期的技术惊喜,让灵感与知识的源泉不断涌动。
👍一个【点赞】,如同心照不宣的默契,是我们共同语言的闪亮印记。
📚【收藏】好文,搭建你的专属智慧库,让每次回望都能照亮新知之路。


在本文中,我们将一起探讨如何使用最新版Spring Boot版本 Spring Boot 3.3.1、Eclipse IDE 和 Maven(不使用 Spring Boot Starter 插件)来创建一个简单的 Spring Boot 应用程序。这个应用程序将包含一个 Thymeleaf 登陆页面,一个 Java 类 用于接收用户名和密码,并进行简单的验证。

一、准备工作

1. 安装 Java:

  • 访问 Oracle 官网 下载并安装 Java JDK 17(Spring Boot 3.3.1 需要 JDK 17 或更高版本)。
  • 配置环境变量,确保 JAVA_HOMEPATH 变量设置正确。

2. 安装 Eclipse:

  • 访问 Eclipse 官网 下载 Eclipse IDE for Enterprise Java and Web Developers。
  • 解压并运行 Eclipse 安装程序,按照提示完成安装。

3. 安装 Maven:

访问 Maven 官网 下载并安装 Maven。
配置环境变量,确保 M2_HOMEPATH 变量设置正确。

二、创建 Maven 项目

1. 启动 Eclipse,点击 File -> New -> Maven Project

2. 选择项目模板:

  • 勾选 Create a simple project (skip archetype selection)。
  • 点击 Next
    在这里插入图片描述

3. 填写项目信息:

  • Group Id:com.jsglxx
  • Artifact Id:demo
  • Version:0.0.1-SNAPSHOT
  • Packaging:jar
    在这里插入图片描述

4. 点击 Finish,Eclipse 将自动生成项目结构。

三、添加 Spring Boot 依赖

1. 打开 pom.xml 文件,添加以下依赖:

  <dependencies>  <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-thymeleaf</artifactId>  <version>3.3.1</version>  </dependency>  <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId>  <version>3.3.1</version>  </dependency>  
</dependencies>

2. 添加 Spring Boot Maven 插件:

<build>  <plugins>  <plugin>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-maven-plugin</artifactId>  <version>3.3.1</version>  <executions>  <execution>  <goals>  <goal>repackage</goal>  </goals>  </execution>  </executions>  </plugin>  </plugins>  
</build>

四、编写代码

1. 创建 Spring Boot 项目的基本文件

在Spring Boot中,application.yml 文件用来集中配置应用程序的属性设置,它提供了一种清晰、层次化的配置方式,替代了传统的 application.properties,使配置管理更加灵活和可读。

1)在 src/main/resources 目录下创建一个 application.yml 配置文件,并配置服务器端口号:

server:port:8080

2)在 src/main/java 目录下创建项目启动类: DemoApplication.java

package com.jsglxx.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

2. 创建 Thymeleaf 登陆页面:

src/main/resources/templates 目录下创建一个 login.html 文件。

<!DOCTYPE html>  
<html xmlns:th="http://www.thymeleaf.org">  
<head>  <title>请登陆!</title>  
</head>  
<body>  <h2>用户登陆</h2> <h2 th:text="${errorMessage}"></h2>   <!-- 此处显示登陆失败的错误信息 --><form action="/login" method="post">  <div>  <label>用户名:</label>  <input type="text" name="username"/>  </div>  <div>  <label>密  码:</label>  <input type="password" name="password"/>  </div>  <button type="submit">登 陆</button>  </form>  
</body>  
</html>

2. 创建 Java 类用于接收用户名和密码

src/main/java/com/jsglxx/demo 目录下创建一个 LoginController.java 文件。

package com.jsglxx.demo;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;  
import org.springframework.web.bind.annotation.RequestParam;  
import org.springframework.web.servlet.ModelAndView;  @Controller  
public class LoginController {  @PostMapping("/login")  public ModelAndView login(@RequestParam("username") String username, @RequestParam("password") String password) {  if ("admin".equals(username) && "password".equals(password)) {  return new ModelAndView("welcome", "message", "登陆成功!");  } else {  return new ModelAndView("login", "errorMessage", "错误的用户名或密码!");  }  }  @GetMapping("/login")  public String showLoginForm() {  return "login";  }  
}

以上代码是一个典型的 Spring Boot 控制器类,用于处理与登录相关的 HTTP 请求。让我们逐行解析这段代码的关键部分:

  • @Controller:这是一个 Spring MVC 控制器注解,它告诉 Spring 这个类是用来处理 HTTP 请求的。Spring Boot 自动扫描此类注解,并将它们注册为处理传入请求的控制器。
  • @PostMapping(“/login”):这是一个请求映射注解,用于处理 HTTP POST 请求。当客户端发送一个 POST 请求到 /login URL 时,此方法将被调用。
  • @RequestParam:注解用于从 HTTP 请求中提取参数。这里,“username”“password”POST 请求体中的参数名称,它们将分别绑定到方法参数 usernamepassword 上。
  • ModelAndView(“welcome”, “message”, “登陆成功!”):如果登录成功,返回一个 ModelAndView 对象,其中 “welcome” 是视图的名称(简单理解 为welcome.html页面,同理如果视图名称是"login",则对应login.html),“message” 是模型中的键(html中的 th:text=“${message}”),“登陆成功!” 是与该键关联的值。Spring Boot 将渲染这个视图,并将模型数据传递给视图层。
  • @GetMapping(“/login”):这个注解用于处理 HTTP GET 请求。当客户端请求 /login URL 时,将调用下面的方法,即用于显示登录表单页面 login.html
  • return “login”:返回一个字符串 “login”,这通常是指向视图模板的名称,这里对应 login.html 页面。Spring Boot 将负责渲染这个视图,并将其返回给客户端。

3. 创建欢迎页面

src/main/resources/templates 目录下创建一个 welcome.html 文件。

<!DOCTYPE html>  
<html xmlns:th="http://www.thymeleaf.org">  
<head>  <title>欢迎你!</title>  
</head>  
<body>  <h2 th:text="${message}"></h2>  
</body>  
</html>

五、运行和测试

1. 运行项目:

在主类的 DemoApplicationmain 方法上右键,选择 Run As -> Java Application。出现如下信息则说明启动成功(看到最后一行的启动ms):

.   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::                (v3.3.1)2024-07-11T20:37:30.640+08:00  INFO 16584 --- [           main] com.jsglxx.demo.DemoApplication          : Starting DemoApplication using Java 17.0.5 with PID 16584 (D:\eclipse-workspace\demo\target\classes started by JJW in D:\eclipse-workspace\demo)
2024-07-11T20:37:30.644+08:00  INFO 16584 --- [           main] com.jsglxx.demo.DemoApplication          : No active profile set, falling back to 1 default profile: "default"
2024-07-11T20:37:31.722+08:00  INFO 16584 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)
2024-07-11T20:37:31.738+08:00  INFO 16584 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-07-11T20:37:31.739+08:00  INFO 16584 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.25]
2024-07-11T20:37:31.829+08:00  INFO 16584 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-07-11T20:37:31.832+08:00  INFO 16584 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1138 ms
2024-07-11T20:37:32.270+08:00  INFO 16584 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path '/'
2024-07-11T20:37:32.282+08:00  INFO 16584 --- [           main] com.jsglxx.demo.DemoApplication          : Started DemoApplication in 2.018 seconds (process running for 2.327)

2. 访问应用:

  • 打开浏览器,访问 http://localhost:8080/login

在这里插入图片描述

3.测试登录:

  • 输入用户名 admin 和密码 password,点击登录,你应该能够看到欢迎页面。
  • 输入 错误的用户名或密码,你应该能够看到错误消息。

在这里插入图片描述


在这里插入图片描述


六、总结

通过遵循上述步骤,你应该能够成功地在 Eclipse 中使用 Maven 创建一个简单的 Spring Boot 应用程序,该应用程序包含一个 Thymeleaf 登陆页面和一个 Java 类用于接收用户名和密码,并进行简单的验证。

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

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

相关文章

AI工具,如何通过 GPT-4o 提高工作效率

文章目录 引言一、理解GPT-4o及其功能二、如何利用GPT-4o提高工作效率1. 代码生成与优化2. 自动化测试与调试3. 技术文档撰写与知识管理 三、实际案例与成功应用1. GitHub 协作与问题解决2. 敏捷开发与迭代优化 四、GPT-4o的挑战与应对策略五、未来展望与发展方向六、结论 &…

保护企业数据资产的策略与实践:数据安全治理技术之实战篇!

在上篇文章中&#xff0c;我们深入讨论了数据安全治理技术的前期准备工作&#xff0c;包括从建立数据安全运维体系、敏感数据识别、数据的分类与分级到身份认等方面的详细规划和设计。这些准备工作是实现数据安全治理的基础&#xff0c;它们为企业建立起一套系统化、标准化的数…

二进制补码计算

基本知识 原码&#xff08;Sign and Magnitude&#xff09;:原码是一种最简单的表示法&#xff0c;使用符号位和数值位来表示整数。 符号位&#xff1a;最高位是符号位&#xff0c;0表示正数&#xff0c;1表示负数。 数值位&#xff1a;剩下的位表示数值的大小。反码&#xf…

windows11下vscode配置C/C++(过程记录)

一、概述 一直想在Windows11系统下使用vscode运行C/C程序&#xff0c;如果使用visual studio的话需要占用大量内存&#xff0c;且每次启动较慢。vscode则可以省去大多数烦恼。 二、具体配置过程 &#xff08;一&#xff09;参考博客 主要参考两篇博客&#xff0c;分别如下所示…

kubernetes集群如何更改所有节点IP

kubernetes集群如何更改所有节点IP 情景描述更换IP前的准备工作更换IP后的工作--master更换IP后的工作--node节点重新部署之前那些服务 情景描述 我有三台服务器&#xff0c;想要将其组成了一个kubernetes集群&#xff0c;在部署之前&#xff0c;我就对其进行了固定IP的操作&a…

ARM功耗管理之多核处理器启动

安全之安全(security)博客目录导读 思考&#xff1a;SecureBoot&#xff1f;多核处理器启动流程&#xff1f;PSCI启动方式&#xff1f; 一般嵌入式系统使用的都是对称多处理器&#xff08;Symmetric Multi-Processor, SMP&#xff09;系统&#xff0c;包含了多个cpu, 这几个cp…

MICCAI 2024Centerline Boundary Dice Loss for Vascular Segmentation

MICCAI 2024 Centerline Boundary Dice Loss for Vascular Segmentation MICCAI 2024Centerline Boundary Dice Loss for Vascular Segmentation中心线边界Dice损失用于血管分割**摘要**:1. 引言相关工作&#xff1a; 2. 方法预备知识Dice的变化 3 实验3.1 数据集3.2 设置3.3 结…

推荐一个比 Jenkins 使用更简单的项目构建和部署工具

最近发现了一个比 Jenkins 使用更简单的项目构建和部署工具&#xff0c;完全可以满足个人以及一些小企业的需求&#xff0c;分享一下。 项目介绍 Jpom 是一款 Java 开发的简单轻量的低侵入式在线构建、自动部署、日常运维、项目监控软件。 日常开发中&#xff0c;Jpom 可以解…

python--实验8 函数(2)

知识点 变量的作用域 定义&#xff1a;解释了局部变量和全局变量的概念。局部变量&#xff1a; 局部变量是在函数内部定义的变量。它们只在该函数内部可见&#xff0c;一旦函数执行完毕&#xff0c;这些变量就会被销毁。例子&#xff1a;在函数内部通过赋值创建的变量。全局…

macbook触控栏养宠物:Touchbar pet for Mac 免费下载

macbook pro自从出了touchbar后&#xff0c;看起来是十分的炫酷&#xff0c;但平时却很少有人使用&#xff0c;为了让touchbar充分利用起来&#xff0c;Touch bar pet就横空出世了&#xff0c;可爱的画风&#xff0c;简单的玩法&#xff0c;让你可以在touchbar上也可以养一只自…

网络安全就业方向(非常详细)零基础入门到精通,收藏这一篇就够了

这里我整合并且整理成了一份【282G】的网络安全/红客技术从零基础入门到进阶资料包&#xff0c;需要的小伙伴文末免费领取哦&#xff0c;无偿分享&#xff01;&#xff01;&#xff01; 对于从来没有接触过网络安全的同学&#xff0c;我们帮你准备了详细的学习成长路线图。可以…

2.5 计算机网络

声明&#xff1a;文章参考的《系统架构设计师教程&#xff08;第二版&#xff09;》&#xff0c;如有侵权&#xff0c;本人将立即修改和删除。 利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来&#xff0c;并依靠网络软件以及通信协议实现…

p15 p16 c语言实现三子棋

具体的实现代码 game.c #include "game.h"void InitBoard(char board[ROW][COL], int row, int col) {int i 0;int j 0;for (i 0; i < row; i) {for (j 0; j < col; j) {board[i][j] ;}} }void DisplayBoard(char board[ROW][COL], int row, int col) …

【java实现结果集转为树结构,树转为扁平结构】

list转为树&#xff0c;树拉平 业务需求oracle实现树结构1、**Controller.java层** &#xff1a;前端调此处请求2、**service层&#xff1a;** 逻辑结构 &#xff08;zbjcpjService.java&#xff09;&#xff0c;重点&#xff1a;this.entityMapper.queryZbjcpjTree接口3、**ma…

【python算法学习1】用递归和循环分别写下 fibonacci 斐波拉契数列,比较差异

问题&#xff1a; fibonacci 斐波拉契数列&#xff0c;用递归和循环的方法分别写,比较递归和循环的思路和写法的差别 最直接的思路&#xff0c;是写递归方法 循环方法的稍微有点绕&#xff0c;我觉得问题主要是出在&#xff0c;总结循环的通项公式更麻烦&#xff0c;难在数学…

多目标螳螂搜索算法MOMSA求解无人机三维路径规划,可以自行修改障碍物位置(MATLAB代码)

无人机路径规划多目标优化求解是一个复杂的过程&#xff0c;涉及到多个目标的考量和优化算法的应用。以下是一些关键点和相关算法的概述&#xff1a; 1. **多目标优化策略**&#xff1a;在无人机路径规划中&#xff0c;需要同时考虑多个目标&#xff0c;如路径长度、安全性、飞…

关于delete和delete[ ]混用的未定义问题解释

我们知道delete用于释放一个动态空间&#xff0c;而delete[ ]用于释放多个动态空间&#xff0c;但是如果我们混用的话会导致什么问题&#xff1f;我在博客上看了许多文章&#xff0c;但不尽人意&#xff0c;因此写下这篇文章让你知其然知其所以然&#xff08;浅薄的解释&#x…

大数据学习之Spark基础

Spark基础 简述 1、spark作业执行的特点&#xff1a; &#xff08;1&#xff09;只有遇到行动算子的时候&#xff0c;整个spark作业才会被触发执行 &#xff08;2&#xff09;遇到几次&#xff0c;执行几次 2、RDD: 弹性分布式数据集 弹性&#xff1a;数据量可大可小 RDD类似…

插片式远程 I/O模块:Profinet总线耦合器在SIMATIC Manager配置

XD9000是Profinet总线耦合器&#xff0c;单个耦合器最多可扩展32个I/O模块&#xff01;本文将详细介绍如何在SIMATIC Manager中配置插片式远程 I/O模块的Profinet总线耦合器&#xff0c;帮助您更好地应用这一技术。 一、SIMATIC Manager软件组态步骤&#xff1a; 1、创建工程&…

什么是敏捷本地化

快速、敏捷的多语言产品和服务交付正逐渐成为众多行业的常态。在这种情况下&#xff0c;重点从传统的期望&#xff08;即在合理的时间框架内翻译大量内容&#xff09;转变为翻译工作量非常大的小片段&#xff0c;通常在2-3到12-24小时之间&#xff0c;通常在周末或假期。 Logr…