栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot项目01之访问静态资源与消息转换器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot项目01之访问静态资源与消息转换器

使用Spring Boot开发项目时,我们只需要按照指定的规则放置我们的静态资源文件,启动项目后就可以轻松地访问这些静态资源。下面就总结一下Spring Boot访问静态资源的相关知识与消息转换器HttpMessageConverter 的相关知识。

1.默认访问路径

Spring Boot 默认存放静态资源文件的目录有四个,这些目录都在类路径下,它们分别是:

  • /META-INF/resources/
  • /resources/
  • /static/
  • /public/

创建一个Spring Boot项目,分别创建以上四个目录。

在进行 web 功能开发时,如果项目中存在静态资源文件,如 HTML、CSS、JavaScript、图片等文件,只要将这些文件放到以上四个文件目录即可正常访问到。接下来,我们在这些文件夹中添加一些静态资源文件测试一下。

  • /META-INF/resources/test.html
  • /resources/pikcacho_pkq.jpg
  • /static/test.css
  • /public/test.js:

test.html




    
    test


    META-INF/resources/test.html


test.css

.test{
    font-size:14px;
}

test.js

function test(){
    console.log("pubilc/rest.js");
}

之后启动项目,分别访问以下路径:

  • /bbs/test.html
  • /bbs/test.css
  • /bbs/test.js
  • /bbs/pikcacho_pkq.jpg

通过下图可以看到,可以通过上面的访问路径直接访问这些静态资源文件。在这里就不一一展示了。

2.修改默认访问路径

其实,前面四个静态资源目录是Spring Boot默认设置的,如果想要更改,可以修改配置文件中的spring.web.resources.static-locations参数。比如,我们想要访问test目录下的静态资源文件,首先需要在 src/main/resources 下新建test目录,将静态资源复制到该目录中。这里将test.html,test.js,pikcacho_pkq.jpg放置在test目录下,将test.css依旧放置在static目录下。

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

继续访问上述访问路径。这时会出现一个情况,test目录下的静态资源都能被访问,static目录下的静态资源无法被访问了。


没办法访问static目录下的静态资源,是由于我们指定了自己的静态资源访问路径后,会覆盖掉原始的默认设置。因此,想要访问static目录下的静态资源,需要将该目录加入到指定的路径中。

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


可以看到,现在又可以访问static目录下的静态资源了。

3.消息转换器HttpMessageConverter

在Spring Boot项目中使用@RequestBody、@ResponseBody 注解进行请求实体的转换和响应结果的格式化输出。以普遍使用的json数据为例,这两个注解的作用分别可以将请求中的数据解析成json并绑定为实体对象以及将响应结果以json格式返回给请求发起者。但Http请求和响应是基于文本的,也就是说在Spring Boot框架内部维护了一套转换机制,也就是我们通常所说的 “将json格式的请求信息转换为一个对象,将对象转换为json格式并输出为响应信息”,这些就是HttpMessageConverter 的作用。

接下来,我们定义一个实体类,并通过 @RequestBody、@ResponseBody 注解进行参数的读取和响应。
SaleGoods.java

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class SaleGoods {
    private Integer id;
    private String goodsName;
    private float weight;
    private int type;
    private Boolean onSale;

}

TestController.java

@Controller
public class TestController {

    @RequestMapping(value = "/get", method = RequestMethod.GET)
    @ResponseBody
    public SaleGoods httpMessageConverterTest(){
        SaleGoods saleGoods = new SaleGoods();
        saleGoods.setGoodsName("小米手机");
        saleGoods.setId(1);
        saleGoods.setOnSale(true);
        saleGoods.setType(1);
        saleGoods.setWeight(300);
        return saleGoods;
    }
}

这里用到了一个Lombok插件,可以让我们在创建实体类时,不用自己手动书写setter、getter、构造方法等。使用Lombok主要分为两步。
1.在idea中安装Lombok插件

2.在pom文件中添加对应依赖


完成上述步骤后,就可以在实体类上通过注解的方式使用该插件,非常好用。

接着,在浏览器地址栏输入http://localhost:8080/bbs/get进行测试,结果如下。

添加@ResponseBody注解后,Spring Boot会直接将对象转换为json格式并输出为响应信息。接下来再写一个案例,使用@RequestBody将前端请求并将参数转换为后端定义的对象,在TestController类中添加的方法如下,请求方法为POST,并使用@RequestBody注解将前端传输的参数直接转换为 SaleGoods 对象。

TestController.java

	@RequestMapping(value = "/post", method = RequestMethod.POST)
    @ResponseBody
    public SaleGoods httpMessageConverterTest2(@RequestBody SaleGoods saleGoods){
        System.out.println(saleGoods.toString());
        saleGoods.setType(saleGoods.getType() + 1);
        saleGoods.setGoodsName("商品名:" + saleGoods.getGoodsName());

        return saleGoods;
    }

由于是POST请求,因此不用直接使用浏览器访问,而是在static中新增了api-test.html页面进行模拟请求,页面当中使用的是 applicaiton/json 格式进行ajax请求,resources/static/api-test.html 代码如下。
api-test.html




    
    
    lou.SpringBoot | 请求测试


接口测试
接口返回数据如下:

发送 Post 请求

启动项目后在浏览器地址栏添加http://localhost:8080/bbs/api-test.html访问页面并在页面输入框中输入对应的数据点击请求按钮,最终获得结果如下。

前端ajax传输的数据是5个字段,到达后端后直接转换为SaleGoods对象。由于消息转换器的存在,对象数据的读取不仅简单而且完全正确,响应时也不用自行封装工具类,使得开发过程变得更加灵活和高效。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/871078.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号