什么是SpringBoot?
springBoot是对spring的缺点进行改善和优化 约定大于配置 开箱即用,没有代码生成也不用xml文件配置,可以修改属性来满足
Springboot的入门程序
1.首先创建一个springboot项目
在项目中有一个启动类,springboot是载入函数,启动时可以选择图中的三角
注意:在写入门程序时一定要让Demo001Application是你的程序的父辈,也就是和你的父级是同一级
Springboot web应用
它支持json,
首先我们先导入一个依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
安装lombok插件
安装好插件之后我们在创建实体类时就可以省去setter、getter和toString方法了,我们可以用注解来代替@Data
@Data这一个注解就可以代替setter、getter和toString方法
@AllArgsConstructor //所有参数的有参数构造函数
@NoArgsConstructor //无参数构造函数
使用时直接在类上添加就可以
还有一个注解 @RestController,这个注解就等于是,@Controller+@ResponseBody
SpringBoot请求传递参数
第一种:请求路径传参
@Requestparam 获取查询参数。 url?name=value
@PathVariable 获取路径参数。即url/{id}
@RequestMapping("/getcar2/{name}")
public Car getCarById(@RequestParam(name="id") Integerid,@PathVariable(name="name") String name) {
Car car = new Car();
car.setId(id);
car.setName(name);
car.setPrice(100000.99F);
car.setCreateDate(new Date());
return car;
}
SpringBoot静态资源
(1)默认静态资源映射
SpringBoot对静态资源映射提供了默认配置
默认将/**所有访问映射到一下目录
classpath:/static
classpath:/public
classpath:/resources
classpath:/META-INF/resources
在这些文件夹中的资源,可以在地址栏中直接访问,如:http://localhost:8080/a.jpg
(2)自定义静态资源访问
第一种方式:配置类
@Configuration//该注解用于表示这个类是一个配置类
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//将所有file:d:\\Desktop\\tp\\中的资源全部映射到aaa这个路径下
registry.addResourceHandler("/aaa/**").addResourceLocations("file:d:\\Desktop\\tp\\");
}
}
第二种方式:配置application.properties配置文件
web.upload-path=D:/springboot/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},是因为指定的是一个具体的硬盘路径,其他的使用classpath之间的是系统环境变量
Webjars的结构
可以看出静态文件存放规则:META_INFA/resources/wenjars/名称/版本号
我们在这个目录下翻了一张图片,编写了一个简单的html文件,放在static目录下
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello,WebJars</title>
</head>
<body>
<h1>Hello,WebJars</h1>
<img alt="图片没有显示出来" src="webjars/demo/0.0.1/ujiuye.jpg">
</body>
</html>
然后编写一个配置类,添加一个资源映射关系
@Controller
public class WebJarsDemoController {
@GetMapping("/")
public String index() {
return "index.html";
}
}
我们还可以将META-INF打成一个jar包,然后在导入依赖,在一个新的springboot中添加他的依赖,进行测试
Springboot属性配置
首先将配置文件的后缀名改为application.yml
在写yml文件时,一定要注意头顶不能有别的东西,书写格式冒号空格
server:
port: 8888 //更改tomcat的端口号
server:
port: 8888
servlet:
context-path: /java001 //修改访问项目的路径
自定义属性及读取
在配置文件中书写自定义号的标签
offcn_ip:
1.1.1.1
offcn_port:
9999
创建实体类:
@ConfigurationProperties(prefix = "userbody")
@Data//代替 setter 和 getter 、toString
@AllArgsConstructor //有参构造器
@NoArgsConstructor //无參构造器
public class Userbody {
private String name;
private String password;
private String birthday;
private String mobile;
private String address;
}
然后编写Controller类读取自定义属性
package com.offcn.demo.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloConfigController {
@Value("${offcn_ip}") //用@Value注解来获取自定义属性的值
private String offcn_ip;
@Value("${offcn_port}")
private String offcn_port;
@GetMapping("/getvalue")
public String getValue() {
return "ip:"+offcn_ip+" port:"+offcn_port;
}
}
EnableConfigurationProperties注解需要加在调用类上,或者加在启动类SpringbootSimpleApplication上也可以。
springboot构建RESTful
RESTful是一种软件架构风格!
RESTful架构风格规定,数据的元操作,即CRUD(create, read, update和delete,即数据的增删查改)操作,分别对应于HTTP方法:GET用来获取资源,
POST用来新建资源(也可以用于更新资源),
PUT用来更新资源,
DELETE用来删除资源,
这样就统一了数据操作的接口,仅通过HTTP方法,就可以完成对数据的所有增删查改工作
1.POST @PostMapping /users 创建一个用户
2.GET @GetMapping /users 查询用户列表
3.GET @GetMapping /users/id 根据id查询一个用户
4.PUT @PutMapping /users/id 根据id更新一个用户
5.DELETE @DeleteMapping /users/id 根据id删除一个用户
@RestController
@RequestMapping("/user-test")
public class UserController {
private List<User> userList = Collections.synchronizedList(new ArrayList<User>());
//获取全部用户信息
@GetMapping("/")
public List<User> getUserList(){
return userList;
}
//添加用户信息
@PostMapping("/")
public String createUser(User user){
userList.add(user);
return "success";
}
//获取指定用户id信息
@GetMapping("/{id}")
public User getUser(@PathVariable("id") Long id){
for (User user : userList) {
if (user.getId() == id){
return user;
}
}
return null;
}
//修改指定用户id信息
@PutMapping("/{id}")
public String updateUser(@PathVariable("id")Long id,User user){
for (User user1 : userList) {
if (user1.getId() == id){
user1.setName(user.getName());
user1.setAge(user.getAge());
}
}
return "success";
}
//删除指定用户id信息
@DeleteMapping("/{id}")
public String deleteUser(@PathVariable("id")Long id){
userList.remove(getUser(id));
return "success";
}
}
总结一下今天的吧,今天所学的东西还是很基础的,特别是那个入门程序,很重要,因为以后,你没有大量的时间去学习,就是在文档中写写入门程序,然后就去加到自己的代码中了,所以,趁着年轻要多学一点东西。