Springboot

控制器

  • Spring Boot提供了

    • @Controller@RestController
    • 两种注解来标识此类负责接收和处理HTTP请求
  • 如果请求的是页面和数据,使用@Controller注解即可,如果只是请求数据则可以使用@RestController注解

路由映射

  • @RequestMappingvalue属性用于匹配URL映射,value支持简单表达式@RequestMapping("/user")
  • @RequestMapping支持使用通配符匹配URL,用于统一映射某些URL规则类似的请求: @RequestMapping("/getJson/*json"),当在浏览器中请求/getJson/a.json或者/getJson/b.json时都会匹配到后台的Json方法
  • @RequestMapping的通配符匹配非常简单实用,支持“*” “?” “**”等通配符
  • 符号“*”匹配任意字符,符号“**”匹配任意路径,符号“?”匹配单个字符
  • 有通配符的优先级低于没有通配符的,比如/user/addjson比/user/*json优先匹配
  • “**”通配符的优先级低于有"*"通配符的

参数传递

  • @RequestParam将请求参数绑定到控制器的方法参数上,接收的参数来自HTTP请求体或请求url的QueryString,当请求的参数名称与Controller的业务方法参数名称一致时,@RequestParam可以省略
  • @PathVaraible: 用来处理动态的URL,URL的值可以作为控制器中处理方法的参数
  • @RequestBody接收的参数是来自requestBody中,即请求体。一般用于外理非Content-Type: application/x-www-form-urlencoded编码格式的数据比如: application/ison、application/xml等类型的数据

@RequestParam

(@RequestParam(value = "nickname",required = false) String name)

静态资源访问

  • 使用IDEA创建Spring Boot项目,会默认创建出classpath:/static/目录,静态资源一般放在这个目录下即可

  • 如果默认的静态资源过滤策略不能满足开发需求,也可以自定义静态资源过滤策略

  • 在application.properties中直接定义过滤规则和静态资源位置:

    spring.mvc.static-path-pattern=/static/**

    spring.web.resources.static-locations=classpath:/static/

  • 过滤规则为/static/**,静态资源位置为classpath:/static/

  • image-20231016162226573

文件上传原理

  • 表单的enctype属性规定在发送到服务器之前应该如何对表单数据进行编码
  • 当表单的enctype=”application/x-www-form-urlencoded”(默认)时form表单中的数据格式为: key=value&key=value
  • 当表单的enctype=”multipart/form-data”时,其传输数据形式如下image-20231017144329760

SpirngBoot实现文件上传功能

  • Spring Boot工程嵌入的tomcat限制了请求的文件大小,每个文件的配置最大为1Mb,单次请求的文件的总数不能大于10Mb。

  • 要更改这个默认值需要在配置文件(如application.properties)中加入两个配置

    1
    2
    spring.servlet,mu1tipart.max-fiTe-size=10MB
    spring.servlet.mu1tipart.max-request-size=10MB
  • 当表单的enctype=”multipart/form-data”时,可以使用MultipartFile 获取上传的文件数据,再通过transferTo方法将其写入到磁盘中

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    @RestcontroTTer
    public class FileContro1ler {
    private static final String UPLOADED_FOLDER = System.getproperty("user.dir") + "/upload/";

    @postMapping("/up")
    public string upload(string nickname, MultipartFile f) throws IOException {
    System.out.printIn("文件大小:" + f.getsize());
    system.out.printIn(f.getContentType());
    System.out.printn(f.getoriginalFilename());
    System.out.printIn(System.getProperty("user.dir"));
    saveFile(f);
    return "上传成功";
    }

    public void saveFile(MultipartFile f) throws IOException {
    File upDir = new File(UPLOADED_FOLDER);
    if (!upDir.exists()) {
    upDir.mkdir();
    }
    File file = new File(UPLOADED_FOLDER + f.getoriginalFilename());
    f.transferTo(file);
    }
  • @在RequestMapping(value = @"/uploa",method = RequestMethod.POST)中需要些POST方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!--  MyBatisPlus依赖  -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<!-- mysql驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 数据库连接池druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.28</version>
</dependency>
  • 前后端多采用Jason格式
1
2
3
4
5
public String query(){
List<User> list= userMapper.find();
System.out.println(list);
return "查询";
}

只需做出如下更改

1
2
3
4
5
public List query(){
List<User> list= userMapper.find();
System.out.println(list);
return list ;
}