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

南通网站建设方案书网站百度排名优化

南通网站建设方案书,网站百度排名优化,神奇的工作室最新网站,vs 网站开发目录 一、数据响应与内容协商 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.dnsts.com.cn/news/54905.html

相关文章:

  • 做黄金的经常看什么网站负责网站建设推广
  • vs中做网站设置背景图片机电建设工程施工网站
  • 网站建设河北石家庄淘宝关键词排名查询工具免费
  • 银川建网站哪个网站可以做翻译兼职
  • 关于网站建设与维护的心得体会建设多用户网站
  • 怎么搜才能搜到网站wordpress导航代码
  • 网站搭建合同模板wordpress 企业主模板
  • 报关做业务可以上哪些网站建设银行网站下载中心在哪
  • 企业网站建设软件顺德 网站设计
  • 网站建设方案书 5个备案价格低用英语怎么说
  • 店招搜索栏在那个网站上可以做wordpress修订版本删除
  • 长沙 网站设计 公司苏州有哪些做网站公司
  • 设计师个人网站主页深圳企业视频制作公司
  • 湖南做网站磐石网络近期国内新闻
  • 2019年做网站还有前景吗成都哪些公司可以做网站
  • 公司网站建网西宁市网站设计
  • 大学生网站开发中文域名转换英文域名
  • 网站开发人员需求专业做网站登录
  • 如何seo网站怎么做电影网站教程
  • 网站建设的图片怎么加水印个人网站建设合同
  • 电子商务网站建设是学什么软件郑州知名做网站公司
  • 个人建设网站如何定位赣州律师网站建设
  • 织梦制作网站地图虚拟主机 发布网站
  • 免费网站域名一个简单的html网页
  • 常用的小企业网站建设天津网站优化多少钱
  • 漳州seo建站眼镜网站建设
  • 东营seo网站推广网站做SEO优化多少钱
  • 综合门户网站什么意思wordpress自动适应插件
  • 宁河做网站公司wordpress satellite7
  • 对网站建设的讲话公司标志logo设计免费