使用springboot
创建项目并使用SpringBoot
介绍
springboot是java的一个框架,他将spring框架的初始化和搭建进行了简化,让你不到一分钟能够使用Spring的内容,只需一些简单的配置
创建Maven项目
-
在IDEA里文件 > 新建 > 项目
-
选择新建项目,名称随意,主要是构建系统选择Maven,JDK选择17*[因为要使用SpringBoot3需要JDK17的支持]*
配置Pom
创建好了之后,看pom.xml
groupId可以起一个你自己想起的,例如:com.xxx
其他的就不需要怎么动
-
添加Parent
在version标签下添加
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.0</version> <!-- 版本可以自己选,但是3.0.0以上必须要JDK17,3.0.0以下需要JDK1.8以上 --> </parent>
-
添加dependencies
在parent标签下添加dependencies标签
<dependencies> </dependencies>
dependencies标签里需要填什么呢?通过mvnrepository来添加dependency,里面包含了很多的maven的包和版本,而要使用SpringBoot,需要添加一个包含spring-boot-starter依赖的,添加dependency可以让SpringBoot项目更加的牛逼。相当于一个软件,然后从里面添加插件
所以我们得在dependencies标签里添加一个spring-boot-starter-web的dependency
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
-
创建软件包和启动类
SpringBoot需要一个主类,能让SpringBoot运行起来
-
创建这个类之前,需要创建一个软件包,软件包的路径就是你pom.xml里的groupId,在我这里为com.springDemo,记住创建的是软件包,不是目录,判断是否有创建正确就在文件管理器里面浏览一下,java目录下是否是com/springDemo
-
在com.springDemo下创建一个Application.java,这个类,就是用作springBoot的启动类
- @SpringBootApplication注解用于标注这个类为springBoot的启动类
- 通过SpringApplication.run()来启动SpringBoot,第一个参数就是启动类Application.class,第二个参数为主函数的args
//application.java @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,args); } }
-
-
启动测试
一般来说,启动了之后是不会有什么报错或者直接报错后停止的
SpringBoot使用Web
由于在前面已经将spring-boot-starter-web加入到dependency,所以这里就不用添加了
-
添加spring-boot-starter-thymeleaf,将下面代码复制粘贴到dependencies标签里
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
这里就不得不解释thymeleaf是什么了,到时候会出一篇关于thymeleaf的教学,thymeleaf是一种模板引擎,可以在html中添加标签属性,使得html通过MVC和thymeleaf的处理,让html变得更加灵活
-
在com.springDemo下创建config软件包,并在config软件包下创建webConfig.java,用于配置web的静态路径
[主要是解决css和js无法加载到页面上的问题]
//webConfig.java @Configuration public class webConfig implements WebMvcConfigurer { public void addResourceHandlers(ResourceHandlerRegistry registry){ registry.addResourceHandler("/**") .addResourceLocations("classpath:/templates/", "classpath:/templates/"); } }
-
在resources文件夹里创建目录templates,然后再创建一个html作为测试[这里为test.html]
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>Hi,Welcome</h1> </body> </html>
-
在com.springDemo下创建controller软件包,再创建testController.java
//testController.java @Controller public class testController { @RequestMapping("/") public String test1(){ return "test"; } }
解释一下这个Controller
- @Controller注解:将java类加入Bean管理,并将这个类变为控制类
- @RequestMapping注解:将方法能通过url访问,即访问注解里的值,可以运行这个方法,这个注解的method值默认为GET,也就是对应html的GET请求
- 方法的类型需要String类型:方法的返回值是有点说法的,如果字符串为"redirect:"开头,即重定向*[了解过javaweb都知道吧]*,例如:“redirect:/test”;如果字符串为普通字符串,即返回对应路径的html文件,例如:“test/test”=>这个的路径就为resources/templates/test/test.html
-
在application.java启动类启动,并打开浏览器输入localhost:8080即可查看结果
application
我们先在resources文件下新建一个文件application.properties或application.yml,这个文件是用来设置Springboot的一些配置的,但是目前还没有用到,所以先搁置着
SpringBoot对于现在的使用方式
按现情况一般来说,已经很少人使用前后端不分离的模式,就不会单纯的让后端将数据处理完,还要将页面通过模板引擎渲染出来,这不仅让性能下降,在团队中也不好沟通和交流,现在的Springboot大部分都是用来处理数据,然后返回json格式给前端
@RequestMapping注解的替代
我们在编写Controller控制类的时候,如果要让浏览器访问到,就需要使用**@RequestMapping注解,并在里面填写相应的值,而在浏览器中,发送请求分两种方式"GET"、“POST”,而@RequestMapping注解的method的默认值为GET**,也就是GET请求,但是也能收到浏览器发来的POST请求,这会使得一些不法分纸搞搞震,让你很难受,所以需要用到更好的注解!@GetMapping、@PostMapping
- @GetMapping:用于GET请求
- @PostMapping:用于POST请求
@GetMapping("/testGet")
public String test2(){
System.out.println("使用了get请求访问");
return "test";
}
@PostMapping("/testPost")
public String test3(){
System.out.println("使用了post请求访问");
return "test";
}
使用Json格式
我们发数据给前端的时候,不能就发一串数据,而是采用json格式发送
-
新建一个软件包名为entity,里面再创建一个类ResultData.java,将构造函数和get、set方法添加上去
public class ResultData { private String status; private String msg; public ResultData() {} public ResultData(String status, String msg) { this.status = status; this.msg = msg; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
到时候,方法返回的就是这个类
-
在controller里新建一个测试类test1Controller.java
@ResponseBody注释就是将方法体返回的不是页面,返回的是json格式
new一个ResultData去给这个方法返回
@Controller public class test1Controller { @GetMapping("/test1") @ResponseBody public ResultData test1(){ ResultData rd = new ResultData("200", "成功"); return rd; } }
但是每个方法都要使用**@ResponseBody注释才能返回json格式有点麻烦,但是其实将@Controller换成@RestController就不需要再用@ResponseBody注释**,简化了代码,下面才是最终的代码
@RestController public class test1Controller { @GetMapping("/test1") public ResultData test1(){ ResultData rd = new ResultData("200", "成功"); return rd; } }
-
启动测试
Springboot的基本用法就这些了,如果还有什么补充,尽管提出