本帖最后由 小石姐姐 于 2018-5-23 14:35 编辑
xml
Ø XML的作用: * 传输 和 存取数据. * 软件的配置文件. Ø XML的使用: * XML的语法. 【XML的语法】 Ø XML的基本语法: * XML必须有关闭标签 * 区分大小写 * 属性需要有引号 * 标签必须正确嵌套. Ø XML的文档声明 * 文档声明:通常出现在XML的第一行第一列的位置!!! * 写法: *<?xml 属性名=”属性值” 属性名=”属性值” ...?> *version :必须的. 使用”1.0” *encoding :字符集. 是使用浏览器打开的时候采用的默认的字符集的编码. *standalone :描述XML文档是否需要依赖其他的文件. Ø XML的注释 * <!-- XML的注释 --> Ø XML的元素 * 元素(标签)的命名规范:
***** 名称中不能包含冒号(:) Ø XML的属性 * 属性的名称规范与元素一致. ***** 属性需要使用引号! Ø XML的特殊字符和CDATA区 * XML的特殊字符:
* XML的CDATA区:(CDATA:Character Data) * <![CDATA[ 内容 ]]> 【XML的解析】 Ø XML的解析:从XML文档中获得想要的数据(通过代码完成的.) Ø XML的解析的方式(*****): * DOM解析:DOM:DocumentObject Model. * SAX解析:SimpleApi for XML. * DOM和SAX的区别:
Ø 针对这两种解析的方式,不同的公司提供了不同的API的实现. * JAXP :SUN公司提供的一套XML的解析的API. * JDOM :开源组织提供了一套XML的解析的API-jdom. * DOM4J :开源组织提供了一套XML的解析的API-dom4j. * pull :主要应用在Android手机端解析XML. Ø DOM4J的入门案例步骤: * 【步骤一】导入jar包.dom4j-1.6.1.jar * 【步骤二】创建解析器 * 【步骤三】解析文档获得代表文档的Document对象. * 【步骤四】获得跟节点. * 【步骤五】从跟节点下查找其他的节点. * 代码实现: @Test /** * 获得元素的内容:查询的操作. */ publicvoid demo1() throws Exception{ // 创建解析器 SAXReader reader = new SAXReader(); // 解析XML的文档 Document document =reader.read("xml/demo1.xml"); // 获得跟节点 Element root = document.getRootElement(); System.out.println(root.getName()); // 查找跟节点下的子节点. element() elements(); Element pElement =root.element("person"); // 查找的是第一个person元素 // root.elements("person").get(1);// 查找的是第二个person元素 Element nElement =pElement.element("name"); Element aElement =pElement.element("age"); Element sElement = pElement.element("sex"); System.out.println(nElement.getText()); System.out.println(aElement.getText()); System.out.println(sElement.getText()); } Ø XPath: * dom4j支持XPath的jar包. *jaxen-1.1-beta-6.jar * dom4j的XPath支持的API: * Listdocument.selectNodes(String xPath); * Nodedocument.selectSingleNode(String xPath); * 代码: @Test /** * DOM4J的XPath的写法: */ publicvoid demo2() throws Exception{ // 创建解析器: SAXReader reader = new SAXReader(); // 解析XML返回Document对象. Document document = reader.read("xml/demo1.xml"); /*List<Node> list =document.selectNodes("//name"); for (Node node : list) { Elementelement = (Element) node; System.out.println(element.getText()); }*/ List<Node> list =document.selectNodes("//person['@id']"); for (Node node : list) { Elementelement = (Element) node; System.out.println(element.attributeValue("id")); } } 1.1.1 代码实现:【步骤一】:将基础班的Socket编写的代码复制到工程中. 【步骤二】:新建xml.在conf/server.xml 【步骤三】:使用DOM4J解析XML public class MyServer { publicstatic void main(String[] args) throws Exception { // 解析XML: // 创建解析器 SAXReader reader = new SAXReader(); // 解析XML文档: Document document =reader.read("conf/server.xml"); Element element =(Element)document.selectSingleNode("//Connector['@port']"); String port =element.attributeValue("port"); // ServerSocket 对象可以监听端口 ServerSocket serversocket = newServerSocket(Integer.parseInt(port)); while(true) { Socketsocket = serversocket.accept(); // 等待客户端的连接请求,一旦有请求过来,就结束阻塞,返回客户端对象 //System.out.println(socket.getInetAddress()); // 一旦有客户来访问, 就另开一个新线程去提供服务, main线程继续等待下一个客户的连接 newThread(new MyService(socket)).start(); } } } 1.1.2 总结:1.1.2.1 XML的约束:Ø XML的约束的额概述: * 什么是XML的约束 :就是用来约束XML的文档中可以出现哪些标签,不能出现哪些标签,标签中是否有顺序,出现的次数. * XML的约束 :用来规范XML的写法. ***** XML的约束的种类及区别? *DTD 和 Schema : * 区别: 1.DTD语法是自成一体的.Schema语法就是XML的语法. 2.Schema的语法就是XML的语法所以更容易被解析器所解析. 3.Schema支持名称空间. 4.Schema有比DTD更加强大的语义和语法的约束. Ø DTD的语法 :(了解) * DTD的引入方式: * 内部的DTD: <!DOCTYPEpersons [ ]> * 外部的DTD: * 一种本地DTD: <!DOCTYPEpersons SYSTEM "unknown.dtd"> * 一种网络DTD: <!DOCTYPEpersons PUBLIC "//UNKNOWN/" "unknown.dtd"> * DTD的语法: * 元素: *<!ELEMENT 元素名 元素类型> * 元素类型: * EMPTY * ANY * 子元素 * 是否有序: 使用 逗号(,)或者竖线(|)表示. * 出现的次数:?:零次或一次 +:一次或多次 *:零次或多次 * PCDATA * 属性: *<!ATTLIST 元素名称 属性名称属性的类型 属性的约束> * 属性的类型: * ID类型:表示属性值需要是唯一的. * CDATA类型:普通的字符串. * 枚举: *属性的约束: Ø Schema的语法:(了解) <?xml version="1.0"encoding="UTF-8"?> <!-- 名称空间:一个XML只能引入一个DTD约束文档.使用了Schema约束XML文档,一个XML可以引入多个Schame的约束!!! 如果再多个Schema文档中定义了相同的属性名称 该怎么办? * 名称空间类似于java中的package.通过名称空间区分 标签或属性来自于哪个文档的!!!通常名称空间唯一的不重复的即可.一般情况下使用一个URL地址表示一个名称空间. xmlns :xmlname sapace .代表当前的文档应用的名称空间. targetNameSpace :目标名称空间. elementFormDefault : --> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.itheima.com/ee25" elementFormDefault="qualified"> <!-- 复杂标签 --> <elementname="persons"> <!-- 复杂类型 --> <complexType> <sequencemaxOccurs="unbounded" minOccurs="1"> <element name="person"> <complexType> <sequence> <!--简单标签 --> <elementname="name" type="string"></element> <elementname="age" type="int"></element> <elementname="sex" type="string"></element> </sequence> <attribute name="id"type="string" use="required"/> </complexType> </element> </sequence> </complexType> </element> </schema> 1.2 案例二:使用Tomcat发布一个WEB项目.1.2.1 需求:有一个web项目,需要通过tomcat服务器被其他人访问到. 1.2.2 分析:1.2.2.1 技术分析:【软件的架构】 Ø C/S架构的软件: * Client / Server 客户端和服务器端的软件. 都是需要在PC端安装的软件. 比如 QQ,迅雷,暴风... * 优点:效果炫,一部分代码写到客户端(速度快). * 缺点:服务器端更新,客户端都需要更新. Ø B/S架构的软件: * Browser / Server 浏览器端和服务器端的软件. 不需要安装到PC端,只需要有一个浏览器即可. 比如 京东,网银,WEBQQ,WEB迅雷... * 优点:服务器端更新,客户端浏览器不需要进行更新. * 缺点:效果不炫,所有的代码运行都在服务器端,导致服务器压力过大. * 效果:使用HTML5,CSS3可以做出很炫效果. * 服务器端压力:搭建服务器的集群.而且还有AJAX技术. 【WEB的资源】 Ø 静态资源: * HTML,CSS,JS,图片... Ø 动态资源: * PHP : * ASP : * Servlet/JSP : 【服务器】 Ø 硬件:其实就是一台配置很高的电脑. Ø 软件:必须在一台电脑上安装服务器软件.这台电脑称为是WEB服务器. 【常见WEB服务器】 Ø Apache :发布PHP的.LAMP:Linux Apache MySQL PHP. Ø IIS :发布ASP的. Ø WebSphere :IBM公司研发,收费的大型服务器软件,支持EE的所有的开发规范. Ø WebLogic :BEA公司研发,收发的大型服务器软件,支持EE的所有的开发规范. Ø Tomcat :Apache组织研发,免费的小型的服务器软件,支持Servlet/JSP的开发规范. Ø JBoss : 【WEB动态资源目录结构】 website |-----静态资源 |-----WEB-INF |-----web.xml :必须的 |-----classes :可选的 |-----lib :可选的 1.2.3 案例实现:1.2.3.1 Tomcat的安装:【下载Tomcat】 【安装Tomcat】 解压即可. 【了解Tomcat的目录结构】
* bin :tomcat的执行的文件. * conf :tomcat的配置文件. * lib :tomcat运行的需要的jar包. * logs :tomcat的运行的日志文件. * temp :tomcat产生临时文件存放的路径. * webapps :tomcat发布的web项目的路径. * work :tomcat运行JSP的时候,JSP翻译成Servlet的代码存放的路径. 1.2.3.2 发布一个WEB项目到Tomcat中.Ø 发布一个WEB工程到Tomcat中共有三种方式: * 1.直接将工程copy到tomcat/webapps下. * 2.配置tomcat虚拟路径: * 3.配置tomcat虚拟路径: 【方式一:直接将项目copy到webapps下】 * 将工程复制到webapps即可. 【方式二:配置tomcat的虚拟路径-不推荐】 * 在tomcat/conf/server.xml文件中进行配置: * 在<Host>标签下配置: *<Context path="/itheima" docBase="C:/website"/> 【方式三:配置tomcat的虚拟路径-推荐】 * 在tomcat/conf/Catalina/localhost/xxx.xml * 配置<ContextdocBase="C:/website"/> * xxx作为虚拟路径的名称. 1.2.4 总结:1.2.4.1 使用STS工具发布一个WEB工程. 1.2.4.2 Tomcat常见问题:【没有配置JAVA_HOME引发tomcat一闪消失】 * 一定要配置JAVA_HOME环境变量. 【端口号冲突的问题】 * 一种:将占用端口的应用结束. * netstat-ano * 打开任务管理器结束: * 二种:修改自身应用的端口号. *tomcat/conf/server.xml
|