Springboot项目实训--day1

news2025/5/21 9:26:28

目录

一、软件安装

二、软件的简单了解

三、基础知识应用

1、四个常用注释

2、尝试新建类

3、控制反转(IOC容器)

4、返回数据给浏览器

5、浏览器传回数据给服务器

易错点


一、软件安装

        需要安装的软件是idea专业版,刚使用的时候可以使用30天,后面可以找方法去破解。

安装的步骤很多博主都讲过,这里就不再重复了。

IntelliJ IDEA 下载安装及配置使用超详细图文教程_idea下载安装配置教程-CSDN博客

二、软件的简单了解

在新建项目的时候,首先需要找到setting修改settings.xml这个文件的,默认路径在C盘,这里老师发了个文件,修改之后我放到了D:\moven_repository这个路径下,文件在上方显示。

该文件需要修改的内容如下:

然后修改setting中的:

修改完成之后,

三、基础知识应用

1、四个常用注释

@RestController //用在类上面的,要求类在浏览器访问就用这个

@RequestMapping //在后面添加一个字符串,用作路径的前缀,从而使得路径不易重复

@Autowired //对象类型,自动装配

@Value //简单类型赋值

以下是对这四个注解(注释)的简单解释(来自文心一言):

  1. @RestController: 这是一个特殊的@Controller注解,用于表明该类是一个RESTful Web服务的控制器。它告诉Spring框架,此类中的方法返回的是领域对象,而不是视图,通常这些对象会被自动转换为JSON或XML格式的响应。
  2. @RequestMapping: 用于映射web请求(如HTTP GET, POST等)到特定的处理器函数、方法或类。你可以使用它来定义URL模式、HTTP方法、请求参数等。
  3. @Autowired: 这是Spring框架提供的依赖注入注解。它告诉Spring自动装配bean的依赖关系。当Spring发现@Autowired注解时,它会在应用上下文中查找一个匹配的bean,并将其注入到被注解的字段、构造函数或方法中。
  4. @Value: 用于注入值(如配置文件中的属性)到字段、方法参数或方法返回值。你可以使用它来读取如.properties.yml等配置文件中的属性值,并将其注入到Spring管理的bean中。

注意:@RequestMapping通常与@GetMapping@PostMapping等一起使用,或者直接放在方法上来定义具体的请求映射。而在类上使用@RequestMapping时,它通常用于为该类下的所有方法提供一个共同的路径前缀。

2、尝试新建类

新建类的时候,在命名时写test.demo1表示新建一个包test,然后在这个包下新建一个.java文件:

使用这种方法就不用专门去新建包,然后再写文件了。

新建完成之后,就可以在这个里面进行Java代码的编写了。

首先使用两个注释进行一个最简单的代码编写,编写之后再浏览器显示返回值:

@RestController//有该注解,就可以让下面的类在浏览器访问
public class demo1 {

    @RequestMapping("/helloYa") //这里指定路径,自己定义就好
    public String hello(){
        return "hello Ya";//会将这个返回到浏览器中
    }
}

然后在地址栏中输入

localhost:8080/helloYa  //默认端口8080,这里可能会有端口冲突,这里就需要解决一下端口冲突的问题

端口冲突的解决查看这篇文章(侵权联系删除):

WIN10 关闭占用某一端口号的进程_win10如何关闭指定端口的程序-CSDN博客

最终成功解决冲突之后,显示如下:

上面是直接在新建的类中进行操作,也可以引用其他的类,比如在这里我们新建一个Student类,并添加相应的方法和属性:

package com.example.demo1.test;


public class student {
    private int id;
    private String name;
    private int age;

    public String test(){
        System.out.println("加油!");
        return "";
    }
//    public int getId() {
//        return id;
//    }
    public void setId(int id) {
        this.id = id;
    }
    public void setName(String name){
        this.name=name;
    }
    public void setage(int age){
        this.age=age;
    }

}

在demo1中使用@Autowired进行对象类型的自动匹配时,必须要先在所要引用的类中使用@Component注解。

@Component //泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注,标识为一个Bean。 

 注解之后,就进行@Autowired和@Value两个注解的使用

package com.example.demo1.test;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class demo1 {
    
    @Autowired
    private student student;

    @Value("QSJ")
    private String name;

    @RequestMapping("/helloYa") //这里指定路径
    public String hello(){
        System.out.println(name);
        student.test();
        return "hello Ya";//会将这个返回到浏览器中
    }
}

在服务器的控制台显示:

在浏览器中显示:

 上面简单使用了一下@Autowired和@Value两个注解,下面学习如何将服务器中写的数据传给浏览器。

3、控制反转(IOC容器)

        在之前使用student类的时候需要自己new一个相应的对象,但是Spring会自动new一个对象,然后放到它的容器中,使用的时候直接用就可以了。

