zoukankan      html  css  js  c++  java
  • 学习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习惯了,不过大多的知识还是比较基础的,今天学习比较轻松,明天继续努力啦

  • 相关阅读:
    树形DP 统计树中长度为K的路径数量——Distance in Tree
    Linux下使用Vi是方向键变乱码 退格键不能使用的解决方法
    wikioi 1029 中序遍历总数
    struts2前端页面读取Clob/BLOB
    hdu 1712 ACboy needs your help
    HDU 2489 Minimal Ratio Tree (dfs+Prim最小生成树)
    用XMLRPC开服务进行server/client通信
    HDU 1171 Big Event in HDU
    VS2012调试执行,网页打不开
    解决安装OpenShift Client Tools时提示的dl/import (LoadError)问题
  • 原文地址:https://www.cnblogs.com/zhuqianfang-fox/p/11795354.html
Copyright © 2011-2022 走看看