【Java】零基础上手SpringBoot学习日记(day1)

news2024/10/6 0:34:03

前言

此帖为本人学习Springboot时的笔记,由于是个接触计算机一年左右的新手,也没有网站开发经验,所以有些地方的理解会比较浅显并且可能会出现错误,望大佬们多多包涵和指正。

Web应用开发

在我的理解中,Web应用的开发大体分为两个部分,一个是前端的页面设计以及实现,比如使用HTML、CSS、Javascript写出来的给用户看的页面;另一个是后端开发。后端开发主要关注数据处理、服务器逻辑和与前端的通信,负责处理用户请求、存储数据以及确保网站的稳定性和安全性。无论是安卓应用还是桌面端应用都大差不差是这两部分。

不管是前端的JavaScript,还是后端的Java,它们都可以使用自己原生的语法和自带能够使用的包或者模块进行前后端的开发,但这样子开发网站势必会出现重复造轮子的情况,不利于规范化企业化的开发,框架的出现就能够解决这一问题。

SpringBoot简介

SpringBoot是一个基于Spring框架的应用开发快速开发框架,它可以简化Spring应用程序的创建和开发过程。SpringBoot自动化配置了许多默认配置,减少了繁琐的XML配置过程。

本人不熟悉后台开发的知识,但简单了解了一下,以前使用Java开发后台经常会使用XML这种类似HTML格式的语言进行配置项目依赖,这种配置十分繁琐。Springboot框架就能够减少书写重复且繁杂的代码。

编写依赖

Springboot在初始化项目的时候就可以提前选择一些常用的配置项,所以在项目开发之初就能够减少配置环境的工作量。

在这里插入图片描述

在我仔细了解了一些开发流程之后,我发现并不是就不需要配置依赖了;后续有新的需求的时候,初始化时配置的依赖明显不够用,所以仍需要在项目中编写依赖,具体是在项目目录生成之后的pom.xml文件中配置。
在这里插入图片描述
方框框起来的内容是我了解下来比较重要的东西,初始化勾选的javaweb就是 第一个dependency标签中的东西,每个dependency标签中都有子标签 表示该依赖的关键信息 如version(版本) groupid 名称等等。

这些依赖编写完成后会由idea自动在maven中搜索下载,maven在我的理解当中是springboot在服务器中的依赖库,类似于python的pip、node的npm、这种包管理器。

程序入口

编写、下载导入完依赖之后就可以尝试启动服务器,让服务器运行起来;程序的入口就在目录下的ServerApplication中。

通过运行这个main方法就能够把服务器启动,它之所以成为服务器的入口是因为主类的上面有一行 @SpringBootApplication

这是一个注解,它的作用就是能够让下方的代码块具备某些特定的功能,显然这个注解的功能就是把下方的类变成服务器的主入口。在这里插入图片描述

启动好服务器之后就能够看到下方控制台输出如下信息,代表程序运行成功。

在这里插入图片描述

SpringBoot点亮第一个电灯泡(hello world)

仅仅是启动了主程序并不能在浏览器中看到我想要看到的东西,我想到当我访问localhost:8080/xxx (Springboot项目默认端口号是8080)时,页面上出现hello world

我需要创建一个Controllers目录,因为Web开发都是使用MVC模式MVC模式是一种软件架构模式,它将应用程序分为三个主要部分,即模型(Model)、视图(View)和控制器(Controller),以实现代码的分离和更好的组织。

在MVC模式中,模型表示应用程序的数据和业务逻辑,视图表示应用程序的用户界面,控制器则处理用户输入并协调模型和视图之间的交互。

在我的需求中,想要在指定地址的页面获得想要的输出就属于控制器曾的范畴了,所以新建了一个Controllers目录用于存放控制器层的类,接着在该目录下创建了PoiController.class文件,并为了达到我的目的在该文件中编写程序。

在这里插入图片描述

该程序如下:

@RestController
@RequestMapping("/poi")
public class PoiController{
	
	@GetMapping("/hello")
	public String hello(){
		return "hello world";
		}
}

