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

如何开发微网站免费网页模板素材网站

如何开发微网站,免费网页模板素材网站,网站内链分析,seo服务平台选择目录 一、数据响应与内容协商 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.w-s-a.com/news/884686/

相关文章:

  • 重庆网站制作公司 广州天成网络技术有限公司
  • 佛山网站改版wordpress 是否有后门
  • 如何承接网站建设外包wordpress产品布局
  • 洛阳建站洛阳市网站建设视觉设计专业
  • 婚恋网站建设分析网站建设硬件需求
  • 北京做网站电话wordpress如何换图片
  • 电影网站做cpa深圳信息网
  • 单县网站建设优化大师电脑版官网
  • 番禺区住房和建设局物业网站浦东新区网站设计
  • 外贸网站外包WordPress仿牌
  • 如何设计网站logohtml5开发
  • 金坛建设银行总行网站网站开发费用如何记账
  • 贵阳企业网站设计制作湛江知名网站建设电话
  • 网站建设安全性高清效果图网站
  • 上海网站排名推广黄山公司做网站
  • 全国网站建设公司实力排名单页面网站建设
  • 网站建设方案 规划wordpress 要备案吗
  • 一个完整的网站 技术网站建设中 敬请期待.
  • 如何建一个公司的网站网上怎么推广公司产品
  • 十大旅游电子商务网站影楼网站制作
  • 深圳网站建设代理商网业打开慢的原因
  • 旅游网站经营模式在屈臣氏做网站运营
  • 做管理信息的网站com域名查询
  • 免费推广网站推荐外贸推广平台哪个好
  • 腾宁科技做网站399元全包企业校园网站建设
  • 海外医疗兼职网站建设公司取名字大全免费
  • 龙口市规划建设局网站vi设计和品牌设计的区别
  • 企业网站的总体设计网站建设评审验收会议主持词
  • 网站建设完成推广响应式网站设计开发
  • 电商网站用php做的吗网站开发流程可规划为那三个阶段