Tomcat在Java开发中的使用笔记
时间:2022-07-28
本文章向大家介绍Tomcat在Java开发中的使用笔记,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
[TOC]
0x00 快速入门
在前面的学习中我们知道了XML的基础用法,和它的解析器方式包括DOM和SAX方式,在Java中处理操作XML文件常用的解决方案是Jaxp、Jdom,dom4j等等,其中后者最为常用且本文学习也是采用Dom4j包进行对xml文件的处理;
XML约束文档编写 1) DTD 实例 index.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root SYSTEM "index.dtd" >
<root>
<stu id="a_1001" gender="男">
<name>WeiyiGeek</name>
<age>20</age>
<address>中国北京东直门220号</address>
</stu>
<stu id="a_1002" gender="女">
<name>张欣欣</name>
<age>18</age>
<address>中国河北开封区小龙街道220号</address>
</stu>
</root>
index.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT root (stu)*>
<!ELEMENT stu (name,age,address)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ATTLIST stu id ID #REQUIRED>
<!ATTLIST stu gender (男|女) #REQUIRED>
``
![WeiyiGeek.index](https://cdn.jsdelivr.net/gh/WeiyiGeek/blogimage/2020/1/20200215121134.png)
<br>
2)XML Schema 实例
XMLSchema.xml
```xml
<?xml version="1.0" encoding="UTF-8"?>
<root
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.weiyigeek.cn/XMLSchema"
xsi:schemaLocation="http://www.weiyigeek.cn/XMLSchema XMLSchema.xsd">
<stu id="1001">
<name>WeiyiGeek</name>
<age>20</age>
<address>中国北京东直门220号</address>
</stu>
<stu id="1002">
<name>张欣欣</name>
<age>18</age>
<address>中国河北开封区小龙街道220号</address>
</stu>
</root>
XMLSchema.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.weiyigeek.cn/XMLSchema" xmlns:tns="http://www.weiyigeek.cn/XMLSchema" elementFormDefault="qualified">
<element name="root">
<!-- 复杂类型 -->
<complexType>
<!-- 有顺序的 -->
<sequence maxOccurs="unbounded">
<element name="stu">
<complexType>
<sequence>
<element name="name" type="string"></element>
<element name="age" type="int"></element>
<element name="address" type="string"></element>
</sequence>
<!-- 属性 -->
<attribute name="id" type="int" use="required"></attribute>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
实验的项目结构:
WeiyiGeek.Dom4j
0x01 基本用法
Dom4j的使用流程:
- 1.创建SAXReader对象
- 2.指定读取解析的xml
- 3.获取根元素document.getRootElement();
- 4.根据元素获取子元素或者下面的子孙元素:
- rootElement.element(“子元素标签”):获取该元素下第一个子元素标签对象
- rootElement.elements:获取所有子元素标签对象;
基础示例:
package com.weiyigeek.xml;
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/***
*
* @author Administrator
* 功能:验证Dom4j解析XML包
*/
public class Dom4j_demo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//1.建立reader读取对象
SAXReader reader = new SAXReader();
try {
//2.读取指定的xml源文件
Document document = reader.read(new File("src/xml/index.xml"));
System.out.println("读取XML源文件地址: " + document.getName());
//3.获取xml中根元素
Element rootElement = document.getRootElement();
System.out.println("根元素名称: " + rootElement.getName());
//4.得到子元素和子子(子孙)元素
System.out.println("子元素名称" + rootElement.element("stu").getName());
System.out.println("子子元素名称: " + rootElement.element("stu").element("name").getName());
//5.获取所有元素及其属性
List<Element> element = rootElement.elements();
for (Element ele : element) {
String name = ele.element("name").getStringValue();
String age = ele.element("age").getText();
String addr = ele.elementText("address");
System.out.println(ele.attributeValue("id")+ ":" + name + "-" + age + "-" + addr);
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
执行结果:
读取XML源文件地址: file:///F:/Study-Promgram/JAVAWeb/xml/src/xml/index.xml
根元素名称: root
子元素名称stu
子子元素名称: name
1001:WeiyiGeek-20-中国北京东直门220号
1002:张欣欣-18-中国河北开封区小龙街道220号
0x02 Xpath基础使用
描述:在dom4j里面支持xpath的写法,xpath其实是xml的路径语言,支持我们再解析xml的时候,能够快速的定位到具体的某一个元素中;
实验结构:
WeiyiGeek.
使用流程:
- 1.添加jaxen-1.1-beta-6.jar依赖流程;
- 2.在查找指定节点时候根据XPath语法规则来查询;
- 3.利用Xpath获取节点采用rootElement.selectSingleNode(“//name”)和rootElement.selectNodes(“//name”)
基础示例:
package com.weiyigeek.xml;
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/***
*
* @author Administrator
* 功能:验证XPATH的使用
*/
public class Dem4j_demo2 {
public static void main(String[] args) {
try {
// TODO Auto-generated method stub
//1.创建SAX读取对象
SAXReader reader = new SAXReader();
//2.读取xml源文件
Document document = reader.read(new File("src/xml/index.xml"));
//3.根元素
Element rootElement = document.getRootElement();
//4.使用xpath选取单个节点对象
Element xpathElement = (Element) rootElement.selectSingleNode("//name");
System.out.println("获取一个子孙元素的值: " + xpathElement.getText());
//5.使用xpath获取多个相同节点属性的值
List<Element> list = rootElement.selectNodes("//name");
for(Element xpath : list){
System.out.println(xpath.getName() + ":" + xpath.getStringValue());
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
执行结果:
获取一个子孙元素的值: WeiyiGeek
name:WeiyiGeek
name:张欣欣
- 洛谷 P1308 统计单词数【字符串+模拟】
- 【Java学习笔记之十四】Java中this用法小节
- Codeforces 839E Mother of Dragons【__builtin_popcount()的使用】
- 【Java学习笔记之十五】Java中的static关键字解析
- Codeforces 839D Winter is here【数学:容斥原理】
- Codeforces 839C Journey【DFS】
- Facebook的漏洞可以让攻击者在分分钟内重置用户账户密码
- 【Java学习笔记之十七】Java中普通代码块,构造代码块,静态代码块区别及代码示例分析
- 【机器学习笔记之六】Bagging 简述
- 洛谷 P1553 数字反转(升级版)【字符串+STL stack】
- C# 实现发送手机短信
- 软件测试人员必须掌握的Linux基本命令
- 【机器学习笔记之五】用ARIMA模型做需求预测用ARIMA模型做需求预测
- Capturing Packets in Linux at a Speed of Millions of PPS
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法