【JavaEE 进阶(一)】SpringBoot(上)

博主主页: 33的博客
文章专栏分类:JavaEE
??我的代码仓库: 33的代码仓库??
???关注我带你了解更多进阶知识

在这里插入图片描述

目录
  • 1.前言
  • 2.Spring
  • 3.第一个SpringBoot程序
  • 4.Spring MVC
    • 4.1建立连接
      • 4.1.1@RequestMapping使用
    • 4.2请求
      • 4.2.1传递单个参数
      • 4.2.2传递多个参数
      • 4.2.3传递一个对象
      • 4.2.4参数重命名
      • 4.2.5数组传参
      • 4.2.6接收集合
      • 4.2.7接收json
      • 4.2.8从路径中获取参数
      • 4.2.9上传文件
      • 4.3Cookie与Session
      • 4.3.1获取Cookie
      • 4.3.2获取Session
      • 4.3.3获取header
  • 5.总结

1.前言

如今,网站开发是非常留下的技术,接下来我们就对网站开发进行深入学习,Spring官提供了很多开源的项,覆盖范围从Web开发到数据,Spring发展到了今天,已经形成了的态圈.我们在开发时,也倾向于使Spring官提供的技术,来解决对应的问题而Spring Boot是一个构建基于Spring框架的应用程序的工具,它可以简化Spring应用程序的开发和部署过程。Spring Boot利用自动配置和快速启动特性,使得开发者可以快速地创建独立的、生产级别的Spring应用程序,所以我们现在主要基于Spring boot框架来进行开发。

2.Spring

在学习SpringBoot前,我们先认识以下Spring,Spring让每个人编写Java程序更快、更简单、更安全。Spring专注于速度、简约和生产力,使其成为全球最受欢迎的Java框架-这是Spring官方的描述:
在这里插入图片描述
上述谈到了一个词,JAVA框架,那么什么是java框架呢?通俗的讲框架是实现某些功能的半成品,它提供了一些常用的工具类,我们在框架的基础上,可以更高效的进行开发。
Spring官方提供了很多开源的项目覆盖范围从web到大数据,Spring发展到如今已经形成了自己的生态圈,我们在开发时也更倾向于spring官方提供的技术来进行开发。
在这里插入图片描述
这些都是基于Spring Framework开发的,但它存在的配置很多,入门难,Spring也意识到了这个问题,所以为了简化开发者的使用推出了SpringBoot。简单来说SpringBoot的诞生就是为了简化Spring 程序开发的。

3.第一个SpringBoot程序

目前我的IDEAL专业版还在申请中,暂时用社区版和大家演示:
创建SpringBoot可以在官网创建:https://start.spring.io/
当我们创建号一个SpringBoot项目以后,可能会遇到一个常见的问题,就是端口号被占用
在这里插入图片描述
那么我们如何解决呢?
方法一
打开cmd查找哪个程序在使用8080端口,再根据PID在任务管理器中关闭,也可以直接在cmd中输入指令直接关闭,但是我总是关闭失败,所以我一般在任务管理器中关。
cmd命令:

netstat -ano|findstr 8080//查找哪个进程在使用8080端口
taskkill /pid PID号 -f

方法二:修改该进程的端口号
在这里插入图片描述
接下来我们就可以写第一个hello Spring了!!!

@RestController
public class HelloController {@RequestMapping("/hello")public String hello(){return "hello,my dear Spring";}
}

tomcat 是一个web服务器,默认端口为8080
在这里插入图片描述
在这里插入图片描述

4.Spring MVC

Spring MVC是Spring Boot中的常用模块,用于构建web应用程序,用Spring Boot创建Web应用程序时,通常会使用Spring MVC来处理HTTP请求和响应。

4.1建立连接

在Spring MVC中使用@RequestMapping来实现浏览器连接程序的作用,它是用来注册接口路由映射的,表示当服务器收到请求时,路径为/hello的请求就会调用hello这个方法的代码。
那么既然@RequestMapping已经建立了连接,我们为什么要使用@RestController,其实在一个项目中,往往会有多个类,那么当我们调用某一个方法时,它怎么知道我们调用的是哪一个类中的方法呢?如果类加了注解@RestController,spring才回去看方法中加了@RequestMapping注解的,当然它的作用并不只是这点,后面再介绍。

4.1.1@RequestMapping使用

