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

这篇具有很好参考价值的文章主要介绍了【Java】零基础上手SpringBoot学习日记(day1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

Web应用开发

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

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

SpringBoot简介

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

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

编写依赖

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

【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习

在我仔细了解了一些开发流程之后,我发现并不是就不需要配置依赖了;后续有新的需求的时候,初始化时配置的依赖明显不够用,所以仍需要在项目中编写依赖,具体是在项目目录生成之后的pom.xml文件中配置。
【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习
方框框起来的内容是我了解下来比较重要的东西,初始化勾选的javaweb就是 第一个dependency标签中的东西,每个dependency标签中都有子标签 表示该依赖的关键信息 如version(版本) groupid 名称等等。

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

程序入口

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

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

这是一个注解,它的作用就是能够让下方的代码块具备某些特定的功能,显然这个注解的功能就是把下方的类变成服务器的主入口。【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习

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

【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习

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

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

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

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

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

【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习

该程序如下:

@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” 该返回值会渲染到页面上去。

【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习

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

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

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

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

【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习
这种参数传递的格式为:?key1=value1&key2&value2

  • 另一种是以路径的形式传递数据
    【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习

这种方式一般在请求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发出这个请求:
【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习
可以看到成功响应了this is list 字样,在控制台中也可以看到这两个参数的值:

【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习

  • 如果想要处理这种形式的请求 拿到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发起这样的请求:
【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习

可以看到控制台也成功输出了参数id为123:
【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习

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发起请求
【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习

可以看到页面中响应了this is detail ,并且控制台内也输出了json中的数据:
【Java】零基础上手SpringBoot学习日记(day1),后端,java,spring boot,学习

其他请求的参数处理

除了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…
最后贴一句自己的座右铭:

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

继续加油!文章来源地址https://www.toymoban.com/news/detail-620251.html

到了这里,关于【Java】零基础上手SpringBoot学习日记(day1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • day1 QT 入门与基础控件

    qt下载方法:https://www.yuque.com/uh1h8r/dqrma0/ 目录 界面框架 种类 特点: 1、QWidget 2、QDialog 3、QMainWindow 布局管理器 输入输出控件 QWidget、QDialog、QMainWindow 1、QWidget QWidget是Qt中所有用户界面控件的 基类 。 它表示一个 矩形的窗口区域 ,可以 包含其他的子控件 。 继承自QWidget的控

    2024年02月11日
    浏览(39)
  • UWB学习——day1

    UWB:Ultra Wideband(超宽频) UWB所谓的超宽频区别于其它近场通信技术可总结为 时域上跳跃,频域上矮胖 从图中可以看出,时域上通过短且强的脉冲信号,频域上主要是超宽的频谱(Spectrum) 调制(Modulation):把信号进行编码使其方便传播的过程 PPM 通过在 固定时间范围 内改

    2024年02月09日
    浏览(43)
  • Datawhale 大模型基础理论 Day1 引言

    开源链接如下:https://github.com/datawhalechina/so-large-lm/blob/main/docs/content/ch01.md 语言模型的概念:即能够赋予每个有意义的词(token)以一定的概率的一个函数的集合。 语言模型可以被用来评估输入的质量,也可以根据prompt生成对应的内容(作画、描述、回答等) 温度,可以控制

    2024年01月16日
    浏览(35)
  • Nodejs前端学习Day1

    妈的,这几天真tm冷,前天上午还下了一整天的雪,大雪 妈的,昨天没学,上午练车去了,下午就当了一下午废物,操,真是个废物。 现在官网的描述: 学习视频中的描述(旧版本): 如果我们写了一段js放到浏览器中运行则证明在做前端开发 如果我们写了一段js放到node

    2024年01月25日
    浏览(42)
  • 前端学习——ajax (Day1)

    axios 使用 练习 练习 案例 axios 错误处理 https://apifox.com/apidoc/shared-1b0dd84f-faa8-435d-b355-5a8a329e34a8 url好像失效了

    2024年02月16日
    浏览(39)
  • 网络安全day1-基础入门概念名词 超详细!!!

    目录 一、域名 1.域名概念: 2.二级域名和多级域名:​编辑 3.域名对安全测试的意义: 二、DNS 1.域名系统 2.本地Hosts与DNS的关系 3.CDN概念以及和DNS的关系: 4.常见的DNS安全攻击 三、脚本语言  四、后门 1.什么是后门?有哪些后门? 2.后门在安全测试中的实际意义? 3.关于后门需

    2024年02月07日
    浏览(51)
  • 【剑指offer】学习计划day1

    目录 一. 前言  二. 用两个栈实现队列         a.题目          b.题解分析           c.AC代码   二. 包含min函数的栈          a.题目          b.题解分析         c.AC代码   本系列是针对Leetcode中剑指offer学习计划的记录与思路讲解。详情查看以下链接: 剑指offer-学

    2023年04月24日
    浏览(44)
  • 前端学习——JS进阶 (Day1)

    局部作用域 全局作用域 作用域链 JS垃圾回收机制 闭包 变量提升 函数提升 函数参数 动态参数 剩余参数 展开运算符 箭头函数(重要) 基本写法 箭头函数参数 箭头函数 this 数组解构 练习 数组解构 对象解构 多级对象解构 for each 案例 筛选

    2024年02月16日
    浏览(38)
  • 数据结构与算法学习(day1)

    (1)我是一个大三的学生(准确来说应该是准大三,因为明天才报名哈哈哈)。 (2)最近就想每天闲着没事也刷些C语言习题来锻炼下编程水平,也一直在思考企业对应届大学生能力的要求,所以经常会想到关于面试的事情。由于我也没实习过,所以我对面试没有一个具象化

    2024年02月10日
    浏览(53)
  • freertos内核原理学习 Day1(链表)

    目录 1.freertos列表与列表操作 1.1链表各节点定义(头文件list.h中) 1.1.1普通节点定义 1.1.2mini节点定义 1.1.3根节点定义 1.2链表操作(源文件list.c中) 1.2.1链表节点初始化  1.2.2链表根节点初始化   1.2.3插入节点到链表尾部   1.2.4将节点按“升序”排列后插入到链表中   1.2.

    2024年01月23日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包