当前位置: 首页 > news >正文

苏州知名网站建设设计公司高端企业建站公司

苏州知名网站建设设计公司,高端企业建站公司,搭建交流平台,建设工程市场价格信息springBoot--web--http缓存机制测试 前言1、多端内容适配基于请求头内容协商(默认开启)基于请求参数内容协商(需要开启) 2、默认返回json数据3、设置返回xml数据导入jackson-dataformat-xml包在类文件中添加注解 JacksonXmlRootEl…

springBoot--web--http缓存机制测试

  • 前言
  • 1、多端内容适配
    • 基于请求头内容协商(默认开启)
    • 基于请求参数内容协商(需要开启)
  • 2、默认返回json数据
  • 3、设置返回xml数据
    • 导入jackson-dataformat-xml包
    • 在类文件中添加注解 @JacksonXmlRootElement
  • 4、基于请求参数内容协商功能,默认参数是format
  • 5、内容协商的原理--httpMessageConverter
    • @ResponseBody 由HttpMessageConverter处理
  • 6、增加yaml内容协商
    • 导入yaml文件
    • 把测试对象写成yaml
    • 在配置中增加yaml类型
    • 在config下配置一个把对象转为yaml的类
    • 定义类
    • 效果

在这里插入图片描述

前言

一套系统适配多端数据返回

1、多端内容适配

基于请求头内容协商(默认开启)

客户想服务器发送请求,携带http标准的Accept请求头
Accept:application/json text/xml text/yaml
服务端根据客户端请求头期望的数据类型进行动态返回

基于请求参数内容协商(需要开启)

发送请求 Get/projects/spring-boot?format=json
匹配到@GetMapping(*/projects/spring-boot*)
根据参数协商,优先返回json类型数据(需要开启参数匹配设置)
发送请求Get/projects/spring-boot?format=xml 优先返回xml类型数据

2、默认返回json数据

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

 @GetMapping("/person")public Person person(){Person person = new Person();person.setId(1l);person.setUserName("张三");person.setEmail("2aaa@qq.com");person.setAge(18);return person;}

3、设置返回xml数据

导入jackson-dataformat-xml包

在这里插入图片描述

<dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.15.3</version></dependency>

在类文件中添加注解 @JacksonXmlRootElement

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4、基于请求参数内容协商功能,默认参数是format

在配置文件中配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、内容协商的原理–httpMessageConverter

@ResponseBody 由HttpMessageConverter处理

在这里插入图片描述
在这里插入图片描述

6、增加yaml内容协商

导入yaml文件

在这里插入图片描述

把测试对象写成yaml

public static void main(String[] args) throws JsonProcessingException {Person person = new Person();person.setId(1l);person.setUserName("张三");person.setEmail("2aaa@qq.com");person.setAge(18);YAMLFactory factory = new YAMLFactory().disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER);ObjectMapper mapper = new ObjectMapper(factory);String s = mapper.writeValueAsString(person);System.out.println(s);}

在配置中增加yaml类型

#增加一种新的内容类型
spring.mvc.contentnegotiation.media-types.yaml=text/yaml

在config下配置一个把对象转为yaml的类

在这里插入图片描述

package com.atguigu.boot304demo.config;import com.atguigu.boot304demo.component.MyYamlHttpMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.CacheControl;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import java.util.List;
import java.util.concurrent.TimeUnit;/*** @author jitwxs* @date 2023年10月20日 10:18*/
//@EnableWebMvc //禁用boot的默认设置
@Configuration //这是一个配置类,给容器中放一个WevMvcConfigurer组件,就能自定义底层
public class MyConfig {@Beanpublic WebMvcConfigurer webMvcConfigurer(){return new WebMvcConfigurer() {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/static/**").addResourceLocations("classPath:/a/", "classpath:/b/").setCacheControl(CacheControl.maxAge(1180, TimeUnit.SECONDS));}@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {converters.add(new MyYamlHttpMessageConverter());}};}
}

定义类

在这里插入图片描述

package com.atguigu.boot304demo.component;import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator;
import lombok.Data;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.AbstractHttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;/*** @author jitwxs* @date 2023年10月21日 12:50*/
public class MyYamlHttpMessageConverter extends AbstractHttpMessageConverter<Object> {private ObjectMapper objectMapper = null;public MyYamlHttpMessageConverter(){
//        支持哪种媒体类型super(new MediaType("text","yaml", Charset.forName("UTF-8")));YAMLFactory factory = new YAMLFactory().disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER);this.objectMapper = new ObjectMapper(factory);}@Overrideprotected boolean supports(Class<?> clazz) {
//        只要对象类型,不要基本类型return true;}@Override  //@RequestBodyprotected Object readInternal(Class<?> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {return null;}@Override  //@ResponseBody   //把对象怎样写出来protected void writeInternal(Object o, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
//        try-with写法,自动关流
//        try(OutputStream os = outputMessage.getBody()){
//            this.objectMapper.writeValue(os, o);
//        }OutputStream body = outputMessage.getBody();try {this.objectMapper.writeValue(body,o);}finally {body.close();}}
}

效果

在这里插入图片描述

http://www.yayakq.cn/news/181407/

相关文章:

  • 会议专题网站建设报价单网站建设创业经历
  • 市桥有经验的网站建设福建住房和城建设网站
  • 北京网站关键词优化公旅游网站设计源代码
  • 百度如何把网站做链接百讯网站建设
  • 手机网站 图片自适应wordpress msn登陆
  • 怎么做专门卖二手衣服的网站免费地方网站
  • 网站建设需求登记表 免费下载黄岩建设局台州网站建设
  • 门户网站建设思维导图一个网站开发流程图
  • 企业网站服务器多少钱app网站建设需要什么软件
  • 网站如何做直播轮播威海建设集团网站
  • 精美网站建设公司国外可以做推广的网站
  • 免费推广网站2023重庆未来科技网站建设
  • 网站开发完整视频做百度百科的网站
  • 国外网站建设什么价格红酒公司网站建设模板6841
  • 网站升级方案重庆网络营销
  • 上海网站制作衫网上购物商城网站建设
  • 男女怎样做那个视频网站深圳十大装饰公司名单
  • 网站开发页面怎么进wordpress磁力链插件
  • 做引流网站怎么赚钱赚谁的钱找代写文章写手
  • 网站 视觉上wordpress的tag转数字链接
  • 营销型网站跟云网站杭州网络科技公司有哪些
  • ppt那个网站做的好在网上做翻译的网站
  • 手机英语网站跨境电商开店流程及费用
  • seo网站沙盒期google在线网页代理
  • 广东住房与城乡建设厅网站焦作网站建设设计
  • 龙华做棋牌网站建设哪家公司便宜做封面哪个网站好
  • 武冈 网站建设开发公司把已经出售的房子一房二卖卖给股东个人
  • 网站建设设计说明书wordpress小程序怎么发布文章
  • 做照片的网站贵阳网站建设平台
  • 新世纪建设集团有限公司网站我想学网站建设