我的第一个后端项目(环境搭建,Springboot项目,运行,接口验证)

news2024/11/15 16:19:47

一. 安装Java开发工具包(JDK):

访问Java Software | OracleOracle官方网站,下载适合你操作系统的最新版本的JDK。安装JDK并设置好JAVA_HOME环境变量。

二. 安装集成开发环境(IDE):

推荐使用IntelliJ IDEA作为IDE。你可以从官方网站(IntelliJ IDEA – the Leading Java and Kotlin IDE)下载适合你操作系统的版本,并根据安装向导进行安装。(2023.2版本)注册登录后才允许试用(30天)

三. 创建一个Spring Boot项目:

1.打开IDE,选择创建新的项目。

2.在创建项目的向导中选择Spring Initializr,填写项目的基本信息。

比如项目名称和所需的依赖。之后点击next进行下一步。

注:Server URL可改用阿里云:https://start.aliyun.com

 

3.勾选Spring Web,并点击finish完成项目的创建

4.第一次使用intellij idea,会自动下载加载资源。

 

四. 目录结构、配置项目依赖。

## SpringBoot项目结构 如下:

src/main/java/com项目根包:SpringBoot项目要求我们将来定义的类和包必须放在这个包下

BootDemoApplications是项目启动类:SpringBoot项目自动生成,里面包含main方法,直接启动后端

src/main/resoures/application.properties中定义端口号,如 server.port=8080

在项目创建过程中,选择添加Spring Boot的相关依赖。这些依赖将提供基本的Spring Boot功能和特性。可以在项目的构建文件(如pom.xml或build.gradle)中手动添加所需的依赖。

五. 编写代码

自动这里生成了样例代码

1.在项目结构中找到主启动类

(通常是一个名为Application的类),这是项目的入口,点击main即可运行。

你可以在这个类中添加启动Spring Boot应用的代码。

package com.luoyang.bootdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class BootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(BootDemoApplication.class, args);
    }

}

创建控制器(Controller)类来处理请求,创建数据访问对象(DAO)类来访问数据库,创建服务(Service)类来处理业务逻辑等。

2.控制器(Controller)样例代码

这里IDE自动生成了样例代码,给前端和移动端访问,提供了一些简单的Controller接口;

在demos.web目录下生成了Controller类,如下:

BasicController.java -Controller简单实现类



package com.luoyang.bootdemo.demos.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * Controller是所有处理业务请求的类的统称,我们可以创建一个包controller保存实际处理业务的所有Controller类
 * 1. controller包需要放在项目的根包下
 * 2. Controller上要定义@Controller注解,否则Spring MVC框架不识别该类
 * 3. 处理业务的方法要定义@RequestMapping注解,且参数要与页面请求表单中action的值一致
 *
 * @author <a href="mailto:chenxilzx1@gmail.com">theonefx</a>
 */
@Controller
public class BasicController {

    // http://127.0.0.1:8080/hello?name=lisi
    @RequestMapping("/hello")
    @ResponseBody
    public String hello(@RequestParam(name = "name", defaultValue = "unknown user") String name) {
        return "我是后端,请求返回值是 " + name;
    }

    // http://127.0.0.1:8080/user
    @RequestMapping("/user")
    @ResponseBody
    public User user() {
        User user = new User();
        user.setName("theonefx");
        user.setAge(666);
        return user;
    }

    // http://127.0.0.1:8080/save_user?name=newName&age=11
    @RequestMapping("/save_user")
    @ResponseBody
    public String saveUser(User u) {
        return "user will save: name=" + u.getName() + ", age=" + u.getAge();
    }

    // http://127.0.0.1:8080/html
    @RequestMapping("/html")
    public String html() {
        return "index.html";
    }

    @ModelAttribute
    public void parseUser(@RequestParam(name = "name", defaultValue = "unknown user") String name
            , @RequestParam(name = "age", defaultValue = "12") Integer age, User user) {
        user.setName("zhangsan");
        user.setAge(18);
    }
}

PathVariableController.java  Controller具体实现类简单示例



package com.luoyang.bootdemo.demos.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 子类-具体实现类
 *
 * @author <a href="mailto:chenxilzx1@gmail.com">theonefx</a>
 */
@Controller
public class PathVariableController {

    // http://127.0.0.1:8080/user/123/roles/222
    @RequestMapping(value = "/user/{userId}/roles/{roleId}", method = RequestMethod.GET)
    @ResponseBody
    public String getLogin(@PathVariable("userId") String userId, @PathVariable("roleId") String roleId) {
        return "User Id : " + userId + " Role Id : " + roleId;
    }

    // http://127.0.0.1:8080/javabeat/somewords
    @RequestMapping(value = "/javabeat/{regexp1:[a-z-]+}", method = RequestMethod.GET)
    @ResponseBody
    public String getRegExp(@PathVariable("regexp1") String regexp1) {
        return "URI Part : " + regexp1;
    }
}

User.java 实体类



package com.luoyang.bootdemo.demos.web;

