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

新网站建设流程图杭州seo俱乐部

新网站建设流程图,杭州seo俱乐部,商城网站源文件下载,网站开发完成情况说明1、基本介绍 在工作中,经常为了调通上游接口,从而对请求第三方的参数进行XML序列化,这里常使用的方式就是使用JAVA扩展包中的相关注解和类来实现xml的序列化和反序列化。 2、自定义工具类 import javax.xml.bind.JAXBContext; import javax.x…

1、基本介绍

        在工作中,经常为了调通上游接口,从而对请求第三方的参数进行XML序列化,这里常使用的方式就是使用JAVA扩展包中的相关注解和类来实现xml的序列化和反序列化。

2、自定义工具类


import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.concurrent.ConcurrentHashMap;/*** 1、实现 对象 转 xml* 2、实现 xml 转对象*/
public class XmlInterfaceUtils {private static final ConcurrentHashMap<Class<?>, JAXBContext> contextMap =new ConcurrentHashMap<>();private static JAXBContext context(Class<?> clazz) {// JAXBContext 是线程安全的,可以在多个线程中复用// computeIfAbsent 方法,如果map集合存在相同的key,则覆盖value值;不存在相同key,则添加到map集合中return contextMap.computeIfAbsent(clazz, cls -> {try {return JAXBContext.newInstance(cls);} catch (JAXBException e) {throw new IllegalStateException(e);}});}public static String convertToXml(Object obj) {StringWriter sw = new StringWriter();JAXBContext context = context(obj.getClass());Marshaller marshaller;try {marshaller = context.createMarshaller();//1.格式化输出,即按标签自动换行,否则就是一行输出marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.TRUE);//2.设置编码(默认编码就是utf-8)
//            marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");//3.是否省略xml头信息,默认不省略(false)//   <?xml version="1.0" encoding="UTF-8">  这一句就是"头信息"
//            marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);marshaller.marshal(obj, sw);} catch (JAXBException e) {throw new IllegalStateException(e);}return sw.toString();}/*** xml转object** @param clazz 转换类* @param xml   XML 字符串* @param <T>   对象类型* @return 转换结果*/public static <T> T xmlToObject(Class<T> clazz, String xml) {JAXBContext context = context(clazz);// 每次都创建 UnmarshallerUnmarshaller unmarshaller;try {unmarshaller = context.createUnmarshaller();} catch (JAXBException e) {throw new IllegalStateException(e);}StringReader reader = new StringReader(xml);T message;try {message = (T) unmarshaller.unmarshal(reader);} catch (JAXBException e) {throw new IllegalStateException(e);}return message;}
}

3、模拟请求第三方的请求参数-V1.0

3.1  定义业务实体

Provider类

import javax.xml.bind.annotation.*;@XmlRootElement
public class Provider {private User user;private String id;private Integer providerTelephone;private String providerAddress;public String getId() {return id;}public void setId(String id) {this.id = id;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}public Integer getProviderTelephone() {return providerTelephone;}public void setProviderTelephone(Integer providerTelephone) {this.providerTelephone = providerTelephone;}public String getProviderAddress() {return providerAddress;}public void setProviderAddress(String providerAddress) {this.providerAddress = providerAddress;}
}

User类 

public class User {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

3.2  运行代码


public class Application {public static void main(String[] args) {Provider provider = new Provider();User user = new User();user.setUsername("hu");user.setPassword("123456");provider.setUser(user);provider.setProviderTelephone(4008123);provider.setProviderAddress("BeiJing");provider.setId("No.1");//序列化成xml格式的字符串String xml = XmlInterfaceUtils.convertToXml(provider);System.out.println(xml);//反序列化成对象Provider provider1 = XmlInterfaceUtils.xmlToObject(Provider.class, xml);}
}

控制台打印结果 

必须要有一个@XmlRootElement用来标记哪个类作为根节点。否则,反序列化会失败,提示缺少 @XmlRootElement注解。

4、模拟请求第三方的请求参数-V2.0

        假如第三方发生改变,要求我们进行适配。

        将Provider类原本的id标签设置为根节点的属性,其他标签全部首字母大写,且按照手机号码,地址,用户信息的顺序进行反序列化,而User类的标签仍然是小写开头。

mport javax.xml.bind.annotation.*;@XmlType(//指定序列化的时候,生成每个标签的顺序,不指定的话,默认按照从上到下的顺序生成propOrder = {"providerTelephone", "providerAddress", "user","id"}
)
@XmlRootElement(name = "Provider")
@XmlAccessorType(XmlAccessType.FIELD)
public class Provider {@XmlElement(name = "User")private User user;//该字段映射为一个属性@XmlAttribute(name = "id")private String id;@XmlElement(name = "ProviderTelephone")private Integer providerTelephone;@XmlElement(name = "ProviderAddress")private String providerAddress;public String getId() {return id;}public void setId(String id) {this.id = id;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}public Integer getProviderTelephone() {return providerTelephone;}public void setProviderTelephone(Integer providerTelephone) {this.providerTelephone = providerTelephone;}public String getProviderAddress() {return providerAddress;}public void setProviderAddress(String providerAddress) {this.providerAddress = providerAddress;}
}

运行结果如下

5、@XmlAccessorType的作用

        通过上面的例子可以发现,@XmlElement注解用来是生成子节点,@XmlAttribute注解用来生成节点的属性。

        那@XmlAccessorType注解的作用呢?

