数据交换格式与springioc底层实现_第1页
数据交换格式与springioc底层实现_第2页
数据交换格式与springioc底层实现_第3页
数据交换格式与springioc底层实现_第4页
数据交换格式与springioc底层实现_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SpringIOC一、课程目XMLJava反射机制二、什么是数据交换格三、数据交换格式用场移动端(安卓、IOS)http协议+JSONrestful风格。Http协议+JSONxmlWebServicehttp+xmlPC端服务器是接口是怎么设计的?四、数据交换格JSONJSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比较的复杂,而且需要编写大段的代码,所以客户端和服务器的数据交换格式往往通过JSON{"sites":{{"sites":{":""url":"{":""url":}]}JSON:JavaScript对象表示法(JavaScriptObjectNotation)(:)分隔的属性名和属性值。这是典型的字典表示形式,也再次表明javascript里的对象就是字典结构。不管多么复杂的对象,都可以用一句JSON代码来创建并赋值。在JSON/值对包括字段名JSONJSONJSONjson简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为对象.key获取属性值,这个属性值的类型可以是数字、字符串、数组、对象几种。方式和所有语言中一样,使用索引获取,字段值的类型可以是数字、字符串、数组、对象几种。JSONfastjsonjarfastjson-1.1.43或引入mavenpublicpublicstaticfinalObjectparse(Stringtext);//JSONparseJSONObjectpublicstaticfinalJSONObjectparseObject(Stringtext)//把JSON文本parse publicstaticfinal<T>TparseObject(StringtextClass<T>clazz);//把JSON文本parseJavaBeanpublicstaticfinalJSONArrayparseArray(Stringtext);//把JSON文本parsepublicstaticfinal<T>List<T>parseArray(Stringtext,Class<T>clazz);//JSONparseJavaBeanpublicstaticfinalStringtoJSONString(Objectobject);//将JavaBean序列化为JSON文publicstaticfinalString object,booleanprettyFormat);// JavaBeanJSON文本publicstaticfinalObjecttoJSON(ObjectjavaObject);JavaBeanstaticstaticStringjsonStrsites\":[{\"name\":\" publicstaticvoidmain(String[]args){JSONObjectjsonObject=newJSONObject();将json字符串转为JSONObjectjsonStrObject=jsonObject.parseObject(jsonStr);JSONArrayjsonArray=jsonStrObject.getJSONArray("sites");for(Objectobject:jsonArray){JSONObjectstObject=(JSONObject)object;Stringname=stObject.getString("name");Stringurl=stObject.getString("url");System.out.println(name+"---"+url);}}JSONObjectJSONObjectjsonObject=newJSONArrayjsonArray=newJSONArray();JSONObjectJSONArrayjsonArray=newJSONArray();JSONObjectstObjectnewJSONObject();stObject.put("name","蚂蚁课堂");stObject.put("url","http:/jsonObject.put("sites",XMLXML全称为可扩展的标记语言。主要用于描述数据和用作配置文件。XML文档在逻5个部分组成XML:指明所用XML的版本、文档的编码、文档的独立性信息文档类型:XML文档所用的DTD元素:由开始、元素内容和结束构处理指令:通过处理指令来通知其他应用程序来处理非XMLXML文档的根元素被称为文档元素,它和在其外部出现的处理指令、注释等作为文档实体的子节XML<?xml<?xmlversion="1.0"encoding="UTF-<student1<><student2<><?xmlversion="1.0"encoding="UTF-8"?>作xmlxml和编码,utf-8编XMLDom4jSaxdom4j不适合大文件的解析,因为它是一下子将文件加载到内存中,所以有可能出现内存溢出,sax是基于来对xml进行解析的,所以他可以解析大文件的xml,也正是因为如此,所以dom4j可以对xmlxml文件进行一些灵活(crud)操作就用dom4j。dom4j解析XML过程是通过获取对象然后继续获取各个节点以及属性等操作因此获取== Elementroot1.SAXReaderreader=SAXReaderreader=new =reader.read(newFile("XXXX.xml"));3.XML文本内容获取对StringStringxmlStr= =Helper.parseText(xmlStr);xml<?xmlversion="1.0"<?xmlversion="1.0"encoding="UTF-<student1<><student2<>publicstaticpublicstaticvoidmain(String[]args)SAXReadersaxReader=newExceptionread=saxReader.read(newFile("E://work//spring-Element ement= }staticpublicvoidgetNodes(Elementroo ement){System.out.println("当前节点名称:"+roo 获取属性List<Attribute>attributes=roo for(Attributeattribute:attributes){System.out.println("属性attribute.getName}if ement.getTextTrim().equals(""))}ement.getName()+"--" tor<Element>elementI tor=roo while(elementI tor.hasNext()){Elementnext= }}注意获取当前项目路径4.2XMLJSONJSON是轻量级交换格式,xml所有很多互联网公司都会使用json作为数据交换格式xml。五、Java反射机Java2.通过反射机制java对象的属性,方法,构造方法等Jdbc加载驱动Spring 式Classc1=//java中每个类型都有class属性.Classc2=Employee.class;Employeee=newClassc3e.getClassc3(e的运行时类是Class<?>Class<?>forName=创建此ClassUser的无参数构造方法.ObjectnewInstance=forName.newInstance();Class<?>forName=Class.Class<?>forName=Class.forName("com.itmayiedu.entity.User");Constructor<?>constructor=forName.getConstructor(String.class,UsernewInstance=(User)constructor.newInstance("123",允许私有成Class<?>forName=ObjectnewInstance=userIdFielddeclaredField=//设置值declaredField.set(newInstance123");Useruser=(User)newInstance;六、手写SpringIOC框什么是SpringIOC,就是把每一个bean(实体类)与bean(实体了)之间的关系交给第容器进行管理<bean<beanid="user1"<propertyname="userId""<beanid="user2"<propertyname="userId"<propertyname="userNamevalue="张三 SpringIOCbeanXML配置文件否有符合的id,Element元素,开始创建对象,class属性, 下的property,并对属性赋值.注意,需要单独处理int,float类型的属性.因为在xml配置中这些属性都是以字符串的形式来配置的,因此需要额外处理.如果属性property有ref属性,说明某个属性的值是一个对象,那么根据id(ref属性的值)去获取ref对应的对象,再给属性赋值.publicpublicclassUserprivateStringuserId;privateStringuserName;publicStringgetUserId(){return}publicvoidsetUserId(StringuserId){this.userId=userId;}publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}}Javaimportimportimportimport;importimportimport**@classDesc:功能描述 @author 日上午@version: publicclassClassPathXmlApplicationContext{privateStringxmlPath;*@paramspringxmlpublicClassPathXmlApplicationContext(StringxmlPath){this.xmlPath=xmlPath;}publicObjectgetBean(StringbeanId)throwsException解析xmlSAXReadersaxReader=newSAXReader();read=null;try//从项目 路径read=}catch(Exceptione){}if(read==null){returnnull;}Elementroot=read.getRoo List<Element>elements=root.elements();if(elements.size()<=0){return}Objectoj=for(Elementelement:elements)Stringid=element.attributeValue("id");if(StringUtils.isEmpty(id)){return

if(!id.equals(beanId)){thrownewException("使用beanIdbeanId}获取实体beanclassStringbeanClass=Class<?>forNameClass=Class.forName(beanClass);oj=forNameClass.newInstance();List<Element>attributes=element.elements();if(attributes.size()<=0){return}for(Elementet:attributes)Stringname=et.attributeValue("name");Stringvalue=et.attributeValue("value");Fieldfield=forNameClass

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论