在这段程序中使用了三个注解,分别是:
@RestController :用于标记一个类或者方法,表示该类或方法用于处理HTTP请求,并将响应的结果直接返回给客户端,而不需要进行视图渲染。
@RequestMapping :用于标记一个方法或者类,表示该方法或类用于处理HTTP请求,并映射到指定的URL路径上。
@GetMapping:用于标记一个方法,表示该方法处理GET请求,并映射到指定的URL路径上。

简单来说就是:
RestController 注解让下方的类具有了处理http请求的能力;
RequestMapping 注解表示处理/poi/…的url ;
GetMapping注解表示下方的方法是 url结尾带/poi/hello的get请求的处理方法。

该方法名为hello 返回值为一个String类型的字符串“hello world” 该返回值会渲染到页面上去。

在这里插入图片描述

Get请求的两种参数传递方式

get请求是前端给后端发请求的一种方式,它可以在请求的同时传递一些参数以达到前后端参数传递的作用。

在get请求中有两种参数传递的方式:

  • 一种是以参数的形式传递数据

在这里插入图片描述
这种参数传递的格式为:?key1=value1&key2&value2

  • 另一种是以路径的形式传递数据
    在这里插入图片描述

这种方式一般在请求url的最后方加上 / + 传递的数据

SpringBoot处理Get请求传递的参数的两种形式

  • 如果想要处理这种形式的请求 拿到pageNum和pageSize 两个参数的值
localhost:8080/poi/list?pageNum=2&pageSize=20

可以在controller的类中编写这样的代码:

@GetMapping("/list")  //以参数的形式传递数据
    public String list(@RequestParam(defaultValue="1") int pageNum,@RequestParam(defaultValue="30")int pageSize){
        log.info("poi list pageNum = {},pageSize = {}",pageNum,pageSize);
        return "this is list";
    }

通过在list方法的参数中定义两个int类型的形参,就可以拿到get请求中的两个参数的值了
另外可以在形参之前使用@RequestParam(defaultValue=“1”)注解,来设定两个参数的默认值,这里设置为了1。

当使用postman发出这个请求:
在这里插入图片描述
可以看到成功响应了this is list 字样,在控制台中也可以看到这两个参数的值:

在这里插入图片描述

  • 如果想要处理这种形式的请求 拿到detail/后面的123
localhost:8080/poi/detail/123

可以在controller中编写这样的代码:

@GetMapping("/detail/{id}") //以路径的形式传递数据
    public String detail(@PathVariable int id){
        log.info("poi detail id = {}",id);
        return "this is detail";
    }

这段代码通过在GetMapping注解的参数中(“/detail/{id}” ) ,在不确定的参数上使用{}包裹,然后在方法参数中使用@PathVariable注解 把形参id与{}包裹的id绑定,从而拿到需要的值。

使用postman发起这样的请求:
在这里插入图片描述

可以看到控制台也成功输出了参数id为123:
在这里插入图片描述

Post请求的数据传递方式

Post请求的数据传递方式是通过请求体传递的。在HTTP请求中,Put请求是一种用于向服务器上传数据的请求方法,通常用于更新服务器上的资源。与GET请求不同,PUT请求将数据作为请求的一部分放在请求体body中发送到服务器,而不是作为URL参数传递。

在前后端的数据传输过程中一般会使用json类型的数据。
json类型的数据格式类似于:

{
    "name":"教室",
    "description":"这是一间教室"
}

Springboot处理Post请求的数据

由于json类型的数据的格式特殊,结构为key:value的形式;
所以springboot要处理json的数据最好新建一个类用于储存这些数据:
在controllers下新建Poi类

public class Poi {
    public String name;
    public String description;

}

这样如果要处理上文中json类型的数据,两个数据都有地方放;
接着在controler类中编写处理post请求的程序:

 @PostMapping("/add")  //以body的形式传递数据
    public String add(@RequestBody Poi poi){ //用类储储存json信息
        log.info("poi add name = {} description = {}",poi.name,poi.description);
        return "this is add";
    }

这里使用@RequestBody注解,使获取到的数据存到先前创建的类实例化出来的对象中,
这样的话这个对象的两个属性就分别为前端传过来的json数据的两个值了。

可以验证一下:
使用postman发起请求
在这里插入图片描述

