JavaWeb - xml - tomcat

books.xml

<!--
    什么是 xml?
        xml 是可扩展的标记性语言。 xml 的作用?
        xml 的主要作用有:
            1、用来保存数据,而且这些数据具有自我描述性
            2、它还可以做为项目或者模块的配置文件
            3、还可以做为网络传输数据的格式(现在 JSON 为主)。
    xml 语法
        1. 文档声明。
            <?xml version="1.0" encoding="UTF-8"?> xml 声明。
            xml 声明 version 是版本的意思 encoding 是编码
            而且这个<?xml 要连在一起写,否则会有报错

            属性
            version                 是版本号
            encoding                是 xml 的文件编码
            standalone="yes/no"     表示这个 xml 文件是否是独立的 xml 文件

        2. 元素(标签)
            html 标签:
                格式:<标签名>封装的数据</标签名>
                单标签: <标签名 /> <br /> 换行 <hr />水平线
                双标签 <标签名>封装的数据</标签名>
                标签名大小写不敏感
                标签有属性,有基本属性和事件属性
                标签要闭合(不闭合 ,html 中不报错。但我们要养成良好的书写习惯。闭合)

            元素是指从开始标签到结束标签的内容。
                例如:<title>java 编程思想</title>

            元素 我们可以简单的理解为是 标签。
            Element 翻译 元素

            XML 命名规则
                XML 元素必须遵循以下命名规则:
                1.名称可以含字母、数字以及其他的字符
                    例如: <book id="SN213412341">
                    <author>班导</author>
                    <name>java 编程思想</name>
                    <price>9.9</price>
                    </book>
                2.名称不能以数字或者标点符号开始
                3.名称不能以字符 “xml”(或者 XML、Xml)开始 (它是可以的)
                4.名称不能包含空格
                5.xml 中的元素(标签)也 分成 单标签和双标签:
                    单标签
                    格式: <标签名 属性=”值” 属性=”值” ...... />
                    双标签
                    格式:< 标签名 属性=”值” 属性=”值” ......>文本数据或子标签</标签名>

        3. xml 属性
            xml 的标签属性和 html 的标签属性是非常类似的,属性可以提供元素的额外信息
            在标签上可以书写属性:
                一个标签上可以书写多个属性。每个属性的值必须使用 引号 引起来。
                的规则和标签的书写规则一致。
            1.属性必须使用引号引起来,不引会报错示例代码

            语法规则:
                1.所有 XML 元素都须有关闭标签(也就是闭合)
                2.XML 标签对大小写敏感
            /    3.XML 必须正确地嵌套
                4.XML 文档必须有根元素
                    根元素就是顶级元素,
                    没有父标签的元素,叫顶级元素。
                    根元素是没有父标签的顶级元素,而且是唯一一个才行。
                5.XML 的属性值须加引号
                6.XML 中的特殊字符

        4. xml 注释
            html 和 XML 注释 一样 :  < - -    - - >
        5. 文本区域(CDATA 区)
                CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析
                CDATA 格式:
                <![CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml ]]>

-->
<?xml version="1.0" encoding="utf-8" ?>
<!--
    <?xml version="1.0" encoding="utf-8" ?>
    以上内容就是 xml 文件的声明
    version="1.0"       version 表示 xml 的版本
    encoding="utf-8"    encoding 表示 xml 文件本身的编码
-->
<books><!--books 表示多个图书信息-->
    <book sn="SN123412123412"><!--book 表示一个图书信息 sn属性表示图书序列号-->
        <name>时间简史</name><!--name 标签表示书名-->
        <author>霍金</author><!--author 表示作者-->
        <price>75</price><!--price 表示图书价格-->
    </book>
    <book sn="SN123412123411"><!--book 表示一个图书信息 sn 属性表示图书序列号-->
        <name>java从入门到放弃</name><!--name 标签表示书名-->
        <author>
            &lt;JAVA&gt;<!---->
            <![CDATA[<<<<<]沙老师
            ]]><!---->
        </author><!--author 表示作者-->
        <price>9.9</price><!--price 表示图书价格-->
    </book>
</books>

books.xml

<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book sn="SN12341232">
        <name>辟邪剑谱</name>
        <price>9.9</price>
        <author>班主任</author>
    </book>
    <book sn="SN12341231">
        <name>葵花宝典</name>
        <price>99.99</price>
        <author>班长</author>
    </book>
</books>

Book

package com.sq.pojo;

import java.math.BigDecimal;

/**
 * @author 21115
 * @ date 2021/9/21
 */
public class Book {

	private String sn;
	private String name;
	private double /*BigDecimal*/ price;
	private String author;

	public Book() {
	}

	public Book(String sn, String name, double price, String author) {
		this.sn = sn;
		this.name = name;
		this.price = price;
		this.author = author;
	}

	public String getSn() {
		return sn;
	}

	public void setSn(String sn) {
		this.sn = sn;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public String getAuthor() {
		return author;
	}

	public void setAuthor(String author) {
		this.author = author;
	}

	@Override
	public String toString() {
		return "Book{" +
				"sn='" + sn + '\'' +
				", name='" + name + '\'' +
				", price=" + price +
				", author='" + author + '\'' +
				'}';
	}
}

Dom4jTest

package com.sq.pojo;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.util.List;

/**
 * @author 21115
 * @ date 2021/9/21
 */
public class Dom4jTest {