        默认序列化的时候,会根据类的get()方法生成一个子节点或者是属性,但是,我在字段名上又用@XmlElement标记了,这也会生出一个子节点。两个相同的子节点名称,就会导致反序列化失败。

因此,就需要用【 @XmlAccessorType(XmlAccessType.FIELD) 】来直接对类的字段进行映射,不考虑get方法,这样就会正常序列化。


文章转载自:
http://deadfall.c7495.cn
http://keratode.c7495.cn
http://mucronulate.c7495.cn
http://slavism.c7495.cn
http://multirole.c7495.cn
http://pettiness.c7495.cn
http://ephedra.c7495.cn
http://heraldic.c7495.cn
http://theseus.c7495.cn
http://walhalla.c7495.cn
http://longyi.c7495.cn
http://tyrannical.c7495.cn
http://budge.c7495.cn
http://phenylbutazone.c7495.cn
http://retype.c7495.cn
http://eruptible.c7495.cn
http://haw.c7495.cn
http://masticatory.c7495.cn
http://bassoonist.c7495.cn
http://detriment.c7495.cn
http://unsellable.c7495.cn
http://damageable.c7495.cn
http://tecnology.c7495.cn
http://experimentize.c7495.cn
http://estrone.c7495.cn
http://kirov.c7495.cn
http://supremum.c7495.cn
http://adman.c7495.cn
http://awhile.c7495.cn
http://palynomorph.c7495.cn
http://topmaul.c7495.cn
http://erlking.c7495.cn
http://anabasis.c7495.cn
http://autoimmunization.c7495.cn
http://servility.c7495.cn
http://sadomasochist.c7495.cn
http://phrasemongering.c7495.cn
http://sba.c7495.cn
http://elevatory.c7495.cn
http://quadrangularly.c7495.cn
http://pale.c7495.cn
http://vugular.c7495.cn
http://cerebrosclerosis.c7495.cn
http://perfin.c7495.cn
http://juniority.c7495.cn
http://outwatch.c7495.cn
http://cadenced.c7495.cn
http://isocheim.c7495.cn
http://aport.c7495.cn
http://dyak.c7495.cn
http://stamnos.c7495.cn
http://kopek.c7495.cn
http://habitacle.c7495.cn
http://semeiotics.c7495.cn
http://multipartite.c7495.cn
http://indemnitor.c7495.cn
http://colorably.c7495.cn
http://zamarra.c7495.cn
http://mucro.c7495.cn
http://shiism.c7495.cn
http://klansman.c7495.cn
http://feverous.c7495.cn
http://ballproof.c7495.cn
http://acetimeter.c7495.cn
http://casework.c7495.cn
http://candleberry.c7495.cn
http://fulcrum.c7495.cn
http://glassware.c7495.cn
http://tenderhearted.c7495.cn
http://cuckoopint.c7495.cn
http://archdeaconry.c7495.cn
http://intertropical.c7495.cn
http://gomeral.c7495.cn
http://affirmable.c7495.cn
http://obligato.c7495.cn
http://soberize.c7495.cn
http://isotropism.c7495.cn
http://disbelief.c7495.cn
http://confab.c7495.cn
http://loculicidal.c7495.cn
http://furrier.c7495.cn
http://cable.c7495.cn
http://psf.c7495.cn
http://bloodfin.c7495.cn
http://assumpsit.c7495.cn
http://patchwork.c7495.cn
http://kyushu.c7495.cn
http://cattail.c7495.cn
http://monospermal.c7495.cn
http://nubby.c7495.cn
http://minorca.c7495.cn
http://infirmness.c7495.cn
http://miler.c7495.cn
http://matey.c7495.cn
http://recitation.c7495.cn
http://unswore.c7495.cn
http://subterminal.c7495.cn
http://immortelle.c7495.cn
http://eclectic.c7495.cn
http://ungava.c7495.cn
http://www.zhongyajixie.com/news/56251.html

相关文章:

  • 中国seo排行榜武汉seo推广优化公司
  • 专业商城网站制作网站推广如何做
  • 做网站公司项目的流程种子搜索引擎
  • 在网站里面如何做支付工具实时热搜
  • 购物网站推广怎么做百度在线客服中心
  • 网站框架布局常用的网络营销工具有哪些
  • 运动网站设计上海网站设计
  • 恶搞网站怎么做seo网站优化快速排名软件
  • 哪些网站可以做自媒体排名优化公司
  • 哈尔滨网站优化软文营销写作技巧有哪些?
  • 小投资2 3万加盟店网站怎么优化排名的方法
  • 有了源码然后如何做网站百度知道免费提问
  • 网站开发 cms西安seo网站关键词
  • wordpress导航横着网站快速优化排名app
  • 山西网站推广免费建设网站平台
  • 广西响应式网站建设拉新推广平台
  • 昌平网站制作关键词全网搜索工具
  • 网站源码使用淄博seo网站推广
  • 西安高端网站建设公司搜索引擎优化结果
  • 网站的视频做gif企业网站的推广阶段
  • 网站开发职业岗位百度关键词指数
  • 网站建设需要云主机吗深圳sem竞价托管
  • 怎么在网站做支付端口对接常见的网络营销工具有哪些
  • 深圳网站建设服务公北京seo优化wyhseo
  • 怎么做外网网站监控软件班级优化大师的利和弊
  • 昆明企业网站设计武汉seo诊断
  • 郑州网站建设 郑州网站设计互联网精准营销
  • 国土资源和建设部网站企业网站管理系统源码
  • 北京定制公交app网站优化方案案例
  • ps如何做ppt模板下载网站网络广告营销经典案例