学习springboot第一天~

1. springboot是对spring的缺点进行改善和优化,它的约定大于配置,开箱即用,没有代码生成,也不需要xml文件配置,可以修改属性值来满足需求

2. springboot的入门程序

在idea中创建springboot的项目

(1) 默认有个DemoApplication类,是springboot的启动类

这个类必须要和其他代码的父级齐平,即它与所有类的父级是同一等级

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {//启动类
        SpringApplication.run(DemoApplication.class, args);
    }

}

(2) 在resource目录下有application.properties,是springboot的配置文件

(3) test包下有DemoApplicationTests测试类,是springboot的单元测试

(4) pom.xml文件

 

3. springboot web应用

创建实体bean Car类

导入依赖,安装lombok插件

<dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.6</version>
</dependency>

Car.java

@Data               //set+get
@NoArgsConstructor  //无参构造
@AllArgsConstructor //包含所有参数的有参构造
public class Car {
    private Integer id;
    private String name;
    private Float price;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")//时间格式转化
    private Date createDate;
}

CarController.java

@RequestParam:获取查询参数

@PathVariable:获取路径参数

@RestController  //@RestController:相当于@Controller+@ResponseBody
@RequestMapping("/car")
public class CarController {
  @RequestMapping(
"/findCar")
  public Car findCar(){
    Car car
= new Car(1, "宝马", 123.0F, new Date()); return car;
  }

  @RequestMapping(
"/getCar/{id}")
  public Car findOne(@PathVariable("id")Integer id, @RequestParam("name")String name,@RequestParam("price")Float price){
    Car car
= new Car();
    car.setId(id); car.setName(name);
    car.setPrice(price);
    return car;
  }
}

 

 

获取springboot静态资源

(1) 默认静态资源映射

springboot默认将/**所有访问映射到classpath:/static,classpath:/public,classpath:/WETA-INF/resources

即在resources目录下新建public,static,META-INF/resources,分别放入静态资源文件,可以直接通过访问资源名称,即可访问

Spring Boot 默认会挨个从 public、META-INF/resources、static 里面找是否存在相应的资源,如果有则直接返回

(2) 自定义静态资源访问

第一种方式:可以创建一个配置类

@Configuration   //将一个java类作为一个配置类
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {  
    //将所有d:\\Desktop\\访问都映射到/pathFile/**路径下
    registry.addResourceHandler("/pathFile/**").addResourceLocations("file:d:\\Desktop\\");
  }
}

在浏览器输入:localhost:8080/pathFile/1.jpg即可访问该图片资源

第二种方式:修改配置文件application.properties

编写配置文件中的代码时,一定要细心,我同学就是因为在spring.mvc.static-path-pattern=/**后多写了一个空格,导致一直访问出错,所以在配置时,一定要仔细检查

# 自定义的属性,指定一个路径
web.upload-path=d:/Desktop/
#表示所有的访问都经过静态资源路径
spring.mvc.static-path-pattern=/**
# 配置静态资源路径,这里的配置会覆盖默认访问配置(public、static、resources路径访问将会失效),所以需要配置
spring.resources.static-locations=classpath:/static/,classpath:/public/,classpath:/META-INF/resources/,file:${web.upload-path}

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

 

WebJars

将所有前端的静态文件打包成一个jar包,然后引入此jar包,可以很好的对前端静态资源进行管理

当时在打包时,因为直接把整个项目打成jar包,在本项目中引入后访问,一直报404。项目不能引入自己的jar包?我也不清楚什么原因,反正就是一直报错,就很烦~。

解决:1.一定要新建一个项目,在新项目中引入jar包的依赖,

   2. 要保证新项目中没有该jar包中的静态资源文件

 

 

3.springboot属性配置

修改springboot自动生成的application.properties配置文件的后缀名为yml(yml干嘛的我也不清楚,反正就是要修改成yml,可能更好用?),可以修改默认配置

springboot开发web应用的时候,默认tomcat启动端口号为8080,可以在配置文件中修改访问的端口号:

server:
  port: 8888

注意:port前一定要留有空格,port:后也要留有空格(不留,在idea中port单词会不变色,不能使用)

也可以修改访问路径:

server:
  port: 8888
  servlet:
    context-path: /java0708

此时可以访问:http://localhost:8888/java0708

书写是有顺序的,也有约束,要根据约束写,不然不起作用

也可以自定义属性和读取

在application.yml中定义常量:

offcn_ip: 12.134

编写Controller类,读取自定义的属性:

@RestController
public class TestConController {
    @Value("${offcn_ip}")
    private String offcn_ip;

    @GetMapping("/getValue")
    public String getIP(){
        return "ip:"+offcn_ip;
    }
}

 

实体类属性赋值

在application.yml中配置:

userbody:
  name: offcn
  password: 123456
  birthday: 1992.10.28
  mobile: 13802789765
  address: beijing

不能再配置文件中写中文,会出现乱码,需要通过转码工具,才能输出中文(很麻烦,所以我写的是英文)

创建实体类

@ConfigurationProperties(prefix = "userbody")
public class UserBody {
    private String name;
    private String password;
    private String birthday;
    private String mobile;
    private String address;
}

编写Controller调用属性bean

@RestController
@EnableConfigurationProperties({UserBody.class})
public class HelloControllerBean {
    @Autowired
    UserBody userbody;

    @GetMapping("/getUser")
    public String getUser(){
        return userbody.toString();
    }
}

 

springboot构建RESTful

RESTful是一种软件架构风格!

RESTful架构风格规定,数据的元操作,即CRUD(create, read, update和delete,即数据的增删查改)操作,分别对应于HTTP方法:GET用来获取资源,

POST用来新建资源(也可以用于更新资源),

PUT用来更新资源,

DELETE用来删除资源,

这样就统一了数据操作的接口,仅通过HTTP方法,就可以完成对数据的所有增删查改工作

HTTP协议请求方法

SpringBoot注解

URL

功能说明

POST

@PostMapping

/users

创建一个用户

GET

@GetMapping

/users

查询用户列表

GET

@GetMapping

/users/id

根据id查询一个用户

PUT

@PutMapping

/users/id

根据id更新一个用户

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";
    }
}

 

今天知识有点多,有点杂,很多代码都没有贴出来了,我还是比较懒,就总结了一些重要的知识点,应该不太全面,之后有时间会继续完善的

作为初学者的我,这东西不是太好用,可能用spring习惯了,不过大多的知识还是比较基础的,今天学习比较轻松,明天继续努力啦

posted @ 2019-11-04 22:18  小狐狸敲代码  阅读(188)  评论(1编辑  收藏  举报