第二章 使用SpringBoot创建WEB应用程序

先决条件:

  • JDK8及以上,本教程使用Java17
  • Maven3.9
  • IDE:本教程使用 IntelliJ IDEA 2022.3.2

2.1 使用SpringBoot创建WEB应用程序

  • 步骤一:根据上一章的内容,在Idea上,通过使用Spring Initalizr创建项目demo. 

  • 步骤二:编写controller

    • 在src/main/java/com.alice.demo/下创建包 controller,并创建HelloController.java,代码如下:
package com.alice.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return "Hello World!!";
    }
}
  •    打开启动类,点击运行按钮,run 启动项目

  •  启动后如下所示:

  •  打开浏览器访问:http://localhost:8080/hello

关于Controller类

  • @RestController注解 = @Controller 注解 + @ResponseBody注解:该注解表示返回值以正文的形式返回给客户端,而不是页面。
  • @requestMapping(value="/hello",method=RequestMethod.GET)
    • value:对应的请求的地址,例如:/hello
    • method: 请求方式:get post put delete
    • 通用的请求映射注解
    • 实际开发中多数使用特定的注解
      • @GetMapping()接收 get方式的请求 查询操作一般用get

      • @PostMapping()接收Post方式的请求 新增、注册一般用post(文件上传)

      • @PutMapping()接收put方式的请求 修改,更新操作

      • @DeleteMapping() 接收delete方式的请求 删除操作

2.2 SpringBoot访问静态资源

        回顾:使用SpringBoot前,如何访问静态资源?

  1. spring-mvc.xml中配置静态资源访问路径。
  2. SpringMVCConfig配置类中配置静态资源
  • 配置文件配置:
<mvc:resources mapping="/js/**" location="/js" />
<mvc:resources mapping="/css/**" location="/css" />
<mvc:resources mapping="/img/**" location="/img" />
  • 配置类配置:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.alice.demo.controller")
public class SpringMVCConfig implements WebMvcConfigurer{

    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry){
        registry.addReourcesHandler("/js/**").addresourceLocations("/js/");
        registry.addReourcesHandler("/css/**").addresourceLocations("/css/");
        registry.addReourcesHandler("/img/**").addresourceLocations("/img/");
    }
}

当我们使用SpringBoot后,又该如何访问呢?

SpringBoot已经默认配置好了视图解析器,可以通过源码查看,如下:

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
 "classpath:/META-INF/resources/",
 "classpath:/resources/",
 "classpath:/static/",
 "classpath:/public/" };

这段代码是org.springframework.boot.autoconfigure.web.WebProperties.java中定义的。这表明SpringBoot已经配置了静态资源,只要是这四个目录下的资源都被解析为静态资源,可以直接访问。

SpringBoot默认创建了static文件夹,剩余的目录想要测试可以自行创建,其结构如下所示:

对于图片中所列出的路径访问结果如下:

资源访问示例
资源目录                上下文路径        是否可访问
classpath:/META-INF/resources/http://locahost:8088/1.jpgYES
classpath:/public/http://locahost:8088/2.jpgYES
classpath:/resources/http://locahost:8088/3.jpgYES
classpath:/static/http://locahost:8088/4.jpgYES
classpath:/templates/http://locahost:8088/5.jpgNO
classpath:/http://locahost:8088/6.jpgNO

 

 

 

 

 

 

正如上述表格显示的结果一样,对于SpringBoot未定义的路径下是不可以直接访问的。如果我们不想使用默认配置,需要自定义静态资源路径该如何设置呢?

我们可以借助SpringBoot的全局配置文件,像传统方式一样,设置物理路径和映射关系。如下代码:在application.yml中配置

spring:
  web:
    resources:
      static-locations: classpath:/
  mvc:
    static-path-pattern: /**

 如上配置之后,6.jpg可以访问,但是其他资源将不可访问。这是因为在 自定义配置静态资源的路径之后,默认配置就会失效。开发中,我们使用默认配置即可。


版权声明:本文为shmily0300377原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。