五、Spring Boot - 上手篇(1)

🌻🌻目录

  • 一、快速入门:创建第一个SpringBoot 工程
    • 1.1 点击File--->New--->Project...
    • 1.2 选择版本和依赖的相关骨架包
    • 1.3 设置项目保存目录
    • 1.4 项目创建完成,工程主界面如下
    • 1.5 项目说明
    • 1.6 启动项目
    • 1.7 编写 HelloController
  • 二、SpringBoot 基于web应用开发
    • 2.1 SpringBoot json支持
    • 2.2 SpringBoot 请求传递参数
      • 2.1.1 第一类:请求路径传参
      • 2.1.2 第二类:@RequestBody 参数
    • 2.3 SpringBoot 静态资源
      • 2.3.1 默认静态资源映射
      • 2.3.2 自定义静态资源访问
  • 三、SpringBoot 属性配置
    • 3.1 项目默认属性配置文件所在位置及配置实例
    • 3.2 实体类属性赋值
    • 3.3 自定义配置文件
    • 3.4 多环境配置文件

Spring Boot 涉及底层核心源码,建议先看上手篇

一、快速入门:创建第一个SpringBoot 工程

前提电脑安装了jdk,maven并且在IDEA中作了配置

1.1 点击File—>New—>Project…

创建可以参考 Spring Boot

创建SpringBoot时候报错解决,------------------------- 官网创建下载导入地址

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

输入maven属性,注意Artifact不要出现大写、特殊字符.

1.2 选择版本和依赖的相关骨架包

选择SpringBoot版本,选择项目需要依赖的相关骨架包

注意:一定要选择springBoot版本2.1.9(没有的话选择低版本,下面手动改)

在这里插入图片描述

1.3 设置项目保存目录

在这里插入图片描述

1.4 项目创建完成,工程主界面如下

在这里插入图片描述

手动修改版本:

在这里插入图片描述

1.5 项目说明

  • (1)默认有个DemoApplication类,里面是spring boot的载入函数
  • (2)resource目录下有个application.properties文件,这个是Spring boot的配置文件
  • (3)test目录下有个测试类DemoApplicationTests,这个是spring boot的单元测试
  • (4)pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><!-- Generated by https://start.springboot.io --><!-- 优质的 spring/boot/data/security/cloud 框架中文文档尽在 => https://springdoc.cn --><groupId>com.gansu</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

注意观察

  • 一个继承spring-boot-starter-parent,

两个依赖,

  • spring-boot-starter-web web 项目依赖必须,
  • spring-boot-starter-test spring boot 项目单元测试依赖

注意,很多人配置的maven加速镜像,其中很多配置的阿里云maven镜像,在这会有找不到最新Springboot相关包的问题,也可以把加速镜像指向华为云:

2. Maven镜像配置

1.6 启动项目

通过spring boot的启动类,这里是DemoApplication,选中类,右键选择–>Run‘DemoApplication

在这里插入图片描述

在控制台出现如下输出:

在这里插入图片描述

找到如下文字,表明SpringBoot已经成功启动:

在这里插入图片描述

  • tomcat启动在8080端口,http协议,启动花费了3.184秒
    打开浏览器,输入地址:http://localhost:8080 ,出现如下画面

在这里插入图片描述

出现上图404错误是正常的,因为我们什么都没写。

1.7 编写 HelloController

在这里插入图片描述

注意HelloController所在包,必须在com.gansu.demo包,或者子包下面。

package com.gansu.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class HelloController {@RequestMapping("/hello")@ResponseBodypublic String hello(){return "Hello Spring boot!!!";}
}

重启应用,看控制台输出:

重启发现刚才写的hello已经映射出来了
访问http://localhost:8080/hello

在这里插入图片描述

二、SpringBoot 基于web应用开发

2.1 SpringBoot json支持

(1)、创建实体bean Car

Lombok使用

  • 1、导入依赖库

在这里插入图片描述

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.6</version>
</dependency>
  • 2、安装插件

在这里插入图片描述

  • 3、在实体bean使用插件注解或直接生成
    @Data //get 、set
    @AllArgsConstructor //所有参数的有参数构造函数
    @NoArgsConstructor //无参数构造函数

在这里插入图片描述

