Springboot项目实训--day1

目录

一、软件安装

二、软件的简单了解

三、基础知识应用

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.mfbz.cn/a/763265.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mac|浏览器链接不上服务器但可以登微信

千万千万千万不要没有关梯子直接关机&#xff0c;不然就会这样子呜呜呜 设置-网络&#xff0c;点击三个点--选择--位置--编辑位置&#xff08;默认是自动&#xff09; 新增一个&#xff0c;然后选中点击完成 这样就可以正常上网了

Python 异常

文章目录 捕获异常捕获常规异常捕获指定异常捕获多个异常 else语法finally语法异常的传递 捕获异常 假设某处可能会出现异常&#xff0c;提前做好准备。 捕获常规异常 所有的异常都会被捕获&#xff0c;不指定异常。 语法&#xff1a; try:可能出错的代码 except:出现异常后…

Open3D 点云快速全局配准FGR算法(粗配准)

目录 一、概述 1.1原理和步骤 1.2关键技术和优势 1.3应用场景 二、代码实现 2.1 关键代码 2.1.1.函数&#xff1a;execute_fast_global_registration 2.1.2调用registration_fgr_based_on_feature_matching函数 2.2完整代码 三、实现效果 3.1原始点云 3.2粗配准后点…

写代码,为什么还需要作图?

引言 古人云 &#xff1a;一图胜千言&#xff0c;闲人说&#xff1a;无图无真相。 在日常的聊天工具当中&#xff0c;无论是使用微信&#xff0c;还是钉钉。使用图片或表情包的频次越来越高&#xff0c;那是为什么呢&#xff1f;其实在互联网没有那么发达的时候&#xff0c;我…

算法题笔记

主要记录python的力扣题解 参考的优质网站&#xff1a; 算法通关手册&#xff08;LeetCode&#xff09; | 算法通关手册&#xff08;LeetCode&#xff09; (itcharge.cn) 代码随想录 (programmercarl.com) 2024.6.28 题目&#xff1a;轮转数组 官网连接&#xff1a;189. …

Linux环境安装配置nginx服务流程

Linux环境的Centos、麒麟、统信操作系统安装配置nginx服务流程操作&#xff1a; 1、官网下载 下载地址 或者通过命令下载 wget http://nginx.org/download/nginx-1.20.2.tar.gz 2、上传到指定的服务器并解压 tar -zxvf nginx-1.20.1.tar.gzcd nginx-1.20.1 3、编译并安装到…

武汉星起航:跨境电商流量红利爆发,2023年出海企业迎突破增长

在数字时代的浪潮中&#xff0c;中国跨境电商以惊人的爆发力崭露头角&#xff0c;成为全球贸易的璀璨新星。2023年数据显示&#xff0c;跨境电商出口额高达1.83万亿元&#xff0c;同比增长19.6%&#xff0c;这一显著增速不仅刷新纪录&#xff0c;更为众多出海企业带来了前所未有…

vscode搭建suricata调试环境

一、环境 windows10 wsl2 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.2 LTS Release: 20.04 Codename: focal二、编译 2.1 下载源码 wget https://www.openinfosecfoundation.org/download/suri…

配电智能网关赋能电力系统智能化运行维护

随着智能电网和物联网技术的不断发展&#xff0c;两者之间的融合应用成为电力行业的重要趋势。配电智能网关作为连接两者的关键设备&#xff0c;在智能电网的物联网应用中发挥着重要作用。 配电智能网关能够实现对电力系统的实时监控、数据采集、远程控制等功能&#xff0c;为…

【Vue】微信禁止打开,可弹出提示:请用360、搜狗浏览器的极速模式打开。

需求 某网站链接&#xff0c;使用微信端打开&#xff0c;某些材料自动下载会造成泄密。所以添加限制&#xff1a;微信禁止打开&#xff0c;可弹出提示&#xff1a;请用360、搜狗浏览器的极速模式打开。 处理前 微信访问该链接&#xff0c;点击【继续访问】可直接跳转到该网站 处…

