SpringBoot(静态资源访问+Rest风格请求)

1.静态资源访问

1.基本介绍

image-20240314082509360

image-20240314084424993

2.快速入门
1.新建一个maven项目

image-20240314082645795

2.引入依赖 pom.xml
  <!--导入springboot父工程-->
  <parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <version>2.5.3</version>
  </parent>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>
3.创建文件目录

image-20240314083331337

4.Application.java
package com.sun.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author 孙显圣
 * @version 1.0
 */
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

5.创建四个可以存放静态资源的文件夹

image-20240314084509273

6.通过浏览器访问(这四个都可以访问)

3.注意事项和细节
1.关于静态资源的访问管理

image-20240314085711613

2.修改静态资源的访问前缀
1.创建配置文件 resources/application.yml 修改静态资源的访问前缀,此时通过 根路径/sun/文件名 访问
spring:
  mvc:
    static-path-pattern: /sun/**
2.结果展示

image-20240314090110090

3.修改静态资源的默认存放文件夹为类路径下的sun111/
1.application.yaml
spring:
  web:
    resources:
      static-locations: [classpath:/sun111/]
2.一旦自己设置了默认存放文件夹在,则默认的那四个文件夹就会被覆盖
4.关于静态资源的访问路径和存放路径
  • 静态资源的存放路径默认有四个,可以进行修改,但是修改之后就会覆盖原来的存放路径
  • 静态资源的访问路径,默认是根路径,也是可以修改
  • 存放路径就是存放静态资源的路径,而访问资源只需要关注访问路径即可,不需要关心静态资源放在哪里

2.Rest风格请求处理

1.应用实例
1.需求分析

image-20240314092512794

2.MonsterController.java
package com.sun.springboot.controller;

import org.springframework.web.bind.annotation.*;

/**
 * @author 孙显圣
 * @version 1.0
 */
@RestController //作为Controller注入容器,并将返回值转化为json字符串返回
public class MonsterController {

    @GetMapping("/get")
    public String getMonster() {
        return "getMonster";
    }

    @PostMapping("/post")
    public String postMoster() {
        return "postMoster";
    }

    @PutMapping("/put")
    public String putMonster() {
        return "putMonster";
    }

    @DeleteMapping("/delete")
    public String deleteMonster() {
        return "deleteMonster";
    }
}

3.postman测试

image-20240314093708822

image-20240314093720630

2.使用表单进行Rest风格的请求
1.基本介绍

2.application.yml 配置隐藏方式过滤器
spring:
  mvc:
    hiddenmethod:
      filter:
        enabled: true
3.restRqeuest.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--1.如果是put或者delete,method必须是post-->
<form action="/put" method="post">
    <!--2.如果是put或者delete,使用隐藏域来传递rest请求类型-->
    <input type="hidden" name="_method" value="put">
    <input type="submit" value="submit">
</form>
</body>
</html>
4.浏览器测试

image-20240314095906621

3.关于不同注解标识的类中的方法中return的处理
1.@RestController标识的类
  • 如果是这个注解标识的类,则表示将返回的结果转换成json字符串然后返回到浏览器
  • 并不会返回到视图解析器
2.@Controller标识的类
  • 如果是这个注解标识的类
    • 首先查看是否有对应的Controller处理,比如return hello,则找 /hello 的Controller
    • 如果没有则交给视图解析器处理
  • 如果视图解析器没办法处理就会报错404
4.@Controller标识的类return的实例
1.编写一个由Controller注解标识的类
package com.sun.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author 孙显圣
 * @version 1.0
 * 演示将结果返回到视图解析器
 */
@Controller
public class MonsterController {
    @GetMapping("/go")
    public String goView() {
        System.out.println("跳转到视图解析器");
        return "hello"; //如果没有配置视图解析器,会查找是否有/hello的Controller,注意,这里的/hello是上下文路径
    }

    //使用一个测试的hello
    @GetMapping("/hello")
    @ResponseBody //将结果以json的形式返回到浏览器
    public String hello() {
        return "没有配置视图解析器时会找到我这个Controller";
    }
}

2.测试
  • 可以看到访问的go,但是找到了/hello的Controller(因为没有配置视图解析器)

image-20240314113142029

3.配置一个视图解析器 application.yml
  • 这里配置的视图解析器会查找/xxx.html,这里的/指的是根目录
spring:
  mvc:
    view: #配置了视图解析器
      suffix: .html #后缀
      prefix: / #前缀

4.测试
  • 可以看到一旦配置了视图解析器,不会再去找Controller

image-20240314113246098

5.@Controller标识的类return的总结
1.如果没有配置视图解析器
  • 会根据返回的字符串并在前面拼接/,来查找对应的Controller
  • 此时的/是上下文路径
2.如果配置了视图解析器
  • 不会再去匹配Controller
  • 会根据视图解析器的前缀和后缀去拼接返回的字符串
  • 根据静态资源的访问路径去查找到对应的静态资源
3.关于SpringBoot的 /
  • 只有在Controller中的/才是上下文路径
  • 其余的/全指的是服务器根目录http:localhost:8080/

相关推荐

  1. SpringbootRESTful风格

    2024-03-14 16:38:12       19 阅读
  2. SpringBoot 静态资源映射

    2024-03-14 16:38:12       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 16:38:12       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 16:38:12       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 16:38:12       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 16:38:12       20 阅读

热门阅读

  1. sublime 快捷键大全

    2024-03-14 16:38:12       14 阅读
  2. 编译器 编译原理

    2024-03-14 16:38:12       19 阅读
  3. web学习笔记(三十一)

    2024-03-14 16:38:12       16 阅读
  4. C++继承

    C++继承

    2024-03-14 16:38:12      19 阅读
  5. 3月13日做题总结(Linux真题)

    2024-03-14 16:38:12       19 阅读
  6. 第十四届蓝桥杯 三国游戏

    2024-03-14 16:38:12       21 阅读
  7. SpringMVC【框架】

    2024-03-14 16:38:12       19 阅读
  8. C 练习实例75-输入一个整数,并将其反转后输出

    2024-03-14 16:38:12       19 阅读
  9. Clickhouse数据库应用

    2024-03-14 16:38:12       18 阅读
  10. 环境安装篇 之 golang环境安装

    2024-03-14 16:38:12       20 阅读
  11. js代码新开一个浏览器窗口

    2024-03-14 16:38:12       20 阅读