@RequestMapping既可以修饰类也可以修饰方法,当修饰类和方法的时候访问路径是:类路径+方法路径
在这里插入图片描述
@RequestMapping既支持post请求也支持get请求

4.2请求

4.2.1传递单个参数
@RestController
@RequestMapping("/d1")
public class HelloController {@RequestMapping("/hello")public String hello(Integer age){return "age: "+age;}
}

在这里插入图片描述
url中查询字符串的参数要和我们所定义的方法的参数相同。

4.2.2传递多个参数
@RestController
@RequestMapping("/d1")
public class HelloController {@RequestMapping("/hello")public String hello(int age,String name){return "age: "+age+"name: "+name;}
}

在这里插入图片描述
如果我们又有多个参数的话,那么每次都会去对方法进行修改,那么有什么方法不用反复求修改吗?那就是传递对象。

4.2.3传递一个对象

先建立一个类:

package com.example.demo;
public class Student {private Integer age;private String name;private String like;public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getLike() {return like;}public void setLike(String like) {this.like = like;}@Overridepublic String toString() {return "Student{" +"age=" + age +", name='" + name + ''' +", like='" + like + ''' +'}';}
}@RequestMapping("/r3")public Student r3(Student student){return student;}

在这里插入图片描述

4.2.4参数重命名
 @RequestMapping("/r4")//重命名 like,并设置参数非必传public String r4(@RequestParam(value="like",required=false) String LIKE){return "爱好:"+LIKE;}

在这里插入图片描述

4.2.5数组传参
@RequestMapping("/R3")public String R3(String[] array){return "接到参数, array:"+ Arrays.toString(array);}

在这里插入图片描述

4.2.6接收集合
 @RequestMapping("/R4")public String R4(@RequestParam(required = false) List<String> list){return "接到参数, list:"+ list;}

在这里插入图片描述

4.2.7接收json
@RequestMapping("/R5")public String r8(@RequestBody Student student){return "接到参数, student:"+ student.toString();}

在这里插入图片描述

4.2.8从路径中获取参数
 @RequestMapping("/r9/{name}/{age}/")public String r12(@PathVariable("name") String name, @PathVariable("age") String age){return "name:"+articleId+",age"+name;}

在这里插入图片描述

4.2.9上传文件
@RequestMapping("/r2")public String R2(@RequestPart("file") MultipartFile file){String name=file.getOriginalFilename();return "上传成功"+name;}

在这里插入图片描述

4.3Cookie与Session

Session:会话的意思,会话是个客与服务器之间的不中断的请求响应.对客的每个请求,服务器能够识别出请求来于同个客.当个未知的客向Web应程序发送第个请求时就开始了个会话.当客明确结束会话或服务器在个时限内没有接受到客的任何请求时,会话就结束了。Session的本质就是个"哈希表",存储了些键值对结构.Key就是SessionID,Value就是用户信息(信息可以根据需求灵活设计).

Cookie:是一种在客户端(通常是浏览器)和服务器之间交换信息的机制。当用户访问网站时,服务器会在用户的计算机上存储一个小型文本文件,其中包含有关用户的信息,登录状态、登陆时间等。
Http本身是一个无状态的协议,但是在实际开发中,我们很多时候就需要知道请求之间的联系,例如之前有没有登陆某个界面,这个时候就可以通过cookie来记录,当用户登录的时候,服务器在Session中会新增一个记录,并把SessionID返回给客户端(通过http中的set-cookie字段返回);客户端后续再向服务器发送请求时会携带SessionID(通过cookie字段携带);服务器收到请求后会根据SessionID获取到用户的对应信息,再进行后续操作,如果找不到SessionID就重新创造一个Session并把SessionID返回给客户端。
上述的Seeion。

Cookie与Session区别

Cookie是客端保存信息的种机制.Session是服务器端保存信息的种机制
Cookie和Session之间主要是通过_SessionId_关联起来的,SessionIdCookie和Session之间的桥梁
Cookie和Session经常会在起配合使.但是不是必须配合 ,完全可以Cookie来保存些数据在客端.这些数据不定是份信息,也不定是SessionId
Session中的sessionId也不需要得通过Cookie/Set-Cookie传递,如通过URL传递