苍穹外卖项目 常用注解 + 动态sql

常用注解 常见的注解解析方法有两种&#xff1a; 编译期直接扫描&#xff1a;编译器在编译 Java 代码的时候扫描对应的注解并处理&#xff0c;比如某个方法使用Override 注解&#xff0c;编译器在编译的时候就会检测当前的方法是否重写了父类对应的方法。运行期通过反射处理&…

ROS2使用C++开发动作通信

1.开发接口节点 cd chapt4_ws/ ros2 pkg create robot_control_interfaces --build-type ament_cmake --destination-directory src --maintainer-name "joe" --maintainer-email "1027038527qq.com" mkdir -p src/robot_control_interfaces/action touch…

C#中的时间数据格式化详解与应用示例

文章目录 1、基本概念基本格式化方法 2、实用的时间格式化方法格式化日期格式化时间格式化时间戳解析日期时间字符串 3、实际应用4、应用示例结论 在软件开发中&#xff0c;时间数据是无处不在的。无论是用户登录时间、数据备份时间&#xff0c;还是日志记录&#xff0c;都需要…

NSE and KGE

NSE&#xff08;Nash-Sutcliffe Efficiency&#xff09;&#xff1a; 解释&#xff1a;NSE 是衡量水文模型模拟结果与观测值之间拟合程度的指标。它计算模拟值与观测值之间的均方误差&#xff0c;并将其与观测值的方差进行比较。NSE 的取值范围为-∞至 1&#xff0c;值越接近 1…

natvicat为什么连不上linux上的mysql?

老规矩&#xff0c;废话不多说&#xff0c;直接上教程。 号外&#xff0c;数据库管理工具领域的知名品牌Navicat&#xff0c;推出其免费版本——Navicat Premium Lite&#xff0c;用户可从Navicat官网下载体验这款软件。 https://www.navicat.com.cn/download/navicat-premium-…

vue3 动态配置element 的table

需求 合并行、合并标题、列宽可调整、列顺序可调整、可以控制列是否显示、列布局可保存、导出excel… 参考效果 代码 引入 npm i xlsx npm install element-plus --savetable组件 <template><div><div class"table-btn"><el-tooltip conte…

开发一套java语言的智能导诊需要什么技术?java+ springboot+ mysql+ IDEA互联网智能3D导诊系统源码

开发一套java语言的智能导诊需要什么技术&#xff1f;java springboot mysql IDEA互联网智能3D导诊系统源码 医院导诊系统是一种基于互联网和3D人体的智能化服务系统&#xff0c;旨在为患者提供精准、便捷的医院就诊咨询服务。该系统整合了医院的各种医疗服务资&#xff1b;智慧…

selenium 简介以及 selenium 环境配置

文章目录 一、初识 selenium1.selenium 简介2.selenium 三大组件3.selenium工作过程和原理4.selenium自动化测试流程5.selenium优点 二、自动化测试1.UI自动化本质2.UI自动化的前提3.适用场景4.UI自动化的原则5.UI自动化的覆盖率 三、selenium 环境配置 一、初识 selenium 1.s…

Win11找不到组策略编辑器(gpedit.msc)解决

由于需要同时连接有线网络和无线网络&#xff0c;且重启后双网络都自动连接&#xff0c;因此需要配置组策略。 但是win11找不到组策略编辑器。 灵感来源&#xff1a;Win11找不到组策略编辑器&#xff08;gpedit.msc&#xff09;解决教程 - 知乎 (zhihu.com) 在Win11中&#…

安装KB5039212更新卡在25% 或者 96% 进度

系统之家7月1日消息&#xff0c;微软在6月11日的补丁星期二活动中&#xff0c;为Windows 11系统推出了KB5039212更新。然而&#xff0c;部分用户在Windows社区中反映&#xff0c;安装过程中出现失败&#xff0c;进度条在25%或96%时卡住。对于遇到此类问题的Windows 11用户&…