可以看到页面中响应了this is detail ,并且控制台内也输出了json中的数据:
在这里插入图片描述

其他请求的参数处理

除了get、post请求外,restfulapi中还有这其他的请求方法,如put、delete等,但他们的处理方法与get、post类似,这里就举些例子,不细说了。

  • 处理put请求的数据
 @PutMapping("/edit")
    public String edit(@RequestBody Poi poi){
        log.info("poi edit name = {} description = {}",poi.name,poi.description);
        return "this is edit";
    }
  • 处理delete请求的数据
  @DeleteMapping("/delete/{id}")
    public String delete(@PathVariable int id){
        log.info("poi delete id = {}",id);
        return "this is delete";
    }

结束

这就是本人入门Springboot第一天的一些理解,之后会继续更新day2、day3…
最后贴一句自己的座右铭:

让人迷茫的原因只有一个,那就是本该拼搏的年纪,却想的太多,做的太少。

继续加油!

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

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

相关文章

robot framework之第三方测试报告Allure

Allure 简单介绍 Allure是一个美化报告的工具。支持pytest, robot framework和junit等多种测试框架。 windows 安装allure 步骤1:gitlab 下载解压:https://github.com/allure-framework/allure2/releases 步骤2:进入bin目录, 点击allure.bat…

资深web前端开发工程师的工作职责表述(合集)

资深web前端开发工程师的工作职责表述1 职责 - 负责相关项目的web前端研发和优化工作 - 使用敏捷开发方法,完成产品或产品模块的设计和开发; - 按照编码规范编程,编制贯穿整个软件开发周期的文档资料; - 设计前端或后端架构,编写核心代码…

C语言字串函数、内存函数介绍以及模拟实现

目录 前言 本期内容介绍: 一、字符串函数 strlen介绍 strlen 模拟实现(三种方式) 方法一:计数器法 方法二:递归法(不创建临时变量法) 方法三:指针-指针 strcpy介绍 strcpy模…

国产单端口1000M以太网收发(PHY)芯片介绍

2023年将是国产以太网(Ethernet)传输芯片公司崛起之年,将涌现了一大批性能稳定,质量可靠的产品,国产网络传输芯片涵盖Ethernet PHY、Switch等中高端市场,如单(或多)端口千兆以太网PHY品牌&#…

小研究 - 主动式微服务细粒度弹性缩放算法研究(二)

微服务架构已成为云数据中心的基本服务架构。但目前关于微服务系统弹性缩放的研究大多是基于服务或实例级别的水平缩放,忽略了能够充分利用单台服务器资源的细粒度垂直缩放,从而导致资源浪费。为此,本文设计了主动式微服务细粒度弹性缩放算法…

msvcp100.dll丢失怎么修复,这三个常用的修复方法可以解决

msvcp100.dll是一个动态链接库文件,它是Microsoft Visual C Redistributable软件包的一部分。这个文件的作用是提供在运行C程序时所需的函数和功能。msvcp100.dll是一个非常重要的文件,它为我们提供了许多关键的函数和类,使得我们能够更高效地…

算法通关村第一关——链表经典问题之删除链表元素专题笔记

删除特定节点 题目描述 给你一个链表的头节点head和一个整数val,请你删除链表汇总所有满足Node.val val 的节点,并返回新的头节点 示例 输入: head [1,2,6,3,4,5,6] , val 6 输出:[1,2,3,4,5] 分析 在删除节点cur时&#xff…

网络编程 IO多路复用 [select版] (TCP网络聊天室)

//head.h 头文件 //TcpGrpSer.c 服务器端 //TcpGrpUsr.c 客户端 select函数 功能&#xff1a;阻塞函数&#xff0c;让内核去监测集合中的文件描述符是否准备就绪&#xff0c;若准备就绪则解除阻塞。 原型&#xff1a; #include <sys/select.…

前端试用期工作总结范文5篇

前端试用期工作总结 &#xff08;篇1&#xff09; 时间飞逝&#xff0c;转眼间&#xff0c;做为一名Web前端开发的正式员工已经有两个月之久。在这个难忘而又夸姣的 日子里&#xff0c;我深入体会到了公司的积极氛围和各个部门的巨大魅力&#xff0c;目睹了公司一步步走向成熟…