	@Test
	public void test1(){

		SAXReader reader = new SAXReader();
		try {
			Document doc = reader.read("src/books.xml");
			System.out.println(doc);
			//org.dom4j.tree.DefaultDocument@470e2030 [Document: name src/books.xml]
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	@Test
	public void test2() throws Exception{
		// 1.读取 books.xml 文件
		SAXReader reader = new SAXReader();
		// 在 Junit 测试中,相对路径是从模块名开始算
		Document document = reader.read("src/books.xml");

		// 2.通过 Document 对象获取根元素
		Element rootElement = document.getRootElement();
//		System.out.println( rootElement );
		//org.dom4j.tree.DefaultElement@470e2030 [Element: <books attributes: []/>]

		// 3.通过根元素获取 book 标签对象
		// element() 和 elements() 都是通过标签名查找子元素
		List<Element> books = rootElement.elements("book");

		// 4.遍历,处理每个 book 标签转换为 Book 类
		for(Element book : books){
			// asXML() 把标签对象。转换为标签字符串

//			System.out.println( book.asXML() );
//			<book sn="SN12341232">
//					<name>辟邪剑谱</name>
//					<price>9.9</price>
//					<author>班主任</author>
//			</book>
//			<book sn="SN12341231">
//					<name>葵花宝典</name>
//					<price>99.99</price>
//					<author>班长</author>
//			</book>

			Element nameElement = book.element("name");
//			System.out.println( nameElement.asXML() );
//			<name>辟邪剑谱</name>
//			<name>葵花宝典</name>

			// getText(): 可以获取标签中的文本内容
			String nameText = nameElement.getText();
//			System.out.println(nameText);
//			辟邪剑谱
//			葵花宝典

			// 直接 获取指定标签名的文本内容
			String priceText = book.elementText("price");
//			System.out.println(priceText);
//			9.9
//			99.99
			String authorText = book.elementText("author");
//			System.out.println(authorText);
//			班主任
//			班长

			String snValue = book.attributeValue("sn");
			System.out.println(new Book(snValue,nameText,Double.parseDouble(priceText),authorText));
//			Book{sn='SN12341232', name='辟邪剑谱', price=9.9, author='班主任'}
//			Book{sn='SN12341231', name='葵花宝典', price=99.99, author='班长'}


		}

	}


}

/*
	1.JavaWeb 的概念
		a) 什么是 JavaWeb
			JavaWeb 是指,所有通过 Java 语言编写可以通过浏览器访问的程序的总称,叫 JavaWeb。
			JavaWeb 是基于请求和响应来开发的。 
		b) 什么是请求
			请求是指客户端给服务器发送数据,叫请求 Request。 
		c)什么是响应
			响应是指服务器给客户端回传数据,叫响应 Response。 
		d)请求和响应的关系
			请求和响应是成对出现的,有请求就有响应。
	2.Web 资源的分类
		web 资源按实现的技术和呈现的效果的不同,又分为静态资源和动态资源两种。
			静态资源: html、css、js、txt、mp4 视频 , jpg 图片
			动态资源: jsp 页面、Servlet 程序
	3.常用的 Web 服务器
		Tomcat: 由 Apache 组织提供的一种 Web 服务器,提供对 jsp 和 Servlet 的支持。它是一种轻量级的 javaWeb 容器(服务
			    器),也是当前应用最广的 JavaWeb 服务器(免费)。
		Jboss:  是一个遵从 JavaEE 规范的、开放源代码的、纯 Java 的 EJB 服务器,它支持所有的 JavaEE 规范(免费)。
		GlassFish: 由 Oracle 公司开发的一款 JavaWeb 服务器,是一款强健的商业服务器,达到产品级质量(应用很少)。
		Resin: 是 CAUCHO 公司的产品,是一个非常流行的服务器,对 servlet 和 JSP 提供了良好的支持,
			   性能也比较优良,resin 自身采用 JAVA 语言开发(收费,应用比较多)。
			   WebLogic:是 Oracle 公司的产品,是目前应用最广泛的 Web 服务器,支持 JavaEE 规范,
			   而且不断的
	4.Tomcat 服务器和 Servlet 版本的对应关系
		当前企业常用的版本 7.*、8.*
		Servlet 程序从 2.5 版本是现在世面使用最多的版本(xml 配置)
		到了 Servlet3.0 之后。就是注解版本的 Servlet 使用。
		以 2.5 版本为主线讲解 Servlet 程序。 5.Tomcat 的使用
		
		a) 安装
			找到你需要用的 Tomcat 版本对应的 zip 压缩包,解压到需要安装的目录即可。 
		b) 目录介绍
			bin 专门用来存放 Tomcat 服务器的可执行程序
			conf 专门用来存放 Tomcat 服务器的配置文件
			lib 专门用来存放 Tomcat 服务器的 jar 包
			logs 专门用来存放 Tomcat 服务器运行时输出的日记信息
			temp 专门用来存放 Tomcat 运行时产生的临时数据
			webapps 专门用来存放部署的 Web 工程。
			work 是 Tomcat 工作时的目录,用来存放 Tomcat 运行时 jsp 翻译为 Servlet 的源码,和 Session 钝化的目录。
		c) 如何启动 Tomcat 服务器
			找到 Tomcat 目录下的 bin 目录下的 startup.bat 文件,双击,就可以启动 Tomcat 服务器。
			如何测试 Tomcat 服务器启动成功???
			打开浏览器,在浏览器地址栏中输入以下地址测试:
				1、http://localhost:8080
				2、http://127.0.0.1:8080
				3、http://真实 ip:8080
			当出现如下界面,说明 Tomcat 服务器启动成功!!!
			常见的启动失败的情况有,双击 startup.bat 文件,就会出现一个小黑窗口一闪而来。
			这个时候,失败的原因基本上都是因为没有配置好 JAVA_HOME 环境变量。
			配置 JAVA_HOME 环境变量:
			常见的 JAVA_HOME 配置错误有以下几种情况:
				一:JAVA_HOME 必须全大写。
				二:JAVA_HOME 中间必须是下划线,不是减号- 
				三:JAVA_HOME 配置的路径只需要配置到 jdk 的安装目录即可。不需要带上 bin 目录。 另一种启动 tomcat 服务器的方式
			1、打开命令行
			2、cd 到 你的 Tomcat 的 bin 目录下
			3、敲入启动命令: catalina run
		d) Tomcat 的停止
			1、点击 tomcat 服务器窗口的 x 关闭按钮
			2、把 Tomcat 服务器窗口置为当前窗口,然后按快捷键 Ctrl+C
			3、找到 Tomcat 的 bin 目录下的 shutdown.bat 双击,就可以停止 Tomcat 服务器
		e) 如何修改 Tomcat 的端口号
			Mysql 默认的端口号是:3306
			Tomcat 默认的端口号是:8080
			找到 Tomcat 目录下的 conf 目录,找到 server.xml 配置文件。
			平时上百度:http://www.baidu.com:80
			HTTP 协议默认的端口号是:80
		f) 如何部暑 web 工程到 Tomcat 中
			第一种部署方法:只需要把 web 工程的目录拷贝到 Tomcat 的 webapps 目录下
			即可。
				1、在 webapps 目录下创建一个 book 工程:
				2、把上午做的书城第一阶段的内容拷贝到里面:
				3、如何访问 Tomcat 下的 web 工程。
					只需要在浏览器中输入访问地址格式如下:
					http://ip:port/工程名/目录下/文件名
			第二种部署方法:
				找到 Tomcat 下的 conf 目录\Catalina\localhost\ 下,创建如下的配置文件:
				abc.xml 配置文件内容如下:
				<!-- Context 表示一个工程上下文
				path 表示工程的访问路径:/abc
				docBase 表示你的工程目录在哪里
				-->
				<Context path="/abc" docBase="E:\book" />
				访问这个工程的路径如下:http://ip:port/abc/ 就表示访问 E:\book 目录
		g) 手托 html 页面到浏览器和在浏览器中输入 http://ip:端
		   口号/工程名/访
	6.IDEA 整合 Tomcat 服务器
		操作的菜单如下:File | Settings | Build, Execution, Deployment | Application Servers
		配置你的 Tomcat 安装目录:
		就可以通过创建一个 Model 查看是不是配置成功!!!
	7.IDEA 中动态 web 工程的操作
		a) IDEA 中如何创建动态 web 工程
			1、创建一个新模块:
			2、选择你要创建什么类型的模块:
			3、输入你的模块名,点击【Finish】完成创建。
			4、创建成功如下图:
		b) Web 工程的目录介绍
		c) 如何给动态 web 工程添加额外 jar 包
			1、可以打开项目结构菜单操作界面,添加一个自己的类库:
			2、添加你你类库需要的 jar 包文件。
			3、选择你添加的类库,给哪个模块使用:
			4、选择 Artifacts 选项,将类库,添加到打包部署中:
		d) 如何在 IDEA 中部署工程到 Tomcat 上运行
			1、建议修改 web 工程对应的 Tomcat 运行实例名称:
			2、确认你的 Tomcat 实例中有你要部署运行的 web 工程模块:
			3、你还可以修改你的 Tomcat 实例启动后默认的访问地址:
			4、在 IDEA 中如何运行,和停止 Tomcat 实例。
				4.1、正常启动 Tomcat 实例:
				4.2、Debug 方式启动 Tomcat 运行实例:
				4.3、停止 Tomcat 运行实例:
				4.4、重启 Tomcat 运行实例:
		e) 修改工程访问路径
		f) 修改运行的端口号
		g) 修改运行使用的浏览器
		h) 配置资源热部署
*/

http://ip地址:port端口号

部署

<--
	Context 表示一个工程上下文
	path 表示工程的访问路径:/abc
	docBase 表示你的工程目录在哪里 
-->
<Context path="/web03" docBase="E:\IdeaProjects\JavaWeb\out\artifacts\web03_war_exploded" />
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值