4.3.1获取Cookie
 @RequestMapping("/getCookie")public String getCookie2(@CookieValue("NAME") String name{return "从Cookie中获取值, NAME:"+name;}

在这里插入图片描述

4.3.2获取Session
@RequestMapping("/r3")public String getS(HttpSession session){session.setAttribute("name","张三");String name = (String) session.getAttribute("name");return "session获取成功"+name;}

在这里插入图片描述

4.3.3获取header
public String getHeader2(@RequestHeader("User-Agent") String userAgent){
//        String userAgent = request.getHeader("User-Agent");return "从header中获取信息, userAgent:"+userAgent;}

5.总结

本篇文章主要介绍了第一个SpringBoot程序,与客户端建立连接,@RequestMapping使用,关于请求传参如传递单个参数,传递多个参数,传递一个对象,参数重命名等等,以及Cookie与Session的介绍,在下篇文章中,博主讲继续介绍响应部分,并和大家分析几个小项目。

下期预告:SpringBoot(下)

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

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

相关文章

(未更新完)day30-IO-阶段综合案例(带权重的随机每日一记)(笔记完全来源于黑马程序员)

目录 0 目录一、听黑马阿玮的视频记录的笔记1. 制造假数据1.1 如何制造假数据1.2 练习1-生成方式1&#xff1a;爬取姓氏、男生名字、女生名字1.3 练习2-生成方式1&#xff1a;在练习1的基础上&#xff0c;将数据写入本地文件1.4 练习3-生成方式2&#xff1a;利用糊涂包生成假数…

FPGA中所有tile介绍

FPGA中包含的tile类型&#xff0c;以xinlinx 7k为例&#xff0c;可以通过f4pga项目中的原语文件夹查看&#xff0c;主要包含以下这些&#xff1a; 以下是您提到的 Xilinx 7 系列 FPGA 中各种模块的含义及用途&#xff1a; 1. BRAM (Block RAM) BRAM 是 FPGA 中的块存储资源&…

如何解决压测过程中JMeter堆内存溢出问题

如何解决压测过程中JMeter堆内存溢出问题 背景一、为什么会堆内存溢出&#xff1f;二、解决堆内存溢出措施三、堆内存参数应该怎么调整&#xff1f;四、堆内存大小配置建议 背景 Windows环境下使用JMeter压测运行一段时间后&#xff0c;JMeter日志窗口报错“java.lang.OutOfMe…

嵌入式蓝桥杯学习4 lcd移植

cubemx配置 复制前面配置过的文件 打开cubemx&#xff0c;将PB8,PB9配置为GPIO-Output。 点击GENERATE CODE. 文件移植 1.打开比赛提供的文件包&#xff0c;点击Inc文件夹 2.点击Inc文件夹。复制fonts.h和lcd.h&#xff0c;粘贴到我们自己的工程文件夹的bsp中&#xff08…

学习记录,正则表达式, 隐式转换

正则表达式 \\&#xff1a;表示正则表达式 W: 表示一个非字&#xff08;不是一个字&#xff0c;例如&#xff1a;空格&#xff0c;逗号&#xff0c;句号&#xff09; W: 多个非字 基本组成部分 1.字符字面量&#xff1a; 普通字符&#xff1a;在正则表达式中&#xff0c;大…

标书里的“废标雷区”:你踩过几个?

在投标领域&#xff0c;标书的质量不仅决定了中标的可能性&#xff0c;更是体现企业专业度的关键。但即便是经验丰富的投标人&#xff0c;也难免会在标书编制过程中踩中“废标雷区”。这些雷区可能隐藏在技术方案的细节中&#xff0c;也可能是投标文件格式的规范问题。以下&…

k8s-编写CSI插件(3)

1、概述 在 Kubernetes 中&#xff0c;存储插件的开发主要有以下几种方式&#xff1a; CSI插件&#xff1a;Container Storage Interface (CSI) 是 Kubernetes 的标准插件接口&#xff0c;是全新的插件方案&#xff0c;插件和驱动调用通过grpc协议&#xff0c;功能丰富&#x…

R语言机器学习论文(三):特征提取

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据一、数据归一化二、离散型分类变量的编码三、筛选特征四、重要特征五、输出结果六、总结系统信息介绍 在数据分析和机器学习项目中,经常需要对数据进行预…

用 NotePad++ 运行 Java 程序

安装包 网盘链接 下载得到的安装包: 安装步骤 双击安装包开始安装. 安装完成: 配置编码 用 NotePad 写 Java 程序时, 需要设置编码. 在 设置, 首选项, 新建 中进行设置, 可以对每一个新建的文件起作用. 之前写的文件不起作用. 在文件名处右键, 可以快速打开 CMD 窗口, 且路…

Leetcode打卡:骑士在棋盘上的概率

执行结果&#xff1a;通过 题目&#xff1a;骑士在棋盘上的概率 在一个 n x n 的国际象棋棋盘上&#xff0c;一个骑士从单元格 (row, column) 开始&#xff0c;并尝试进行 k 次移动。行和列是 从 0 开始 的&#xff0c;所以左上单元格是 (0,0) &#xff0c;右下单元格是 (n - …

[Java]项目入门

这篇简单介绍一些入门的有关项目和行业的知识&#xff0c;并带着实现一个小项目。便于已经编程入门的各位准备进阶到下一个阶段。 先大致地介绍&#xff0c;一个完整的项目(不看客户端、服务端的分类)基本可以划分为三部分&#xff1a; 1.前端。比如你现在看到的CSDN页面就是一…

全连接层与链式求导法则在神经网络中的应用

目录 ​编辑 引言 全连接层的工作原理 前向传播 反向传播 链式求导法则及其在神经网络中的应用 链式求导法则 应用于全连接层 计算梯度 结论 引言 在深度学习领域&#xff0c;全连接层&#xff08;Fully Connected Layer&#xff0c;FC&#xff09;和链式求导法则是…

泷羽Sec-星河飞雪-bp抓APP包的相关配置方法

免责声明 学习视频来自 B 站up主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下代码、网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 泷羽sec官网&#xff1a;http…

00. Nginx-知识网络

知识目录 语雀知识网络&#xff0c;点击“”-- 点击“”查看知识网络 01. Nginx-基础知识 02. Nginx-虚拟主机 03. Nginx-Web模块 04. Nginx-访问控制 05. Nginx-代理服务 06. Nginx-负载均衡 07. Nginx-动静分离 08. Nginx-平滑升级 09. Nginx-日志切割 10. Nginx-…

【Springboot3+vue3】从零到一搭建Springboot3+vue3前后端分离项目之后端环境搭建

【Springboot3vue3】从零到一搭建Springboot3vue3前后端分离项目&#xff0c;整合knef4j和mybaits实现基础用户信息管理 后端环境搭建1.1 环境准备1.2 数据库表准备1.3 SpringBoot3项目创建1.4 MySql环境整合&#xff0c;使用druid连接池1.5 整合mybatis-plus1.5.1 引入mybatie…

【大数据技术基础】 课程 第3章 Hadoop的安装和使用 大数据基础编程、实验和案例教程(第2版)

第3章 Hadoop的安装和使用 3.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台&#xff0c;为用户提供了系统底层细节透明的分布式基础架构。Hadoop是基于Java语言开发的&#xff0c;具有很好的跨平台特性&#xff0c;并且可以部署在廉价的计算机集群中。H…

【Elasticsearch】ES+MySQL实现迷糊搜索

1. 技术选型 使用 Elasticsearch (ES) 结合 MySQL 进行数据存储和查询&#xff0c;而不是直接从 MySQL 中进行查询&#xff0c;主要是为了弥补传统关系型数据库&#xff08;如 MySQL&#xff09;在处理大规模、高并发和复杂搜索查询时的性能瓶颈。具体来说&#xff0c;ES 与 My…

Tomcat 的使用(图文教学)

Tomcat 的使用&#xff08;图文教学&#xff09; 前言一、什么是Tomcat&#xff1f;二、Tomcat 服务器和 Servlet 版本的对应关系三、Tomcat 的使用 1、安装2、目录介绍3、如何启动4、Tomcat 的停止5、如何修改 Tomcat 的端口号6、如何部暑 web 工程到 Tomcat 中 6.1 方式一6.…

Altium Designer学习笔记 31 PCB布线优化_GND处理

基于Altium Designer 23学习版&#xff0c;四层板智能小车PCB 更多AD学习笔记&#xff1a;Altium Designer学习笔记 1-5 工程创建_元件库创建Altium Designer学习笔记 6-10 异性元件库创建_原理图绘制Altium Designer学习笔记 11-15 原理图的封装 编译 检查 _PCB封装库的创建Al…

前端知识1html

VScode一些快捷键 Ctrl/——注释 !——生成html框架元素 *n——生成n个标签 直接书写html的名字回车生成对应的标签 常见标签 span&#xff1a; <span style"color: red;">hello</span> <span>demo</span> span实现&#xff1a; 标题…