计算机中存储器的层次结构

现代的存储器体系结构是这样的&#xff1a; 越往上访问速度越快&#xff0c;更小&#xff0c;成本也越高。越往下访问速度越慢&#xff0c;更大&#xff0c;成本也越低。 在最高层&#xff08;L0&#xff09;是少量快速的CPU寄存器&#xff0c;CPU可以在一个时钟周期内访问他…

八股总结(八)SSM框架体系

文章目录 Spring基础1、Spring、SpringMVC、Mybatis与SpringBoot的区别2、Spring中常用的注解及作用 Spring IoC 、 DI、Bean3、Spring IoC是什么&#xff0c;有什么好处&#xff0c;Spring中是怎么实现的&#xff1f;4、Bean相关5、Component 和 Bean 的区别是什么&#xff1f…

基于RASC的keil电子时钟制作(瑞萨RA)(5)----驱动LED数码管

基于RASC的keil电子时钟制作5_驱动LED数码管 概述硬件准备视频教程数码管说明配置IO口数码管显示库smg.csmg.h主程序 概述 本篇文章主要介绍如何使用e2studio对瑞萨RA2E1开发板进行数码管的驱动。 硬件准备 首先需要准备一个开发板&#xff0c;这里我准备的是芯片型号R7FA2E…

管理能力提升 -《六顶思考帽》读后感

我们都听过“盲人摸象”的故事&#xff0c;每个盲人讲的都是自己的真实体验&#xff0c;都认为自己一定没错&#xff0c;但彼此争吵的很厉害。 这是一种传统思辨思维&#xff0c;它有两个特征&#xff1a; 判断和争论 &#xff1a;坚持我对&#xff0c;你错&#xff0c;从自己的…

ElasticSearch 7.x

前言 elastic表示可伸缩&#xff0c;search表示查询。所以es的核心即为查询。通常情况下&#xff0c;我们的数据可以分为三类&#xff1a;结构化数据、非结构化数据、半结构化数据。 结构化数据&#xff1a;一般会用特定的结构来组织和管理数据&#xff0c;表现为二维表结构。…

51单片机学习--按键控制流水灯模式定时器时钟

TMOD负责确定T0和T1的工作模式&#xff0c;TCON控制T0和T1的启动或停止计数&#xff0c;同时包含定时器状态 TF1&#xff1a;定时器1溢出标志 TF0&#xff1a;定时器0溢出标志 0~65535 每隔1微秒计数器1&#xff0c;总时间65535微秒&#xff0c;赋上初值64535&#xff0c;则只…

部署前端项目到服务器

声明:1.我演示使用的是华为云的服务器的Linux 系统2.通过宝塔部署项目3.项目是vue打包之后的4.其他服务器都差不多一样的配置 5.我是做前端的,下面教程只是个人操作,其他勿怪1.购买服务器 1.1:以下案例我使用的是华为云的服务器 购买服务器后,都有部署教程 有的人可能…

Tomcat 安装配置教程及成功后,启动失败报错解决方案

解决方案 我的报错原因是因为我的JDK是1.8的而我的Tomcat是10版本的&#xff0c;可能是因为版本原因吧&#xff0c;我重新装了Tomcat 9就可以启动成功了&#xff01; 简单说下安装的时候需要注意哪些步骤吧 今天我在安装tomcat10的时候&#xff0c;安装成功后&#xff0c;启…

Houdini查看参数能用的内置变量($符号开头的变量)

在某个参数上&#xff0c;右键&#xff0c;reference, local variable就能看到

什么是生成式人工智能及其工作原理?

什么是生成式人工智能&#xff1f; 生成式人工智能是一个令人兴奋的领域&#xff0c;它有可能彻底改变我们创建和消费内容的方式。它可以产生新的艺术、音乐&#xff0c;甚至是以前从未存在过的逼真的人脸。生成式人工智能最有前途的方面之一是它能够为各个行业创建独特的定制…

【雕爷学编程】MicroPython动手做(18)——掌控板之声光传感器3

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…