博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaWeb08-HTML篇笔记(一)
阅读量:6137 次
发布时间:2019-06-21

本文共 4711 字,大约阅读时间需要 15 分钟。

1.1 上次课内容回顾:

JDBC        :* JDBC的概述:    * JDBC:Java Database Connectivity* JDBC的API:    * Connection:连接.        * 获得连接.        * 执行事务的管理.    * Statement:        * 执行SQL语句.            * int executeUpdate(String sql);            * ResultSet executeQuery(String sql);            * boolean execute(String sql);    * ResultSet:        * getXXX(int idx),getXXX(String name);* JDBC完成CRUD的操作:连接池:* 自定义连接池:(了解)    * 增强一个类中的某个方法有几种方式:        * 继承:            * 控制控制这个类的构造.       * 装饰者模式:            * 增强的类和被增强类实现相同的接口.            * 在增强类中获得被增强的类引用.                * 接口中方法过多,增强其中一个方法,其他方法都要重写.        * 动态代理:            * 被增强的类实现了接口即可.                * 编写代码的时候麻烦.* DBCP:* C3P0:DbUtils:工具类:* 使用DBUtils完成CRUD的操作

1.2 案例一:使用XML作为配置文件的方式完成模拟Tomcat.1.2.1 需求:

现在有一套页面,这套页面想被其他人访问到.端口号可以进行修改的-(不修改源码的基础上).
1.2.2 分析:1.2.2.1 技术分析:
【Java基础的网络编程】
【XML的概述】
Ø 什么是XML:
JavaWeb08-HTML篇笔记(一)
JavaWeb08-HTML篇笔记(一)

**** 允许用户自定义标签的!!!Ø XML的作用:* 传输 和 存取数据.* 软件的配置文件.Ø XML的使用:* XML的语法.【XML的语法】Ø XML的基本语法:* XML必须有关闭标签* 区分大小写* 属性需要有引号* 标签必须正确嵌套.Ø XML的文档声明* 文档声明:通常出现在XML的第一行第一列的位置!!!* 写法:    * 
* version :必须的. 使用”1.0” * encoding :字符集. 是使用浏览器打开的时候采用的默认的字符集的编码. * standalone :描述XML文档是否需要依赖其他的文件.Ø XML的注释*
Ø XML的元素
  • 元素(标签)的命名规范:
    JavaWeb08-HTML篇笔记(一)
    ***** 名称中不能包含冒号(:)
    Ø XML的属性
  • 属性的名称规范与元素一致.
    ***** 属性需要使用引号!
    Ø XML的特殊字符和CDATA区
  • XML的特殊字符:
    JavaWeb08-HTML篇笔记(一)
  • XML的CDATA区:(CDATA:Character Data)
  • <![CDATA[ 内容 ]]>
    【XML的解析】
    Ø XML的解析:从XML文档中获得想要的数据(通过代码完成的.)
    Ø XML的解析的方式(*****):
  • DOM解析:DOM:Document Object Model.
  • SAX解析:Simple Api for XML.
  • DOM和SAX的区别:
    JavaWeb08-HTML篇笔记(一)
    Ø 针对这两种解析的方式,不同的公司提供了不同的API的实现.
  • JAXP :SUN公司提供的一套XML的解析的API.
  • JDOM :开源组织提供了一套XML的解析的API-jdom.
  • DOM4J :开源组织提供了一套XML的解析的API-dom4j.
  • pull :主要应用在Android手机端解析XML.
    Ø DOM4J的入门案例步骤:
  • 【步骤一】导入jar包.dom4j-1.6.1.jar
  • 【步骤二】创建解析器
  • 【步骤三】解析文档获得代表文档的Document对象.
  • 【步骤四】获得跟节点.
  • 【步骤五】从跟节点下查找其他的节点.
  • 代码实现:
dom4j支持XPath的jar包.
  • jaxen-1.1-beta-6.jar
dom4j的XPath支持的API:
  • List document.selectNodes(String xPath);
  • Node document.selectSingleNode(String xPath);

