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

南通网站建设方案书厦门网站建设建站中心

南通网站建设方案书,厦门网站建设建站中心,个人首页模板,wordpress本地编辑目录 一、数据响应与内容协商 1.1、响应json 1.1.1、返回值解析器 1.1.2、springMVC支持的返回值类型 1.1.3、HttpMessageConverter原理 1.2、内容协商 1.2.1、引入依赖 1.2.2、 postman分别测试返回json和xml 1.2.3、开启浏览器参数方式内容协商功能 1.3、自定义 Message…目录 一、数据响应与内容协商 1.1、响应json 1.1.1、返回值解析器 1.1.2、springMVC支持的返回值类型 1.1.3、HttpMessageConverter原理 1.2、内容协商 1.2.1、引入依赖 1.2.2、 postman分别测试返回json和xml 1.2.3、开启浏览器参数方式内容协商功能 1.3、自定义 MessageConverter 一、数据响应与内容协商 1.1、响应json !--web场景--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency 给前端自动返回json数据 1.1.1、返回值解析器 try {this.returnValueHandlers.handleReturnValue(returnValue, getReturnValueType(returnValue), mavContainer, webRequest); }Override public void handleReturnValue(Nullable Object returnValue, MethodParameter returnType,ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {HandlerMethodReturnValueHandler handler selectHandler(returnValue, returnType);if (handler null) {throw new IllegalArgumentException(Unknown return value type: returnType.getParameterType().getName());}handler.handleReturnValue(returnValue, returnType, mavContainer, webRequest); } RequestResponseBodyMethodProcessor       Override     public void handleReturnValue(Nullable Object returnValue, MethodParameter returnType,             ModelAndViewContainer mavContainer, NativeWebRequest webRequest)             throws IOException, HttpMediaTypeNotAcceptableException, HttpMessageNotWritableException {         mavContainer.setRequestHandled(true);         ServletServerHttpRequest inputMessage createInputMessage(webRequest);         ServletServerHttpResponse outputMessage createOutputMessage(webRequest);         // Try even with null return value. ResponseBodyAdvice could get involved.         // 使用消息转换器进行写出操作         writeWithMessageConverters(returnValue, returnType, inputMessage, outputMessage);     }   1、 返回值处理器判断是否支持这种类型返回值supportsReturnType。 2、返回值处理器调用handleReturnValue进行处理。 3、RequestResponseBodyMethodProcessor 可以处理返回值标了ResponseBody 注解的。 1. 利用 MessageConverters 进行处理 将数据写为json 1、内容协商浏览器默认会以请求头的方式告诉服务器他能接受什么样的内容类型2、服务器最终根据自己自身的能力决定服务器能生产出什么样内容类型的数据3、SpringMVC会挨个遍历所有容器底层的 HttpMessageConverter 看谁能处理 1、得到MappingJackson2HttpMessageConverter可以将对象写为json 2、利用MappingJackson2HttpMessageConverter将对象转为json再写出去。 1.1.2、springMVC支持的返回值类型 ModelAndView Model View ResponseEntity  ResponseBodyEmitter StreamingResponseBody HttpEntity HttpHeaders Callable DeferredResult ListenableFuture CompletionStage WebAsyncTask 有 ModelAttribute 且为对象类型的 ResponseBody 注解 --- RequestResponseBodyMethodProcessor  1.1.3、HttpMessageConverter原理 MessageConverter规范 HttpMessageConverter: 看是否支持将 此 Class类型的对象转为MediaType类型的数据。 例子Person对象转为JSON。或者 JSON转为Person 默认的MessageConverter  0 - 只支持Byte类型的 1 - String 2 - String 3 - Resource 4 - ResourceRegion 5 - DOMSource.class \ SAXSource.class) \ StAXSource.class \StreamSource.class \Source.class 6 - MultiValueMap 7 - true 8 - true 9 - 支持注解方式xml处理的。 最终 MappingJackson2HttpMessageConverter 把对象转为JSON利用底层的jackson的objectMapper转换的 1.2、内容协商 1.2.1、引入依赖 !--xml依赖--dependencygroupIdcom.fasterxml.jackson.dataformat/groupIdartifactIdjackson-dataformat-xml/artifactId/dependency 1.2.2、 postman分别测试返回json和xml 1.2.3、开启浏览器参数方式内容协商功能 1.3、自定义 MessageConverter /*** 自定义Converter*/ public class CJCMessageConverter implements HttpMessageConverterPersons {Overridepublic boolean canRead(Class clazz, MediaType mediaType) {return false;}Overridepublic boolean canWrite(Class clazz, MediaType mediaType) {return clazz.isAssignableFrom(Persons.class);}/*** 服务器要统计所有的MessageConverter都能写出那些类容* return*/Overridepublic ListMediaType getSupportedMediaTypes() {return MediaType.parseMediaTypes(application/x-cjc);}Overridepublic Persons read(Class? extends Persons clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {return null;}Overridepublic void write(Persons persons, MediaType contentType, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {//自定义协议数据写出String data persons.getUserName();persons.getAge(); persons.getBirth();//写出去OutputStream body outputMessage.getBody();body.write(data.getBytes());} }/*** 自定义内容协商策略* param configurer*/Overridepublic void configureContentNegotiation(ContentNegotiationConfigurer configurer) {HashMapString, MediaType mediaTypeHashMap new HashMap();mediaTypeHashMap.put(json,MediaType.APPLICATION_JSON);mediaTypeHashMap.put(xml,MediaType.APPLICATION_XML);mediaTypeHashMap.put(cjc,MediaType.parseMediaType(application/x-cjc));//指定支持解析那些参数对应的那些类型ParameterContentNegotiationStrategy parameterStrategy new ParameterContentNegotiationStrategy(mediaTypeHashMap);HeaderContentNegotiationStrategy headerStrategy new HeaderContentNegotiationStrategy();configurer.strategies(Arrays.asList(parameterStrategy,headerStrategy));}Overridepublic void extendMessageConverters(ListHttpMessageConverter? converters) {converters.add(new CJCMessageConverter());}
http://www.hkea.cn/news/14433038/

相关文章:

  • 招聘织梦网站合肥室内设计公司有哪些
  • 展示型网站建设报价做网站维护承包合同
  • 淘宝网站c#设计怎么做如果做公司网站
  • 济南咨询行业网站开发免费的产品推广平台
  • 网站维护有多长时间中国最大的外贸平台
  • 自己设计的网站如何推广3d建模要学多久
  • 网站建设的目的和作用网站推广方式有哪些
  • 网站建设 蜀美网络百度seo排名优化是什么
  • 粉末涂料 技术支持 东莞网站建设关于网站建设的调查问卷
  • 南宁seo网站排名优化主页页面
  • 免费二维码制作网站手机建站网
  • wordpress+更新+慢网站建设哈尔滨网站优化4
  • 织梦免费网站模块下载地址长沙软件公司排行榜
  • wap织梦手机网站站长统计 网站统计
  • 设计公司灰白色调网站phpstudy 做网站
  • 高端网站开发地址西安公司注册代理
  • 江苏省建设安全协会网站wordpress后台登不进去
  • 合肥市建设通网站茂名公司制作网站
  • 做网站月薪资多少钱凡科网后台登录
  • 网站建设代码大全wordpress编辑php.ini
  • 求一个全部用div做的网站验证码注册
  • 能打开各种网站的浏览器微信登录入口官网
  • 建设户外腰包网站冷门行业做网站的优势
  • 青岛网站产品图片设计新手怎样做网络营销推广
  • 环保局网站设计方案新加坡做网站的价格
  • 网站白名单是什么意思婚庆公司收费价格表
  • 网站禁止火车头采集郑州市网站制作公司
  • 建设部四库一平台查询网站高端网站建设一般多少钱
  • 如何做好网站宣传网站建设全
  • 洛阳建设部官方网站cms 网站后台内容管理系统模板