package com.gansu.pojo;import java.io.Serializable;public class Car implements Serializable {private Integer id;private String name;private Float price;public Car() {}public Car(Integer id, String name, Float price) {this.id = id;this.name = name;this.price = price;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Float getPrice() {return price;}public void setPrice(Float price) {this.price = price;}@Overridepublic String toString() {return "Car{" +"id=" + id +", name='" + name + '\'' +", price=" + price +'}';}
}

(2)、创建Controller CarController

在这里插入图片描述

package com.gansu.controller;import com.gansu.pojo.Car;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/car")
public class CarController {@RequestMapping("/findOne")public Car findOne(){Car car = new Car(1,"喵喵",23F);return car;}
}

说明:@RestController 注解,等于@Controller 与 @ResponseBody 一起使用

(3)、测试获取单个对象json

开启postman,设置发出get请求,请求地址:

http://localhost:8080/car/findOne

在这里插入图片描述

在这里插入图片描述

(4)、修改Controller CarController新增返回list集合方法

在这里插入图片描述

@RequestMapping("/getAllCar")
public List<Car> getAllCar(){ArrayList list = new ArrayList();Car car1 = new Car(1,"喵喵1",231F);Car car2 = new Car(2,"喵喵2",232F);Car car3 = new Car(3,"喵喵3",233F);Car car4 = new Car(4,"喵喵4",234F);Car car5 = new Car(5,"喵喵5",235F);Car car6 = new Car(6,"喵喵6",236F);list.add(car1);list.add(car2);list.add(car3);list.add(car4);list.add(car5);list.add(car6);return list;
}

(5)、测试获取集合多个对象json

开启postman,设置发出get请求,请求地址:http://localhost:8080/car/getAllCar

在这里插入图片描述

在这里插入图片描述

2.2 SpringBoot 请求传递参数

2.1.1 第一类:请求路径传参

@PathVariable 获取路径参数。即url/{id} 这种形式
@RequestParam 获取查询参数。即url?name=value 这种形式

(1)、修改Controller CarController新增接收参数,返回单个对象方法

在这里插入图片描述

@RequestMapping("/getCarById/{id}")
public Car geteCarById(@PathVariable("id") Integer id, @RequestParam("name") String name){Car car = new Car();car.setId(id);car.setName(name);car.setPrice(999.9f);return car;
}

(2)、测试传递参数获取单个对象json

在这里插入图片描述

2.1.2 第二类:@RequestBody 参数

(3)、修改Controller CarController新增接收封装对象参数,返回单个及多个对象方法

在这里插入图片描述

@RequestMapping("/getCar")
public Car getCar(Car car){return car;
}

(6)、测试传递普通body参数获取单个对象json

开启postman,设置发出post请求,请求地址:
http://localhost:8080/car/getCar

请求参数,选择body

在这里插入图片描述

2.3 SpringBoot 静态资源

2.3.1 默认静态资源映射

Spring Boot 对静态资源映射提供了默认配置
Spring Boot 默认将 /** 所有访问映射到以下目录:

  • classpath:/static
  • classpath:/public
  • classpath:/resources
  • classpath:/META-INF/resources
    如:在resources目录下新建 publicresourcesstatic 三个目录,并分别放入 a.jpg b.jpg c.jpg 图片

图片素材:👇👇

在这里插入图片描述

在这里插入图片描述

浏览器分别访问:

  • http://localhost:8080/a.jpg
  • http://localhost:8080/b.jpg
  • http://localhost:8080/c.jpg

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

均能正常访问相应的图片资源。那么说明,Spring Boot 默认会挨个从 public resources static 里面找是否存在相应的资源,如果有则直接返回。

2.3.2 自定义静态资源访问

试想这样一种情况:一个网站有文件上传文件的功能,如果被上传的文件放在上述的那些文件夹中会有怎样的后果?
网站数据与程序代码不能有效分离;当项目被打包成一个.jar文件部署时,再将上传的文件放到这个.jar文件中是有多么低的效率;网站数据的备份将会很痛苦。此时可能最佳的解决办法是将静态资源路径设置到磁盘的基本个目录。

第一种方式

  • 1、配置类

在这里插入图片描述

package com.gansu.config;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/myPic/**").addResourceLocations("file:D:\\develop\\ideaIU-2018.2.5\\ideaIU-2018.2.5\\idea_workspace\\pic\\");}
}

上面的意思就是:将所有D:\develop\ideaIU-2018.2.5\ideaIU-2018.2.5\idea_workspace\pic\ 访问都映射到/myPic/** 路径下

2、重启项目
例如,在D:\develop\ideaIU-2018.2.5\ideaIU-2018.2.5\idea_workspace\pic\中有一张a.jpg图片

在这里插入图片描述

在浏览器输入:http://localhost:8080/myPic/a.jpg即可访问。

在这里插入图片描述

第二种方式

首先,我们配置application.properties

web.upload-path=D:/develop/ideaIU-2018.2.5/ideaIU-2018.2.5/idea_workspace/pic/
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,\
classpath:/static/,classpath:/public/,file:${web.upload-path}

注意:
web.upload-path:这个属于自定义的属性,指定了一个路径,注意要以/结尾;
spring.mvc.static-path-pattern=/**:表示所有的访问都经过静态资源路径;
spring.resources.static-locations:在这里配置静态资源路径,前面说了这里的配置是覆盖默认配置,所以需要将默认的也加上否则static、public等这些路径将不能被当作静态资源路径,在这个最末尾的file:${web.upload-path}之所有要加file:是因为指定的是一个具体的硬盘路径,其他的使用classpath指的是系统环境变量。

然后,重启项目
例如,在D:/develop/ideaIU-2018.2.5/ideaIU-2018.2.5/idea_workspace/pic/中有一张a.jpg图片

在浏览器输入:http://localhost:8080/a.jpg 即可访问。

在这里插入图片描述

三、SpringBoot 属性配置

Spring Boot并不真正是所谓的『零配置』,他的理念是“习惯优于配置”采用了一些默认的习惯性配置,让你无需手动进行配置,从而让你的项目快速运行起来。所以要想玩转Spring Boot,了解这些默认配置还是必不可少的。

3.1 项目默认属性配置文件所在位置及配置实例

创建Spring Boot项目时,会默认生成一个全局配置文件application.properties(可以修改后缀为.yml),在src/main/resources目录下或者类路径的/config下。我们可以通过修改该配置文件来对一些默认配置的配置值进行修改。

在这里插入图片描述

【修改默认配置】

  • 1、spring boot 开发web应用的时候,默认tomcat的启动端口为8080,如果需要修改默认的端口,则需要在application.yml添加以下记录:
server:port: 8081

重启项目,启动日志可以看到:Tomcat started on port(s): 8081 (http) 启动端口为8081 ,浏览器中访问 http://localhost:8081 能正常访问。

在这里插入图片描述

在这里插入图片描述

  • 2、spring boot 开发web应用的时候,访问路径为 /,如果需要修改访问路径,则需要在application.yml添加以下记录:

在这里插入图片描述

server:port: 8081servlet:context-path: /demo

重启项目,启动日志就可以看到:Tomcat started on port(s): 8081(http) with context path ‘/demo’,浏览器中访问 http://localhost:8081/demo/a.jpg能正常访问。

在这里插入图片描述

3.2 实体类属性赋值

当属性参数变多的时候,我们习惯创建一个实体,用实体来统一接收赋值这些属性。

(1)、定义配置文件

在这里插入图片描述

server:port: 8081servlet:context-path: /demoUserBody:username: zhangsanpassword: 123age: 22birthday: 2024-7-27spring:jackson:date-format: yyyy-MM-ddtime-zone: GMT+8

(2)、创建实体类 UserBody

在这里插入图片描述

package com.gansu.pojo;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.annotation.DateTimeFormat;import java.io.Serializable;
import java.util.Date;@Configuration
@ConfigurationProperties(prefix = "userbody")    //prefix 参数必须全部为小写
public class UserBody implements Serializable {private String username;private String password;private Integer age;@DateTimeFormat(pattern = "yyyy-MM-dd")private Date birthday;public UserBody() {}public UserBody(String username, String password, Integer age, Date birthday) {this.username = username;this.password = password;this.age = age;this.birthday = birthday;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}@Overridepublic String toString() {return "UserBody{" +"username='" + username + '\'' +", password='" + password + '\'' +", age=" + age +", birthday='" + birthday + '\'' +'}';}
}

需要在实体类上增加注解@ConfigurationProperties,并指定prefix前缀。prefix为全小写。

(3)、编写Controller调用属性bean

在这里插入图片描述

package com.gansu.controller;import com.gansu.pojo.UserBody;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@EnableConfigurationProperties({UserBody.class})
public class UserBodyController {@AutowiredUserBody userBody;@GetMapping("/getUser")public String getUser(){return userBody.toString();}
}

EnableConfigurationProperties注解需要加在调用类上,或者加在启动类SpringbootSimpleApplication上也可以。

访问地址:http://localhost:8081/demo/getUser

可以看到返回值:

在这里插入图片描述

3.3 自定义配置文件

application.yml是系统默认的配置文件,当然我们也可以创建自定义配置文件,在路径src/main/resources下面创建文件test.properties

注意:spring boot1.5 版本后@PropertySource注解就不能加载自定义的yml配置文件了

(1)、定义userBody.properties 删除或修改之前的yml,不然不生效

在这里插入图片描述

userbody.username=zhangsan88
userbody.password=12312388
userbody.age=228
userbody.birthday=2024-7-27

(2)、将配置赋值到 javabean

在这里插入图片描述

@PropertySource("classpath:userBody.properties")

@Configuration 注解包含@Component注解
1.5版本后需要通过@PropertySource(“classpath:userBody.properties”)指定配置文件

(3)、Controller 读取配置和上面一致

访问地址:http://localhost:8080/getUser 可以看到返回值:

在这里插入图片描述

3.4 多环境配置文件

使用多个yml配置文件进行配置属性文件
可以使用多个yml来配置属性,将与环境无关的属性放置到application.yml文件里面;通过与配置文件相同的命名规范,创建application-{profile}.yml文件 存放不同环境特有的配置,例如 application-test.yml 存放测试环境特有的配置属性,application-prod.yml 存放生产环境特有的配置属性。

通过这种形式来配置多个环境的属性文件,在application.yml文件里面spring.profiles.active=xxx来指定加载不同环境的配置,如果不指定,则默认只使用application.yml属性文件,不会加载其他的profiles的配置。

(1)、创建application-dev.yml

server:port: 8082servlet:context-path: /demo2

(2)、创建application-test.yml

server:port: 8083servlet:context-path: /demo3

(3)、创建application-prod.yml

server:port: 8084servlet:context-path: /demo4

(4)、修改application.yml

spring:profiles:active: prod

通过设置,active: 的值对应不同的{profile}就可以使对应的配置文件生效。

在这里插入图片描述

文章源码

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

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

相关文章

快速上手,spring boot3整合task实现定时任务

在已经上线的项目中&#xff0c;定时任务是必不可少的。基于spring boot自动装配的原理&#xff0c;我们要集成task定时任务还是非常简单的。只需要简单的两步就可以实现。 1、创建一个spring boot项目&#xff0c;并在项目的启动类&#xff08;也不一定非要是启动类&#xff…

如何排查GD32 MCU复位是由哪个复位源导致的?

上期为大家讲解了GD32 MCU复位包括电源复位和系统复位&#xff0c;其中系统复位还包括独立看门狗复位、内核软复位、窗口看门狗复位等&#xff0c;在一个GD32系统中&#xff0c;如果莫名其妙产生了MCU复位&#xff0c;如何排查具体是由哪个复位源导致的呢&#xff1f; GD32 MC…

【RabbitMQ】MQ相关概念

一、MQ的基本概念 定义&#xff1a;MQ全称为Message Queue&#xff0c;是一种提供消息队列服务的中间件&#xff0c;也称为消息中间件。它允许应用程序通过读写队列中的消息来进行通信&#xff0c;而无需建立直接的连接。作用&#xff1a;主要用于分布式系统之间的通信&#x…

vulntarget-b

实际部署之后centos7 的ip有所变动分别是 :192.168.127.130以及10.0.20.30 Centos7 老规矩还是先用fscan扫一下服务和端口&#xff0c;找漏洞打 直接爆出来一个SSH弱口令…&#xff0c;上来就不用打了&#xff0c;什么意思&#xff1f;&#xff1f;&#xff1f; 直接xshell…

STM32--HAL库--定时器篇

一&#xff1a;如何配置定时器 打开对应工程串口配置好的工程&#xff08;上一篇博客&#xff09;做如下配置&#xff1a; 定时器的中断溢出时间计算公式是&#xff1a; 由图得T100*1000/100MHz 注&#xff1a;100MHz100000000 所以溢出时间等于1ms 关于上图4的自动重装…

【网络安全】文件上传黑白名单及数组绕过技巧

不安全的文件上传&#xff08;Unsafe FileUpload&#xff09; 不安全的文件上传是指Web应用程序在处理用户上传的文件时&#xff0c;没有采取足够的安全措施&#xff0c;导致攻击者可能利用这些漏洞上传恶意文件&#xff0c;进而对服务器或用户造成危害。 目录 一、文件上传…

Unity横板动作游戏 - 素材导入和整理

导入素材 编辑器布局 点击每个窗口右上角的三个点可以有更多的窗口选项。 在屏幕的右上角有一个菜单可以保存布局或读取已经报错的布局。 工具按钮 编辑器上的工具按钮在启动的时候是蓝色的&#xff0c;在不启动的时候是灰色的。 这个按钮将会决定场景中的物体是以锚点显示还…

Oracle配置TCPS加密协议测试

文章目录 一、环境信息二、配置过程1.创建证书2.监听配置2.1.配置sqlnet.ora2.2.配置listener.ora文件2.3.配置tnsnames.ora文件2.4.重载监听 3.数据库本地测试3.1. tcps登录测试3.2.日志监控 一、环境信息 操作系统&#xff1a;Linux 版本信息&#xff1a;Oracle 19c 参考文档…

EXCEL自动公式计算始终为0

如果你的数据单元格的左上角存在绿色的三角小箭头&#xff0c;那么就会造成这种问题&#xff1a; 你的数字是以文本形式存入的单元格 解决办法&#xff1a; 选中数据列&#xff0c;数据->分列 直接选择完成 此时就可以进行公式计算了

pytest结合allure-pytest插件生成测试报告

目录 一、安装allure-pytest插件 二、下载allure 三、生成allure报告 四、效果展示 一、安装allure-pytest插件 二、下载allure 下载之后解压&#xff0c;解压之后还要配置环境变量&#xff08;把allure目录下bin目录配置到系统变量的path路径&#xff09;&#xff0c;下…

企业化运维(8)Docker容器技术

###1.Docker介绍### 什么是Docker Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间…

2024后端开发面试题总结

一、前言 上一篇离职贴发布之后仿佛登上了热门&#xff0c;就连曾经阿里的师兄都看到了我的分享&#xff0c;这波流量真是受宠若惊&#xff01; 回到正题&#xff0c;文章火之后&#xff0c;一些同学急切想要让我分享一下面试内容&#xff0c;回忆了几个晚上顺便总结一下&#…

全栈嵌入式C++、STM32、Modbus、FreeRTOS和MQTT协议:工业物联网(IIoT)可视化系统设计思路(附部分代码解析)

项目概述 随着工业4.0时代的到来&#xff0c;工业物联网&#xff08;IIoT&#xff09;在提高生产效率、降低运营成本和实现智能制造方面得到了广泛应用。本项目旨在开发一个全面的工业物联网监控系统&#xff0c;能够实时监测设备的温度、压力、振动和电流等参数&#xff0c;并…

谷粒商城实战踩坑笔记-Service循环依赖

文章目录 1. 使用 Lazy 注解2. 使用 PostConstruct 注解3&#xff0c;补充循环依赖相关知识循环依赖的原因举例说明 4&#xff0c;Lazy 的工作原理 启动项目失败&#xff0c;原因是出现了循环依赖。 The dependencies of some of the beans in the application context form a …

PP 6 成本中心 活动类型 以及两者的关联

成本中心创建&#xff1a;KS01 保存即可 活动类型&#xff1a;KL01 &#xff08;有准备&#xff0c;机器&#xff0c;工时等&#xff09; 保存 KP26:活动类型和成本中心的关联

如何在Net8.0平台下开发AOT项目,项目实战分析

1. 前言 前面的文章我们讨论过什么是AOT&#xff0c;以及AOT适用于什么场景&#xff0c; dotnet开发编译之争&#xff1a;Ahead-of-Time(AOT) vs Just-in-Time(JIT)谁才是未来最佳编译选择&#xff1f;&#xff0c;那么如何在Net8.0平台下开发AOT项目。 2. 先决条件 在安装的…

搞懂数据结构与Java实现

文章链接&#xff1a;搞懂数据结构与Java实现 (qq.com) 代码链接&#xff1a; Java实现数组模拟循环队列代码 (qq.com) Java实现数组模拟栈代码 (qq.com) Java实现链表代码 (qq.com) Java实现哈希表代码 (qq.com) Java实现二叉树代码 (qq.com) Java实现图代码 (qq.com)

【讲解下ECMAScript和JavaScript之间有何区别?】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

swagger-ui.html报错404

问题1&#xff1a;权限受限无法访问 由于采用的Shiro安全框架&#xff0c;需要在配置类ShiroConfig下的Shiro 的过滤器链放行该页面&#xff1a;【添加&#xff1a;filterChainDefinitionMap.put("/swagger-ui.html", "anon");】 public ShiroFilterFact…

C# dataGridView 去掉左边多出来空列

1.问题 在使用winform做界面程序时&#xff0c;dataGridView控件创建好后&#xff0c;左侧会多出一列为空&#xff0c;如何删除呢 2.解决方法 你可以在属性窗口中进行设置 如图&#xff1a; 将RowHeadersVisible 属性设置为False 或者代码设置 this.dataGridView1.RowHea…