4、返回数据给浏览器

        引用student对象,将该对象的某个值或者多个值从浏览器输出。

(1)显示某个值

    @RequestMapping("/get1")
    public student get1(){
        student stu = new student();
        stu.setId(1997);
        stu.setName("QSJ");
        stu.setage(24);
        return stu;
    }

 上面的这串代码没有错,错误的是student类的错误,需要添加上所有属性的get函数:

package com.example.demo1.test;


import org.springframework.stereotype.Component;

@Component
public class student {
    private int id;
    private String name;
    private int age;

    public String test(){
        System.out.println("加油!");
        return "";
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name){
        this.name=name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age){
        this.age=age;
    }

}

最终显示结果如下:

 

(2)显示多个值

使用List容器和ArrayList容器:

@RequestMapping("getAll1")
    public List<student> getAll(){
        student stu1 = new student();
        stu1.setId(1997);
        stu1.setName("QSJ1");
        stu1.setAge(24);

        student stu2 = new student();
        stu2.setId(1998);
        stu2.setName("QSJ2");
        stu2.setAge(25);

        student stu3 = new student();
        stu3.setId(1999);
        stu3.setName("QSJ3");
        stu3.setAge(26);

        List<student> list1 = new ArrayList<student>();
        list1.add(stu1);
        list1.add(stu2);
        list1.add(stu3);

        return list1;
    }

最终显示结果:

 

5、浏览器传回数据给服务器

忘记咋传的了。。。。

出错:

易错点

  1. 注解的首字母都是大写的,写了之后回车可以自动引用相应的包,若拼写错误或者没有引用包会出错;
  2. 虽然在定义类的时候,get相关的函数不会显示被应用,但是在set相关的函数中使用了this,所以get函数还是需要写的,否则在传给浏览器的时候不会显示任何内容;
  3. 再修改代码之后,需要重新运行代码才会在正确的情况下显示相应的内容;

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

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

相关文章

基于SpringBoot+Vue的论坛网站系统(带1w+文档)

基于SpringBootVue的论坛网站系统(带1w文档) 对于之前论坛网站的管理&#xff0c;大部分都是使用传统的人工方式去管理&#xff0c;这样导致了管理效率低下、出错频率高。而且&#xff0c;时间一长的话&#xff0c;积累下来的数据信息不容易保存&#xff0c;对于查询、更新还有…

如何给WPS、Word、PPT等办公三件套添加收费字体---方正仿宋GBK

1.先下载需要的字体。 下载字体的网站比较多&#xff0c;基本上都是免费的。随便在网上搜索一个就可以了&#xff0c;下面是下载的链接。 方正仿宋GBK字体免费下载和在线预览-字体天下 ​www.fonts.net.cn/font-31602268591.html 注意&#xff1a;切记不要商用&#xff0c;以免…

昇思25天学习打卡营第10天|基于MindSpore的GPT2文本摘要

学AI还能赢奖品&#xff1f;每天30分钟&#xff0c;25天打通AI任督二脉 (qq.com) 基于MindSpore的GPT2文本摘要 %%capture captured_output # 实验环境已经预装了mindspore2.2.14&#xff0c;如需更换mindspore版本&#xff0c;可更改下面mindspore的版本号 !pip uninstall m…

c#学习日志用CLI(命令行窗口)创建c#工程

创建Helloworld.Proj和Program.cs两个文件然后运行即可&#xff0c;一种方法是用记事本创建&#xff0c;写入代码&#xff0c;这种比较费劲&#xff0c;主要代码如下 Program.cs中代码如下 System.Console.WriteLine("Hello World!!"); Helloworld.Proj中的代码如…

【Linux】初识操作系统

一、冯•诺依曼体系结构 在学习操作系统之前&#xff0c;我们先来认识一下冯•诺依曼体系结构&#xff0c;我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&am…

怎么在vite项目中全局导入一个scss文件

怎么在vite项目中全局导入一个scss文件 &#x1f389;&#x1f389;&#x1f389;欢迎来到我的博客,我是一名自学了2年半前端的大一学生,熟悉的技术是JavaScript与Vue.目前正在往全栈方向前进, 如果我的博客给您带来了帮助欢迎您关注我,我将会持续不断的更新文章!!!&#x1f64…

VUE项目安全漏洞扫描和修复

npm audit 1、npm audit是npm 6 新增的一个命令,可以允许开发人员分析复杂的代码并查明特定的漏洞。 2、npm audit名称执行&#xff0c;需要包package.json和package-lock.json文件。它是通过分析 package-lock.json 文件&#xff0c;继而扫描我们的包分析是否包含漏洞的。 …

C++初学者指南-2.输入和输出---从输入流错误中恢复