/**
 * 实体类
 *
 * @author <a href="mailto:chenxilzx1@gmail.com">theonefx</a>
 */
public class User {

    private String name;

    private Integer age;

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

静态资源目录src/main/resoures/static :用来保存当前web应用(我们的网站)中所有的静态资源(页面,图片和其他素材)

index.html

<html>
<body>
<h1>hello word!!!</h1>
<p>this is a html page</p>
</body>
</html>

六. 配置数据库:

根据项目需求,选择适合的数据库(如MySQL、PostgreSQL、MongoDB等),安装并配置数据库连接信息。可以使用Spring Boot的配置文件(application.properties或application.yml)来设置数据库连接参数。

这里简单样例,直接把数据写死了

七. 运行项目:

在IDE中运行Spring Boot项目,IDE会自动启动内嵌的Web服务器。

1.在编辑器上点击编译项目,开启项目点击运行,如下图

如果使用Maven或Gradle构建项目,则可以使用命令行运行mvn spring-boot:run或gradle bootRun。

 可能遇到的问题

1.启动不了,端口被占用

查看8080端口会不会被占用_☆七年的博客-CSDN博客

2.配置下载依赖仓库

File>Setting>Build、Execution、deployment>Build Tools>Maven,设置你自己的setting.xml,配置依赖下载地址,以及存储repository本地仓库

八. 验证项目

1.项目启动后,可以通过浏览器或API测试工具(如Postman)。

访问http://localhost:8080/或者指定的端口号,确保你能够看到Spring Boot欢迎页面。

这表示你的项目已经成功启动并运行。

 其中使用了URL-统一资源定位

 

2.访问后端静态web页面

在浏览器中,根据URL的主机地址信息,可以找到服务器(Tomcat),抽象路径部分最开始的"/",则是让服务器去项目的static目录下找对应的资源文件

 

3.请求后端接口

以下是简单的示例接口,Get请求类型