代码:

  • DOM4J的XPath的写法:

    /
    public void 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) {
    Element element = (Element) node;
    System.out.println(element.getText());
    }*/

    List
    list = document.selectNodes("//person['@id']"); for (Node node : list) { Element element = (Element) node; System.out.println(element.attributeValue("id")); }

    }

    1.2.3 代码实现:
    【步骤一】:将基础班的Socket编写的代码复制到工程中.
    【步骤二】:新建xml.在conf/server.xml
    【步骤三】:使用DOM4J解析XML
    public class MyServer {

    public static 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 = new ServerSocket(Integer.parseInt(port));
    while(true) {
    Socket socket = serversocket.accept(); // 等待客户端的连接请求,一旦有请求过来,就结束阻塞,返回客户端对象
    //System.out.println(socket.getInetAddress());
    // 一旦有客户来访问, 就另开一个新线程去提供服务, main线程继续等待下一个客户的连接
    new Thread(new MyService(socket)).start();
    }
    }
    }
    1.2.4 总结:1.2.4.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:
    <!DOCTYPE persons [

]>

  • 外部的DTD:
    • 一种本地DTD:
      <!DOCTYPE persons SYSTEM "unknown.dtd">
    • 一种网络DTD:
      <!DOCTYPE persons PUBLIC "//UNKNOWN/" "unknown.dtd">

DTD的语法:

  • 元素:

    • <!ELEMENT 元素名 元素类型>
      • 元素类型:
        • EMPTY
        • ANY
        • 子元素
          • 是否有序: 使用 逗号(,)或者竖线(|)表示.
          • 出现的次数:?:零次或一次 +:一次或多次 *:零次或多次
        • PCDATA
          • 属性:
          • <!ATTLIST 元素名称 属性名称 属性的类型 属性的约束>
          • 属性的类型:
          • ID类型:表示属性值需要是唯一的.
          • CDATA类型:普通的字符串.
          • 枚举:
          • 属性的约束:
            JavaWeb08-HTML篇笔记(一)
            Ø Schema的语法:(了解)
            <?xml version="1.0" encoding="UTF-8"?>
            <!--
            名称空间:一个XML只能引入一个DTD约束文档.使用了Schema约束XML文档,一个XML可以引入多个Schame的约束!!!
            如果再多个Schema文档中定义了相同的属性名称 该怎么办?
          • 名称空间类似于java中的package.通过名称空间区分 标签或属性来自于哪个文档的!!!通常名称空间唯一的不重复的即可.一般情况下使用一个URL地址表示一个名称空间.

    xmlns :xml name sapace .代表当前的文档应用的名称空间.

    targetNameSpace :目标名称空间.
    elementFormDefault :
    -->
    <schema
    xmlns=""
    targetNamespace=""
    elementFormDefault="qualified">
    <!-- 复杂标签 -->
    <element name="persons">
    <!-- 复杂类型 -->
    <complexType>
    <sequence maxOccurs="unbounded" minOccurs="1">
    <element name="person">
    <complexType>
    <sequence>
    <!-- 简单标签 -->
    <element name="name" type="string"></element>
    <element name="age" type="int"></element>
    <element name="sex" type="string"></element>
    </sequence>
    <attribute name="id" type="string" use="required"/>
    </complexType>
    </element>
    </sequence>
    </complexType>
    </element>
    </schema>

转载于:https://blog.51cto.com/13517854/2117370

你可能感兴趣的文章
spring boot.2x 启用拦截器配置 静态资源不能访问
查看>>
2018年上半年软考各科目真题及答案下载
查看>>
CentOS7添加永久静态路由
查看>>
Java基础学习总结(19)——Java环境变量配置
查看>>
笨方法学习Python31-40
查看>>
Java基础学习总结(8)——super关键字
查看>>
我的友情链接
查看>>
centos 7 + mysql 5.7.13 重置数据库的root密码
查看>>
gRPC快速入门(一)——Protobuf简介
查看>>
python socket 网络编程selector用法 实用
查看>>
LINUX-基础命令(三)
查看>>
Python-Django配置阿里大于的短信验证码接口
查看>>
requirejs vue vue.router简单框架
查看>>
5月第一周几个要处理的问题
查看>>
在CentOS 中yum 安装Tomcat 6
查看>>
POJ 1088: 滑雪
查看>>
树莓派用Python写几个简单程序5:用socket传图像
查看>>
在QNAP NAS上安装pfSense
查看>>
以太网帧结构
查看>>
EditPlus 配置 Java & C/CPP 开发环境
查看>>