C初学者指南-2.输入和输出—从输入流错误中恢复 文章目录 C初学者指南-2.输入和输出---从输入流错误中恢复怎么了&#xff1f;解决方案&#xff1a;出错后重置输入流 怎么了&#xff1f; 示例&#xff1a;连续输入 int main () {cout << "i? ";int i 0;cin…

Web服务器与Apache(虚拟主机基于ip、域名和端口号)

一、Web基础 1.HTML概述 HTML&#xff08;Hypertext Markup Language&#xff09;是一种标记语音,用于创建和组织Web页面的结构和内容&#xff0c;HTML是构建Web页面的基础&#xff0c;定义了页面的结构和内容&#xff0c;通过标记和元素来实现 2.HTML文件结构 <html>…

【Linux进阶】基础IO函数详解

1.函数open和openat 调用open或openat函数可以打开或创建一个文件。 #include <fcntl.h> int open(const char *path, int ofag, ... /* mode_t mode */);int openat (int fd, const char *path, int oflag, ... /* mode_t mode */); 我们将最后一个参数写为...&#x…

Windows下activemq开启jmx

1.activemq版本信息 activemq&#xff1a;apache-activemq-5.18.4 2.Windows下activemq开启jmx 1.进入activemq conf目录&#xff0c;备份activemq.xml文件 2.编辑activemq.xml文件&#xff0c;在broker节点增加useJmx"true" <broker xmlns"http://active…

《Windows API每日一练》6.4 程序测试

前面我们讨论了鼠标的一些基础知识&#xff0c;本节我们将通过一些实例来讲解鼠标消息的不同处理方式。 本节必须掌握的知识点&#xff1a; 第36练&#xff1a;鼠标击中测试1 第37练&#xff1a;鼠标击中测试2—增加键盘接口 第38练&#xff1a;鼠标击中测试3—子窗口 第39练&…

独立付费进群系统

无授权源码 有独立分销代理端 域名防封 可对接码支付 易支付 需要用到回调 源码链接

腾讯实时语音编码大突破 电梯、地库里通话也不卡顿

腾讯宣布&#xff0c;腾讯主导的新一代实时语音编码行业标准AVS3P10&#xff0c;即将正式对外发布。由腾讯会议天籁实验室携手腾讯AI Lab研发的Penguins编解码器&#xff08;即AVS3P10行业标准的原型&#xff09;&#xff0c;把经典信号处理和最新的深度学习技术结合在一起&…

pppd 返回错误码 含义

错误码 00&#xff1a; pppd已经断开&#xff0c;或者已经成功建立连接后请求方又中 断了。 01&#xff1a; 发成了一个严重错误&#xff0c;例如系统调用失败或者访问非法内存。 02&#xff1a; 处理给定操作是检测到错误&#xff0c;例如使用两个互斥的操作。 03&#xff1a;…

测试报告-HTMLTestRunner报告优化(中/英文)

引用原始的HTMLTestRunner.py文件生成的测试报告在美观性不是很好&#xff0c;使用在此文件基础上优化后的HTMLTestReportCN.py文件(生成的报告为中文)、HTMLTestReportEN.py文件(生成的报告为英文)。 1 首先新建一个Python项目 例如&#xff1a;testHtmlReport 创建case包&am…

【JVM】Java虚拟机运行时数据分区介绍

JVM 分区&#xff08;运行时数据区域&#xff09; 文章目录 JVM 分区&#xff08;运行时数据区域&#xff09;前言1. 程序计数器2. Java 虚拟机栈3. 本地方法栈4. Java 堆5. 方法区6. 运行时常量池7. 直接内存 前言 之前在说多线程的时候&#xff0c;提到了JVM虚拟机的分区内存…

# 音频处理4_傅里叶变换

1.离散傅里叶变换 对于离散时域信号 x[n]使用离散傅里叶变换&#xff08;Discrete Fourier Transform, DFT&#xff09;进行频域分析。 DFT 将离散信号 x[n] 变换为其频谱表示 X[k]&#xff0c;定义如下&#xff1a; X [ k ] ∑ n 0 N − 1 x [ n ] e − j 2 π k n N X[k]…

Qt 使用代码布局,而不使用UI布局

一、工程的建立&#xff1a; 1、打开Qt Creator&#xff0c;文件&#xff0c;新建文件或项目 2、选择Application&#xff0c;Qt Widgets Application 3、写入名称&#xff0c;选择qmake 4、选择基类Base class&#xff0c;去除Generate form 务必选择QWidget&#xff0c;若…

读AI新生:破解人机共存密码笔记14逆强化学习算法

1. 数学保证 1.1. 如果我们要沿着新的路线重建人工智能&#xff0c;那么它的基础必须是坚实的 1.2. 通过精确的定义和一步步的严格数学证明来提供无可辩驳的保证 1.3. 希望证明一个定理&#xff1a;设计人工智能系统的一种特殊方式可以确保它…