XML和Tomcat

1. 什么是XML

Extensible Markup Language 可扩展标记语言

作用:

  1. 可以用来保存数据;
  2. 可以用来保存一些常见的配置文件;
  3. 可以作为小型数据库。
    例如:c3p0-config.xml

HTML标签是w3c组织固定,不能更改;

XML可以根据需求随意更改。

2. XML文件的定义与声明

在xml文件中,所有的标签都可以自己定义。

语法如下:

1.强制的语法要求:标签必须成对;

2.xml文件中有且仅有一个根节点

3.xml标签可以带有属性,可以相互嵌套

4.xml标签可以自定义,但要求见名知意

5.xml标签一般都是小写
    <?xml version="1.0" encoding="utf-8"?>
    <!-- xml文件的声明:
    	告诉解析器,目前xml版本为 1.0
    	解析当前的xml文件使用的编码集是 utf-8
    	-->
    	
    <!-- 
    在xml文件中,所有的标签都可以自己定义。
    语法如下:
    	1.强制的语法要求:标签必须成对;
    	2.xml文件中有且仅有一个根节点
    	3.xml标签可以带有属性,可以相互嵌套
    	4.xml标签可以自定义,但要求见名知意
    	5.xml标签一般都是小写
     -->
    <stus>
    	<student id="001">
    		<name>陈卓璇</name>
    		<age>23</age>
    		<gender>1</gender>
    		<!-- 性别  男 0  女 1-->
    	</student>
    	<student id="002">
    		<name>耶啵</name>
    		<age>23</age>
    		<gender>0</gender>
    	</student>
    	<student id="003">
    		<name>赞赞</name>
    		<age>29</age>
    		<gender>0</gender>
    	</student>
    	
    </stus>

    <?xml version="1.0" encoding="utf-8"?>
    <bookstore>
    	<book category="fiction"><!-- category 类别  fiction 小说-->
    		<title lang="zh">红楼梦</title><!-- lang 语言 zh 中文 -->
    		<author>曹雪芹</author>
    		<year>1778</year>
    		<price>78.0</price>
    	</book>
    </bookstore>

3. XML解析

SUN公司提供了XML文件的解析方式,但过于繁琐,并且没有任何更新,被人弃用的。但是我们现在所使用的第三方工具,都是基于SUN原生解析方式来完成的。

jaxp jdom

dom4j 核心:

	element.element(String elementName);   获取指定名字的节点类对象
	element.elements(String elementName);  获取指定名字的所有节点类对象,并且返回值是List集合。
    public class Demo {
        public static void main(String[] args) throws DocumentException {
            //1.获取xml对应的document对象
            Document document = new SAXReader().read(new File("./src/student.xml"));
    //        System.out.println(document);
    
            //2.获取根节点元素对象
            Element rootElement = document.getRootElement();
    //        System.out.println(rootElement);
    
            //3.获取所有student节点
            //java.lang.NoClassDefFoundError: org/jaxen/JaxenException
            //与XPath有关
            List<Element> students = rootElement.selectNodes("student");
            for(Element student:students){
                System.out.println(student);
            }
    
    //        List<Element> names = rootElement.selectNodes("//name");//方式1
            //    //name 不管位置在哪,只要有节点名为name,就找出来
            List<Element> names = rootElement.selectNodes("/stus/student/name");//方式二
            for(Element name:names){
                System.out.println(name);
            }
    
    
            System.out.println("---------------student节点下的所有子节点-----------------------");
    
            List<Element> list1 = rootElement.selectNodes("//student/*");
            for(Element elem:list1){
                System.out.println(elem);
            }
    
    
            System.out.println("---------------所有节点中 有id属性的节点-----------------------");
            //Exception in thread "main" java.lang.ClassCastException: org.dom4j.tree.DefaultAttribute cannot be cast to org.dom4j.Element
    //        List<Element> list2 = rootElement.selectNodes("/stus/student/@id");
    //        for(Element id:list2){
    //            System.out.println(id);
    //        }
            List<DefaultAttribute> list2 = rootElement.selectNodes("/stus/student/@id");
            for(DefaultAttribute id:list2){
                System.out.println(id);
    
            }
    
            //总结:使用 //nodename   即可
    
            System.out.println("-------------/stus/student[1]-------------------");
            List list3 = rootElement.selectNodes("/stus/student[1]");
            System.out.println(list3.get(0));
    
            System.out.println("---------------/stus/student[last()]---------------");
            List list4 = rootElement.selectNodes("/stus/student[last()]");
            System.out.println(list4.get(0));
    
            System.out.println("------------------//name | //age-------------------");
            List<Element> list5 = rootElement.selectNodes("//name | //age");
            for(Element li:list5){
                System.out.println(li.getText());
            }
    
        }
    }

4. Tomcat的介绍

Tomcat 
服务器软件,如果安装了Tomcat,安装过的电脑就相当于一台服务器。
服务器软件符合JavaEE规范。

为什么使用Tomcat
	1. Tomcat支持大部分的JavaEE规范!!!并且可以商用!!!
	2. Tomcat源码公开
	3. 免费

Tomcat 是 Apache 组织基金会维护的一个项目

5. Tomcat的目录结构

    bin:
    	主要存放的内容有 .jar .bat Windows批处理文件 .sh shell 脚本,主要用于Linux下
    	startup.bat/.sh shutdown.bat/sh
    conf:
    	当前Tomcat服务器对应的配置文件,server.xml 和 web.xml
    lib:
    	库!!!当前Tomcat服务器执行需要的库文件,以及JavaWEB需要的一些第三方Jar包
    	servlet-api.jar
    logs:
    	Tomcat运行日志目录
    temp:
    	临时文件目录
    webapps: 【重点】
    	Web Application Web 应用存放的目录,要求所有的Web项目存放到当前目录下
    Work:
    	暂时不考虑!!!

6. Tomcat 启动失败原因

1. 不按照规矩操作
	使用startup.bat 启动,使用 shutdown.bat 关闭 

2. Java环境安装存在问题
	a) 没装
	b) JDK环境变量配置有错
	Tomcat运行需要Java支持!!!

7. JavaWEB项目目录 【重点】

要求在Java中所有的WEB项目,都要按照当前的WEB目录结构来完成

--| WEBProject 当前Web Application的根目录,目录名就是你项目的名字
可以在WEBProject存放静态资源,利用HTML,CSS,JS,img, video...
----| META-INF 不用操心,目前不用考虑
----| WEB-INF 目录的所有内容都不能通过浏览器 URL目录结构方式来访问,需要通过一些配置来完成
    --| classes 存放Java文件对应的.class 字节码文件,提供给Tomcat服务器运行执行
    --| lib 当前项目执行需要的第三方Jar目录
    --| web.xml 当前整个WEB项目的配置文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值