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

news2024/12/23 18:14:14

博主主页: 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;
    }
    @Override
    public 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.coloradmin.cn/o/2255709.html

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

相关文章

银行项目网上支付接口调用测试实例

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 公司最近有一个网站商城项目要开始开发了&#xff0c;这几天老板和几个同事一起开着需求会议&#xff0c;讨论了接下来的业务规划和需求策略&#xff0c;等技术需求…

手机LCD分区刷新技术介绍

分区刷新也称为分区变频&#xff0c;LCD分区刷新功能的目的是将屏幕分为上下半区&#xff0c;分区显示不同帧率&#xff0c;上方区块High Frame Rate&#xff0c;下方区块Low Frame Rate。使用者可以动态自定义上方高刷显示区的结尾位置。 当前的智能手机屏幕上&#xff0c;显示…

TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面

前言 前篇文章使用Tesseract进行图片文字识别介绍了如何安装TesseractOCR与TesseractOCR的命令行使用。但在日常使用过程中&#xff0c;命令行使用还是不太方便的&#xff0c;因此今天介绍一下如何使用WPF/C#构建TesseractOCR简单易用的用户界面。 普通用户使用 参照上一篇教…

flask创建templates目录存放html文件

首先&#xff0c;创建flask项目&#xff0c;在pycharm中File --> New Project&#xff0c;选择Flask项目。 然后&#xff0c;在某一目录下&#xff0c;新建名为templates的文件夹&#xff0c;这时会是一个普通的文件夹。 然后右击templates文件夹&#xff0c;选择Unmark as …

python编程Day12-属性和方法的分类

私有和公有 在python中 定义类的时候&#xff0c;可以给 属性和方法设置 访问权限&#xff0c;即规定在什么地方可以使用。 权限一般分为两种&#xff1a;公有权限、私有权限 公有权限 定义&#xff1a;直接定义的属性和方法就是公有的特点&#xff1a; 可以在任何地方访问和使…

Moving Tables

任务内容 Description The famous ACM (Advanced Computer Maker) Company has rented a floor of a building whose shape is in the following figure. The floor has 200 rooms each on the north side and south side along the corridor. Recently the Company made a pla…

小程序 - 美食列表

小程序交互练习 - 美食列表小程序开发笔记 目录 美食列表 功能描述 准备工作 创建项目 配置页面 配置导航栏 启动本地服务器 页面初始数据 设置获取美食数据 设置onload函数 设置项目配置 页面渲染 页面样式 处理电话格式 创建处理电话格式脚本 页面引入脚本 …

Facebook广告文案流量秘诀

Facebook 广告文案是制作有效 Facebook 广告的关键方面。它侧重于伴随广告视觉元素的文本内容。今天我们的博客将深入探讨成功的 Facebook 广告文案的秘密&#xff01; 一、广告文案怎么写&#xff1f; 正文&#xff1a;这是帖子的正文&#xff0c;出现在您姓名的正下方。它可…

TEXT2SQL工具vanna本地化安装和应用

TEXT2SQL工具vanna本地化安装和应用 Vanna和Text2SQL环境安装和数据准备 conda虚拟环境安装数据准备ollama环境准备 ollama安装和运行ollama下载模型测试下API方式正常使用 chromaDB的默认的embedding模型准备 vanna脚本跑起来 Vanna和Text2SQL TEXT2SQL即文本转SQL&#xf…

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

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

操作系统——I/O系统

笔记内容及图片整理自XJTUSE “操作系统” 课程ppt&#xff0c;仅供学习交流使用&#xff0c;谢谢。 概述 计算机的两个主要工作是I/O和处理。I/O系统的目标是提高设备利用率&#xff0c;尽量提高CPU与I/O设备间的并行工作程度&#xff0c;I/O主要技术包括中断技术、DMA技术、…

【 工具变量】IPCC碳排放因子数据测算表

一、数据简介&#xff1a; 排放因子法是IPCC提出的一种碳排放估算方法&#xff0c;也是目前适用范围最广、应用最为普遍的方法。将各类能源消耗的实物统计量转变为标准统计量&#xff0c;再乘以各自的碳排放因子&#xff0c;加总之后就可以得到碳排放总量。如果按照ISO14064标…

无插件直播流媒体音视频播放器EasyPlayer.js播放器的g711系列的音频,听起来为什么都是杂音

在数字化时代&#xff0c;流媒体播放器已成为信息传播和娱乐消遣的重要工具。随着技术的进步&#xff0c;流媒体播放器的核心技术和发展趋势不断演变&#xff0c;以满足用户对于无缝播放、低延迟和高画质的需求。 EasyPlayer播放器属于一款高效、精炼、稳定且免费的流媒体播放…

63 基于单片机的四个速度比较

所有仿真详情导航&#xff1a; PROTEUS专栏说明-CSDN博客 目录 一、主要功能 二、硬件资源 三、主程序编程 四、资源下载 一、主要功能 基于51单片机&#xff0c;采用四个滑动变阻器连接数模转换器模拟四个速度值&#xff0c;通过LCD1602显示&#xff0c;然后检测出最高的…

4.模块化技术之子程序

总学习目录请点击下面连接 SAP ABAP开发从0到入职&#xff0c;冷冬备战-CSDN博客 目录 ​编辑 1.模块化基础和概述 使用模块化有什么好处 两大类模块化技术 程序局部的模块化 SAP系统内全局模块化 封装有什么好处&#xff1f; 2.子程序模块化 三种传递类型 子程序结构…

利用Python实现子域名简单收集

免责申明 本文仅是用于学习研究子域名信息收集&#xff0c;请勿用在非法途径上&#xff0c;若将其用于非法目的&#xff0c;所造成的一切后果由您自行承担&#xff0c;产生的一切风险和后果与笔者无关&#xff1b;本文开始前请认真详细学习《‌中华人民共和国网络安全法》【学法…

k8s,进一步理解Pod

比如&#xff0c;凡是调度、网络、存储&#xff0c;以及安全相关的属性&#xff0c;基本上是Pod 级别的。 这些属性的共同特征是&#xff0c;它们描述的是“机器”这个整体&#xff0c;而不是里面运行的“程序”。比如&#xff0c;配置这个“机器”的网卡&#xff08;即&#…

Unity 使用LineRenderer制作模拟2d绳子

效果展示&#xff1a; 实现如下&#xff1a; 首先&#xff0c;直接上代码&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine;public class LineFourRender : MonoBehaviour {public Transform StartNode;public Transform MidNod…

博物馆导览系统方案(一)背景需求分析与核心技术实现

维小帮提供多个场所的室内外导航导览方案&#xff0c;如需获取博物馆导览系统解决方案可前往文章最下方获取&#xff0c;如有项目合作及技术交流欢迎私信我们哦~撒花&#xff01; 一、博物馆导览系统的背景与市场需求 在数字化转型的浪潮中&#xff0c;博物馆作为文化传承和知…

14.在 Vue 3 中使用 OpenLayers 自定义地图版权信息

在 WebGIS 开发中&#xff0c;默认的地图服务通常会带有版权信息&#xff0c;但有时候我们需要根据项目需求自定义版权信息或添加额外的版权声明。在本文中&#xff0c;我们将基于 Vue 3 的 Composition API 和 OpenLayers&#xff0c;完成自定义地图版权信息的实现。 最终效果…