1、XML

1.1 简介

XML———eXtensible Markup Language(可扩展标记语言)

  • 由 W3C 组织发布,目前推荐遵守的是 W3C 组织于 2000 年发布的 XML1.0 规范
  • XML 的使命,就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务
  • XML 用来传输和存储数据,HTML 用来显示数据
  • XML 没有预定义标签,均为自定义标签

    1.2 应用

  1. 配置文件

    如: JavaWeb 中的 web.xml C3P0 中的 c3p0-config.xml

  2. 数据存储

    保存关系型数据

  3. 数据交换格式

    如: Ajax WebService

1.3 语法

(1) 语法规则
  1. XML 声明要么不写,要写就写在第一行,并且前面没有任何其他字符
  2. 只能有一个根标签
  3. 标签必须正确结束
  4. 标签不能交叉嵌套
  5. 严格区分大小写
  6. 属性必须有值,且必须加引号
  7. 标签不能以数字开头
  8. 注释不能嵌套
    1. <?xml version="1.0" encoding="UTF-8"?> <!-- XML声明-->
    2. <students> <!--只能有一个根标签-->
    3. <student id="1">
    4. <name>张三</name>
    5. <age>18</age>
    6. <gender>不详</gender>
    7. </student>
    8. <student id="2">
    9. <name>李四</name>
    10. <age>18</age>
    11. <gender></gender>
    12. </student>
    13. <student id="3">
    14. <name>王红</name>
    15. <age>19</age>
    16. <gender></gender>
    17. </student>
    18. </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)。

XML&Tomcat - 图1

(2) DOM 和 SAX 对比

XML&Tomcat - 图2

(3) dom4j
  • dom4j 是一个开源 XML 解析包
  • dom4j 是一个非常优秀的 JavaXML API,具有性能优异、功能强大和极易使用的特点。现在很多软件都采用 dom4j,例如 Hibernate。
  • 使用 dom4j 开发,需导入 dom4j 相应的 jar 包 dom4j-1.6.1.jar
    (4) 解析
    解析步骤
  1. 创建解析器
  2. 通过解析器将文件解析为 Document
  3. 通过 document 对象获取根元素
  4. 通过根元素获取所有的子元素,然后操作 ```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)
XML&Tomcat - 图3

/*
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

XML&Tomcat - 图4

3、2.5 基于 XML 进行配置,3.0 基于注解配置

XML&Tomcat - 图5

4、修改端口号是在 server.xml 中

XML&Tomcat - 图6

5、加入动态 web 项目中的 jar 包,会自动加入删除也会自动删除

XML&Tomcat - 图7

6、项目中如果没有在 web.xml 中设置默认的访问页面,依旧可以能访问到。

原因是:在服务器中的 web.xml 也有默认访问设置

XML&Tomcat - 图8
7、服务器加载项目的原理:
服务器将项目中的 WebContent 中的所有东西加载进去,把 src 下的 java 代码进行编译后的 class 字节码加载到 web-inf 下的 classes 文件中
XML&Tomcat - 图9

8、webcontent 默认为项目的根路径。注册的 servlet 默认在 webcontent

XML&Tomcat - 图10

3、HTTP 协议

3.1 简介

Hyper Text Transfer Protocol(超文本传输协议)

它是一种详细规定了浏览器和万维网服务器之间互相通信的规则

3.2 会话方式

  1. 建立连接
  2. 发送请求
  3. 做出响应
  4. 关闭连接

    3.3 HTTP1.1 和 HTTP1.0(连接)的区别

  5. 建立连接。2. 发送请求。3. 做出响应。4. 关闭连接。 ```
  • 长连接:2&3可以重复(1 23 23 23… 4)

  • 短连接:1234。1234。… 循环 ```

XML&Tomcat - 图11

3.4 报文

报文:客户端与服务端通信时传输的内容我们称之为报文。
也就是说,当请求和响应时,报文中的内容都可以获取。如:协议、主机名,端口号,项目路径等

(1)请求报文

客户端向服务器端发送的请求内容,称之为请求报文。

* GET请求
    * 格式
    * 请求行
    * 请求头
    * 空行

* POST请求 
    * 格式
    * 请求行:请求方式    请求路径    http版本
    * 请求头:User-Agent(客户端基本信息)    Referer(前一个URL)    Cookie    
    * 空行
    * //请求体:携带请求的数据(不同之处)

(2)响应报文

服务器端向客户端做出响应,响应的内容,称之为响应报文。

* 格式
    * 响应行:http版本    状态码    状态提示
    * 响应头:Content-Type:设置浏览器的解码
    * 空行
    * 响应体:响应数据
* 状态码
    * 200:请求成功
    * 404:请求资源未找到
    * 500:请求资源找到了,代码写错了。
    * 302:重定向

(3)如何使用浏览器进行查看

创建一个动态 web 项目,运行之后,在首页按下 F12 键,然后如下图:
XML&Tomcat - 图12