 http://127.0.0.1:8080/hello?name=lisi

 

九. 开发和测试

根据项目需求,继续开发和测试功能模块,编写业务逻辑和处理请求的代码。

十. 保存代码和版本控制

定期保存代码,使用版本控制工具(如Git)对代码进行管理,并提交代码到代码仓库。

以上是搭建一个Spring Boot项目及基本开发环境的步骤。你可以根据项目需求,进一步配置和扩展项目,例如添加安全认证、集成第三方服务等。记得在开发过程中关注错误日志和进行单元测试,以确保代码的质量和稳定性。

创造价值,乐哉分享!776147358  

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

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

相关文章

Appium+python自动化(二十八)- 高级滑动(超详解)

高级溜冰的滑动 滑动操作一般是两点之间的滑动&#xff0c;这种滑动在这里称其为低级的溜冰滑动&#xff1b;就是上一节给小伙伴们分享的。然而实际使用过程中用户可能要进行一些多点连续滑动操作。如九宫格滑动操作&#xff0c;连续拖动图片移动等场景。那么这种高级绚丽的溜…

word里的页码问题

一份文档写完&#xff0c;如果需要页码&#xff0c;第一页是封面&#xff0c;封面不需要页码怎么办&#xff1f; 解决&#xff1a;打开页眉页脚&#xff0c;然后把首页不同勾选上&#xff0c;这一页就没有页码了。 目录页&#xff0c;往往要使用罗马数字&#xff0c;其他正文又…

《遗留系统现代化》读书笔记(模式篇-代码现代化(一))

本文地址&#xff1a;http://t.csdn.cn/vS0Za 文章目录 代码现代化&#xff1a;你的代码可测吗&#xff1f;你的代码可测吗&#xff1f;标题如何让代码变得可测&#xff1f;接缝的位置接缝的类型新生和外覆为代码添加测试决策表模式测试的类型和组织遗留系统中的测试策略 代码…

【深度学习笔记】Softmax 回归

本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记&#xff0c;视频由网易云课堂与 deeplearning.ai 联合出品&#xff0c;主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习&#xff0c;视频的链接如下&#xff1a; 神经网络和…

QuantMania!《快乐机器学习》和《Python 从入门到入迷》作者,FRM,CAIA

王的机器主理人 王圣元 (FRM, CAIA) 某加密货币公司 Head of Quant 冬海集团 SeaMoney 建模负责人 八方咨询 量化总监 新加坡国立大学金融数学硕士 新加坡国立大学量化金融学士 《快乐机器学习》的作者 《Python 从入门到入迷》的作者 第一本书 《快乐机器学习》 第二本书《Pyt…

MySQL 8.0详细安装配置教程

一. 前言 MySQL是目前最为流行的开源数据库产品&#xff0c;是完全网络化跨平台的关系型数据库系统。它起初是由瑞典MySQLAB公司开发&#xff0c;后来被Oracle公司收购&#xff0c;目前属于Oracle公司。因为开源&#xff0c;所以任何人都能从官网免费下载MySQL软件&#xff0c…

【4】-多个User执行测试

目录 一个locustfile中有多个User 使用--class-picker指定执行 小结 一个locustfile中有多个User from locust import task, HttpUserclass User01(HttpUser):weight 3 # 权重host https://www.baidu.comtaskdef user_01_task(self):self.client.get(url/, nameuser_01_…

echarts柱状图每根柱子添加警戒值/阈值,分段警戒线

需求&#xff1a;柱状图每根柱子都添加单独的警戒值&#xff08;黄色线部分&#xff09;&#xff0c;效果图如下&#xff1a; 实现方式我这有两种方案&#xff0c;如下介绍。 方案1&#xff1a;使用echarts的标线markLine实现&#xff08;ps&#xff1a;此种方案有弊端&#x…

小程序通过ip+port+路径获取服务器中的图片

配置IIS 首先需要配置IIS。 打开控制面板&#xff0c;接下来的流程按下图所示。 安装好后&#xff0c;按“win”键&#xff0c;搜索IIS 选择一个ip地址&#xff0c;或手动填写&#xff0c;端口号按需更改 填写别名和物理路径&#xff0c;别名就是后续通过url访问物理…

初步了解预训练语言模型BERT

本文字数&#xff1a;&#xff1a;4024字 预计阅读时间&#xff1a;12分钟 BERT是由Google提出的预训练语言模型&#xff0c;它基于transformer架构&#xff0c;被广泛应用于自然语言处理领域&#xff0c;是当前自然语言处理领域最流行的预训练模型之一。而了解BERT需要先了解注…

Mock-MOCO使用过程

一、jar包下载&#xff1a;https://github.com/dreamhead/moco 二、准备mock的json文件 data.json内容&#xff1a; ####GET请求 [{"description": "response使用Content-Type为charsetGBK编码格式来查看返回信息为中文的内容","request": {&q…

LeetCode101. 对称二叉树

101. 对称二叉树 一、题目 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&am…

一百三十七、Hive——HQL运行报错(持续更新中)

一、timestamp字段与int字段相加 &#xff08;一&#xff09;场景 change_time字段是timestamp字段&#xff0c;代表一个红绿灯周期的开始时间&#xff08;先是绿灯、再是黄灯、最后红灯&#xff09;&#xff0c;而green是int字段&#xff0c;代表绿灯的秒数&#xff0c;现在…

Linux常用基础命令-------你想要的我都有❀

文章目录❀ ❀ls命令 ❀cd命令 ❀pwd命令 ❀date命令 ❀创建、删除文件和目录命令 ❀alias命令 ❀复制、移动、重命名、查看&#xff08;文件、目录&#xff09;命令 ❀find查找、wc统计命令 ❀vi/vim命令 1、打开文件 2、工作模式 vi与vim的四个模式 进入编辑模式…

Verilog语法学习——LV2_异步复位的串联T触发器

LV2_异步复位的串联T触发器 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 题目描述&#xff1a; 用verilog实现两个串联的异步复位的T触发器的逻辑&#x…

MacOS本地安装Hadoop3

金翅大鹏盖世英&#xff0c;展翅金鹏盖世雄。 穿云燕子锡今鸽&#xff0c;踏雪无痕花云平。 ---------------- 本文密钥&#xff1a;338 ----------------- 本文描述了在macbook pro的macos上安装hadoop3的过程&#xff0c;也可以作为在任何类linux平台上安装hadoop3借鉴。 …

传染病模型

title: 传染病模型 date: 2023-7-24 10:55:00 updated: 2023-7-24 10:55:00 tags: 算法数学建模传染病模型matlab categories: 数学建模 传染病模型中的符号表示 SI模型&#xff08;艾滋传染模型&#xff09; %% 直接求微分方程的解析解 dsolve(Dx1 -0.1 * x1 * x2 / 1000, D…

微服务契约测试框架Pact-Python实战

Pact是一个契约测试框架&#xff0c;有多种语言实现&#xff0c;本文以基于pact-python探究契约测试到底是什么&#xff1f;以及如何实现 官网&#xff1a;自述文件 |契约文档 (pact.io) 契约测试步骤 1、为消费者写一个单元测试&#xff0c;让它通过&#xff0c;并生成契约…

阿里Java开发手册~集合处理

1. 【强制】关于 hashCode 和 equals 的处理&#xff0c;遵循如下规则&#xff1a; 1 &#xff09; 只要重写 equals &#xff0c;就必须重写 hashCode 。 2 &#xff09; 因为 Set 存储的是不重复的对象&#xff0c;依据 hashCode 和 equals 进行判断&#xff…

MySQL之深入InnoDB存储引擎——物理文件

文章目录 一、参数文件二、日志文件三、表结构定义文件四、InnoDB 存储引擎文件1、表空间文件2、重做日志文件 一、参数文件 当 MySQL 实例启动时&#xff0c;数据库会先去读一个配置参数文件&#xff0c;用来寻找数据库的各种文件所在位置以及指定某些初始化参数。在默认情况…