当前位置: 首页 > 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/945595/

相关文章:

  • 企业网站建设实训小结注册网址要多少钱
  • 做兽设的网站wordpress和dede seo
  • 网站建设著作权成都网站建设成都
  • 崇明网站开发wordpress nodejs版本
  • 建设银行网站储蓄账户查询密码淘宝客做连接网站
  • 怎么样自己做百度网站网站建设亇金手指排名十五
  • 做网站怎么样才能排在首页成品app软件大全
  • 营销型网站的定义如何制作小程序下单
  • 电子商务网站建设与管理实训内容答案企业营销策划服务
  • 昆明网站建设设计全网营销网站建设特点
  • 北京景网站建设做小程序商城
  • 天猫网站做的比京东好五种人适合做运营
  • 网站建设html模板wordpress更新主题报错
  • 玉器网站模版电商软件开发费用
  • 免费搭建业网站千年之恋网页设计作业
  • 天津网站建设流程如何制作公司网页百度发布
  • 教你学做窗帘的网站台州公司网站建设
  • 达州市网站建设推广渠道平台
  • cn网站商丘app开发
  • asp.net网站的404错误页面小型手机网站建设哪家好
  • 建成学校网站北京网站制作的公司哪家好
  • jcms网站建设h5响应式集团网站推荐
  • 做汽车导航仪在什么网站找客户域名注册 网站建设 好做吗
  • 做网站用什么电脑配置推广app的单子都在哪里接的
  • 做公司网站报价宁波网页关键词优化公司
  • 网站设计兼容模式wordpress文章管理模板下载
  • 西安城乡住房建设厅网站首页做ppt的模板的网站
  • 潍坊市网站建设成都 企业 网站制作
  • 寻求南宁网站建设人员网站底部的备案信息修改
  • 企业网站开发丨薇丰台网站制作公司