1、XML
1.1 简介
XML———eXtensible Markup Language(可扩展标记语言)
- 由 W3C 组织发布,目前推荐遵守的是 W3C 组织于 2000 年发布的 XML1.0 规范
- XML 的使命,就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务
- XML 用来传输和存储数据,HTML 用来显示数据
- XML 没有预定义标签,均为自定义标签
1.2 应用
配置文件
如: JavaWeb 中的 web.xml C3P0 中的 c3p0-config.xml
数据存储
保存关系型数据
数据交换格式
如: Ajax WebService
1.3 语法
(1) 语法规则
- XML 声明要么不写,要写就写在第一行,并且前面没有任何其他字符
- 只能有一个根标签
- 标签必须正确结束
- 标签不能交叉嵌套
- 严格区分大小写
- 属性必须有值,且必须加引号
- 标签不能以数字开头
- 注释不能嵌套
<?xml version="1.0" encoding="UTF-8"?> <!-- XML声明-->
<students> <!--只能有一个根标签-->
<student id="1">
<name>张三</name>
<age>18</age>
<gender>不详</gender>
</student>
<student id="2">
<name>李四</name>
<age>18</age>
<gender>男</gender>
</student>
<student id="3">
<name>王红</name>
<age>19</age>
<gender>女</gender>
</student>
</students>
(2) xml 的声明
version 属性指定 XML 版本,固定值是 1.0 encoding 指定的字符集,是告诉解析器使用什么字符集进行解码,而编码是由文本编辑器决定的
(3) CDATA 区
当 XML 文档中需要写一些程序代码、SQL 语句或其他不希望 XML 解析器进行解析的内容时,就可以写在 CDATA 区中
XML 解析器会将 CDATA 区中的内容原封不动的输出
CDATA 区的定义格式:<![CDATA[…]]>
<![CDATA[
select * from emp where salary > 15000
]]>
1.4 解析
(1) 简介
XML 解析是指通过解析器读取 XML 文档,解释语法,并将文档转化成对象 对 XML 的一切操作都是由解析开始的,所以解析非常重要。 Java 平台同时提供了 DOM(DocumentObject Model)和 SAX(SimpleAPI for XML)。
(2) DOM 和 SAX 对比
(3) dom4j
- dom4j 是一个开源 XML 解析包
- dom4j 是一个非常优秀的 JavaXML API,具有性能优异、功能强大和极易使用的特点。现在很多软件都采用 dom4j,例如 Hibernate。
- 使用 dom4j 开发,需导入 dom4j 相应的 jar 包 dom4j-1.6.1.jar
(4) 解析
解析步骤
- 创建解析器
- 通过解析器将文件解析为 Document
- 通过 document 对象获取根元素
- 通过根元素获取所有的子元素,然后操作 ```java
public static void main(String[] args) { try { // 创建解析器 SAXReader reader = new SAXReader();
// 通过解析器将文件解析为Document
Document document = reader.read("students.xml");
// 通过document对象获取根元素
Element element = document.getRootElement();
// 通过根元素获取所有的子元素
List<Element> elements = element.elements();
for (Element e : elements) {
// 获取属性值
String id = e.attributeValue("id");
// 获取文本值
String name = e.elementText("name");
String age = e.elementText("age");
String gender = e.elementText("gender");
Student stu = new Student(id, name, age, gender);
System.out.println(stu);
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//创建一个良好的xml格式 OutputFormat format = OutputFormat.createPrettyPrint(); //写入文件 XMLWriter xmlWriter = new XMLWriter(new FileWriter(“students.xml”),format); xmlWriter.write(document); xmlWriter.close(); 新建 //1.创建文档 Document document = DocumentHelper.createDocument(); //2.添加根元素 Element root = document.addElement(“teachers”); //3.添加元素节点 Element tcEle = root.addElement(“teacher”); Element tcEle2 = root.addElement(“teacher”);
<a name="05732bcf"></a>
#### 1.5 XPath 解析
- XPath 是在 XML 文档中查找信息的语言
- XPath 通过元素和属性进行查找,简化了 Dom4j 查找节点的过程,是 W3C 组织发布的标准。
- 使用 XPath 必须导入**jaxen-1.1-beta-6.jar 包**
- 具体语法见 XPathTutorial(菜鸟必备)
- 两个重要方法:
- document.**selectSingleNode**("/students/student[@id=‘1’]")
- document.**selectNodes**("/students/student")
```java
public static void main(String[] args){
try {
SAXReader reader = new SAXReader();
Document document = reader.read("students.xml");
//xpath解析
Element element = (Element)document
.selectSingleNode("/students/student[@id='3']");
String id = element.attributeValue("id");
String name = element.elementText("name");
System.out.println("id:"+id+" name:"+name);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2、Tomcat 服务器
Web 服务器主要用来接收客户端发送的请求和响应客户端请求。
2.0 其它服务器
Tomcat(Apache):当前应用最广的JavaWeb服务器;
//JBoss(Redhat红帽):支持JavaEE,应用比较广EJB容器 –> SSH轻量级的框架代替
GlassFish(Orcale):Oracle开发JavaWeb服务器,应用不是很广;
Resin(Caucho):支持JavaEE,应用越来越广;
//Weblogic(Orcale):要钱的!支持JavaEE,适合大型项目;
Websphere(IBM):要钱的!支持JavaEE,适合大型项目;
2.1 简介
/*
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
目前最新版本是9.0。
学习时要用的是7.0(比较稳定)。
常用的两个版本是7.0和8.5
*/
2.2 安装目录说明、安装配置
①解压 apache-tomcat-x.x.xx-windows-x64.zip 到非中文无空格目录中 (一般为 7.0 和 8.5)
/*
1、bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe、 tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出GUI窗口启动Tomcat;如果是解压版,那么会有 startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启 动,shutdown.bat用来停止Tomcat;
2、conf:这是一个非常非常重要的目录,这个目录下有四个最为重要的文件:
server.xml:配置整个服务器信息。例如修改端口号
tomcat-users.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户 的角色信息。可以 按着该文件中的注释信息添加tomcat用户,然后就 可以在Tomcat主页中进入Tomcat Manager页面了;
web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务 器之间说 明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览 器响应的 文档是text/html类型 的,这就是一个MIME类型。客户端浏览 器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个 html 文件 了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口 才 对。MIME就是用来说明文档的内容是什么类型的!
context.xml:对所有应用的统一配置,通常我们不会去配置它。
3、lib:Tomcat的类库,里面是一大堆jar文件。如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当 然也可以把应用依赖的jar文件放到这个目录中,这个目录中的jar所有项目都可以共享之,但这样你的应用放 到其他Tomcat下时就不能再共享这个目录下的jar包了,所以建议只把Tomcat需要的jar包放到这个目录下;
logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记 录在日志文件中。
4、temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!
5、webapps:存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat 自带的项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。 http://localhost:8080/examples,进入示例项目。其中examples就是项目名,即文件夹的名字。
6、work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删 除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文 件, 然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。
7、LICENSE:许可证。
8、NOTICE:说明文件。
*/
②如果双击 startup.bat 后窗口一闪而过,请查看 JAVA_HOME 是否配置正确
不要使用这种配置方式:
如:E:\jdk1.8.0_91\bin
使用引用方式:
原因是 Tomcat 需要依赖,如果使用一键配置 java 环境就会不能依赖
如:
JAVA_HOME=E:\jdk1.8.0_91
Path = %JAVA_HOME%/bin
③如果启动失败,提示端口号被占用,则将默认的 8080 端口修改为其他未使用的值,例如 10086 等。
打开:解压目录\conf\server.xml,找到第一个 Connector 标签,修改 port 属性
④注意点
1、java 的运行环境设置为引用方式
2、在 IDE 工具中,添加的 Tomact 是将本地的 Tomcat 复制了一个镜像,并依赖本地的 Tomcat。IDE 中的 wtpwebapps 中的ROOT 没有默认的 index.jsp
3、2.5 基于 XML 进行配置,3.0 基于注解配置
4、修改端口号是在 server.xml 中
5、加入动态 web 项目中的 jar 包,会自动加入删除也会自动删除
6、项目中如果没有在 web.xml 中设置默认的访问页面,依旧可以能访问到。
原因是:在服务器中的 web.xml 也有默认访问设置
7、服务器加载项目的原理:
服务器将项目中的 WebContent 中的所有东西加载进去,把 src 下的 java 代码进行编译后的 class 字节码加载到 web-inf 下的 classes 文件中
8、webcontent 默认为项目的根路径。注册的 servlet 默认在 webcontent
3、HTTP 协议
3.1 简介
Hyper Text Transfer Protocol(超文本传输协议)
它是一种详细规定了浏览器和万维网服务器之间互相通信的规则
3.2 会话方式
长连接:2&3可以重复(1 23 23 23… 4)
短连接:1234。1234。… 循环 ```
3.4 报文
报文:客户端与服务端通信时传输的内容我们称之为报文。
也就是说,当请求和响应时,报文中的内容都可以获取。如:协议、主机名,端口号,项目路径等
(1)请求报文
客户端向服务器端发送的请求内容,称之为请求报文。
* GET请求
* 格式
* 请求行
* 请求头
* 空行
* POST请求
* 格式
* 请求行:请求方式 请求路径 http版本
* 请求头:User-Agent(客户端基本信息) Referer(前一个URL) Cookie
* 空行
* //请求体:携带请求的数据(不同之处)
(2)响应报文
服务器端向客户端做出响应,响应的内容,称之为响应报文。
* 格式
* 响应行:http版本 状态码 状态提示
* 响应头:Content-Type:设置浏览器的解码
* 空行
* 响应体:响应数据
* 状态码
* 200:请求成功
* 404:请求资源未找到
* 500:请求资源找到了,代码写错了。
* 302:重定向
(3)如何使用浏览器进行查看
创建一个动态 web 项目,运行之后,在首页按下 F12 键,然后如下图: