xml(了解) xml介绍 可扩展标记语言,类似html xml的标签可以自定义 宗旨:存储数据 xml的作用: 1.交换数据--不同语言之间 2.配置文件--项目开发和框架最常见的☆ 书写规范 xml必须有根元素(只有一个) xml标签必须有关闭标签 xml标签对大小写敏感 xml的属性必须加引号 特殊字符必须转义 > < & 空格/回车/制表符在xml中都是文本节点 xml必须正确地嵌套 我们将符合上述书写规则的XML叫格式良好的XML文档 xml的组成 声明: 作用:告诉计算机我是一个xml文件、 格式: <?xml version=‘1.0‘ encoding=‘utf-8‘?> 注意: 必须是xml文档第一行 必须顶格写 元素: 格式: <xxx></xxx> <xxx/> 注意: xml元素必须遵循以下命名规则: 名称可以含字母、数字以及其他的字符 名称不能以数字或者标点符号开始 名称不能以字符"xml"(或者XML、Xml)开始 名称不能包含空格 可使用任何名称,没有保留的字词 属性: 格式: <xxx key=‘value‘/> 注意: 属性值必须用引号 注释: 和html一样 <!-- --> CDATA: 在页面原样输出 格式: <![CDATA[ 原样输出的内容 ]]> xml的约束: 约束的作用: 规定xml文档中可以出现哪些元素和属性,且规定了他们出场顺序了、 约束的分类: DTD约束:struts hibernate SCHEMA约束:spring DTD约束: DTD和xml的关联: 三种: 内部关联: 格式:<!DOCTYPE 根元素 [语法]> 外部关联--系统关联: 格式:在xml中写法 <!DOCTYPE 根元素 SYSTEM "dtd的路径"> 外部关联--公共关联 格式:在xml中写法 <!DOCTYPE 根元素 PUBLIC "DTD名称" "dtd的路径"> 注意:dtd文件的后缀名为.dtd dtd的组成: 元素: 格式1:<!ELEMENT 元素名称 (内容)> 格式2:<!ELEMENT 元素名称 类别> 类别: #PCDATA 元素的文本节点为字符串,不能出现元素 用的时候一般用()引起来 符号: *:出现的次数>=0 +:出现的次数>=1 ?:出现的次数0|1 |:或者 ():分组 ,:顺序 属性: 格式: <!ATTLIST 元素名称 属性名称 属性类型 默认值> 属性的类型: ID:唯一 CDATA:字符串 默认值: #RUQUIRED:属性必须出现 #IMPLIED:属性可选出现 SCHEMA约束: 一个xml可以出现多个schema约束,但是一个一个xml只能出现一个dtd约束 后缀名.xsd a.xsd table width height b.xsd table row col 在一个xml文档中若出现以上情况,可以 通过名称空间解决。 名称空间的写法: xmlns=‘aaa‘ --指的是a.xsd xmlns:别名=‘bbb‘ --指的是b.xsd 例如: xmlns:b=‘bbb‘ <table> 代表来自a.xsd文件中 <b:table> 代表的是来自b.xsd文件 注意: 没有别名的名称空间只能出现一个。 作用:确定元素的约束来自哪个约束文档 和xml文件的关联: 1.编写xsd文件。 xsd文件本质也是一个xml文件,只是后缀名为.xsd targetNamespace="http://www.example.org/b1" --给自己的约束文件起个名称,方便xml文件使用。 注意: 名称可以自定义 建议使用唯一的,域名/自定义的内容 targetNamespace="http://www.example.com/taotao" 再次确定根元素是哪个 2.根据xsd编写xml 首先写根元素 然后添加约束 xml的解析: 常用的解析方式: DOM:一次性将xml文档加载到内存中,形成一棵树,可以对节点进行crud操作 SAX:逐行解析。只使用于R操作。查询效率高 常用的解析技术: JAXP(SUN) JDOM DOM4J pull xstream 重点:dom4j的查询操作 使用步骤: 1.导入jar包(解压zip包 在项目中导入dom4j-1.6.1.jar) 2.xml读取到内存 SAXReader reader=new SAXReader(); Dodument doc=reader.read(xml文件路径); 3.先获取根节点 Element rootEle=doc.getRootElement(); 4.通过根节点获取其他的节点 常用的方法: List<Element> bookList=rootEle.elements(); 遍历list获取到每一个bookEle String value=bookEle.attributeValue("category"); String text=booEle.elementText("author"); 获取子元素 Element title=bookEle.element("title"); 扩展方法(了解) Iterator<Element> i=rootEle.elementIterator(); --获取的每一个子节点 获取其他的节点: 属性:String value=book.attribure("category").getValue(); 文本:String text=book.element("title").getText(); xpath查询操作 使用步骤: 1.导入jar包 (dom4j的jar包和jaxme-api-0.3.jar) 2.获取document Dodument doc=new SAXReader().read(xml路径); 3.可以通过匹配表达式获取其他节点 常用方法: list selectNodes(匹配表达式):返回多个 element selectSingleNode(匹配表达式):返回第一个 tomcat(☆) web的相关概念: web: 单词:网络资源 web资源分类: 静态的web资源:内容不发生改变的资源 动态的web资源:内容可能发生改变的资源 资源的开发技术: 静态的开发技术:html css 动态的开发技术:servlet jsp 软件的架构: c/s:客户端和服务器 例如:qq feiq b/s:浏览器和服务器 例如:网页游戏 网页qq web通信基于请求响应机制。 常见web服务器: 服务器:硬件服务器和软件服务器 常见的web服务器: 服务器名称 公司 特点 weblogic oracle 大型收费web服务器,支持javaee所有规范 websphere IBM 大型收费web服务器,支持javaee所有规范 tomcat apache 中小型免费web服务器,支持servlet和jsp规范 下载:apache 安装:解压zip文件 运行:D:\apache-tomcat-7.0.77\bin\startup.bat 双击 测试:localhost:8080 浏览器出现汤姆猫 常见问题: JAVA_HOME配置 端口冲突: a) 修改tomcat安装目录下conf文件夹中server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" useBodyEncodingForURI="true" IEncoding="utf-8" URIEncoding="UTF-8"/> 有时候,会把端口改成80 b) 在cmd打开的窗口中输入 netstat -aov 关闭: 方式1:关闭cmd窗口 方式2:执行命令 shutdown.bat 方式3:ctrl+c tomcat目录结构: bin:存放可执行程序的目录 conf:存放配置文件的目录 lib:存放tomcat运行和项目运行所需的jar包 logs:存放日志文件的目录,主要查看catalina temp:临时文件 webapps: ☆项目存放的目录 work:☆jsp运行时产生的java文件和字节码文件 web项目目录结构: myweb(目录) | |---WEB-INF(目录:通过浏览器访问不到,但是可以通过java程序访问到。) | | | |--lib(目录:存放项目所用的jar包) | |--classes(目录:存放java文件对应的class文件) | |--web.xml(文件,项目的核心配置文件) | |---html js css | web项目部署(发布项目):也叫虚拟目录映射 方式1.将项目放在tomcat/webapps下即可(最常用) 方式2.修改tomcat/conf/server.xml 在125行左右 host标签下,添加如下代码(不推荐) <Context path="/项目名" docBase="项目的路径"/> 例如: <Context path="/my" docBase="d:/myweb"/> 访问路径: localhost:8080/项目名/资源 例如:localhost:8080/my/html/1.html 方式3.在tomcat/conf/catalina/localhost下新建一个xml文件,文件的名称即为项目名称 先写xml文件,添加下面的代码 <Context docBase="项目的路径"/> 例如: <Context docBase="d:/myweb"/> 文件名称为m.xml 访问的路径: localhost:8080/m/html/1.html tomcat和eclipse整合 war包: 特点:tomcat可以自动解压war包 后缀名:.war包 方式1:通过eclipse 方式2:进入项目目录,选择所有文件,添加到压缩文件,选择zip格式,将后缀名改成.war包 方式3:在cmd中进入项目目录,运行 jar -cvf 名称 .war */ http(理解) 超文本传输协议。 http协议的默认端口:80 http是一个无状态的协议。 请求: 浏览器发送到服务器 组成部分:请求行 请求头 请求体 请求行:请求信息的第一行 格式:请求方式 请求的资源路径 协议/版本 例如:GET/javaee_day08/1.html HTTP/1.1 请求头: 格式:key:value 重点: Cookie Referer(防盗链) IF-Modified-Since Accept-Encoding 请求体:和请求头之前有一个空行 只有post请求才有请求体 get:localhost/web?username=zhangsan&password=1234 post:localhost/web 请求体中就会出现:username=zhangsan&password=1234 响应: 服务器返回浏览器 组成部分:响应行 响应头 响应体 响应行: 响应信息第一行 格式:协议/版本 状态码 状态码的说明 例如:HTTP/1.1 200 OK 状态码: 1xx:正在处理 2xx:响应成功 3xx:还需进一步处理 常见的3xx: 302:跳转 304:没有修改,读缓存 4xx:客户操作错误 常见的404: 5xx:服务器错误 常见的500(代码错误) 响应头: 格式:key:value 重点: Set-Cookie Location:跳转方向 Content-Type Refresh:刷新 Content-Disposition:上传下载 响应体:响应体和响应头之间有一行空行 就是页面要显示的内容