先决条件:
- 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前,如何访问静态资源?
- spring-mvc.xml中配置静态资源访问路径。
- 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.jpg | YES |
| classpath:/public/ | http://locahost:8088/2.jpg | YES |
| classpath:/resources/ | http://locahost:8088/3.jpg | YES |
| classpath:/static/ | http://locahost:8088/4.jpg | YES |
| classpath:/templates/ | http://locahost:8088/5.jpg | NO |
| classpath:/ | http://locahost:8088/6.jpg | NO |
正如上述表格显示的结果一样,对于SpringBoot未定义的路径下是不可以直接访问的。如果我们不想使用默认配置,需要自定义静态资源路径该如何设置呢?
我们可以借助SpringBoot的全局配置文件,像传统方式一样,设置物理路径和映射关系。如下代码:在application.yml中配置
spring:
web:
resources:
static-locations: classpath:/
mvc:
static-path-pattern: /**如上配置之后,6.jpg可以访问,但是其他资源将不可访问。这是因为在 自定义配置静态资源的路径之后,默认配置就会失效。开发中,我们使用默认配置即可。
版权声明:本文为shmily0300377原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。