一、XML
XML是EXtensible MarkupLanguage的缩写,翻译过来就是可扩展标记语言。所以很明显,XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。
可扩展:三个字表面上的意思是XML允许自定义格式。但这不代表你可以随便写;
在XML基本语法规范的基础上使用的那些第三方应用程序、框架会通过XML约束的方式强制规定配置文件中可以写什么和怎么写;
XML基本语法这个知识点的定位是:不需要从零开始从头到尾的一行一行编写XML文档,而是在第三方应用程序、框架已提供的配置文件的基础上修改。 要改成什么样取决于需求,而怎么改取决XML基本语法和具体的XML约束;
1.1.常见的配置文件类型:
(1)properties:例如druid连接池就是使用properties文件作为配置文件;
(2)XML:例如Tomcat就是使用XML文件作为配置文件;
(3)YAML/YML:例如SpringBoot就是使用YAML作为配置文件
(4)json:通常用来做文件传输,也可以用来做前端或者移动端的配置文件
1.2XML配置文件示例:
<?xml version="1.0"encoding="UTF-8"?>
<students>
<student>
<name>张三</name>
<age>18</age>
</student>
<student>
<name>李四</name>
<age>20</age>
</student>
</students>
1.3.XML的基本语法:
XML的基本语法和HTML的基本语法如出一辙。XML基本语法+HTML约束=HTML语法。在逻辑上HTML确实是XML的子集;
(1).XML文档声明:这部分基本上就是固定格式,<?xml version="1.0"encoding="UTF-8"?>
(2).根标签:根标签有且只能有一个
(3).标签关闭:开始标签和结束标签必须成对出现,单标签在标签内关闭;
(4).标签嵌套:标签可以嵌套,但是不能交叉嵌套,注释不能嵌套,
(5).标签名、属性名建议使用小写字母
(6).属性:属性必须有值,属性值必须加引号,单双都行;
1.2.使用DOM4J进行XML解析
1.2.1.使用步骤:
(1).导入jar包dom4j.jar
(2).创建解析器对象(SAXReader)
(3).解析xml获得Document对象
(4).获取根节点RootElement
(5).获取根节点下的子节点
1.2.2.DOM4J中API介绍:
(1).创建SAXReader对象:
SAXReader saxReader = new SAXReader();
(2).解析XML获取Document对象,需要传入要解析的XML文件的字节输入流
Document document = reader.read(inputStream);
(3).获取文档的根标签
Element rootElement = document.getRootElement();
(4).获取标签的子标签
//获取所有子标签
List<Element> sonElementList = rootElement.elements();
//获取指定标签名的子标签
List<Element> sonElementList = rootElement.elements("标签名");
(5).获取标签体内的文本
String text = element.getText();
(6).获取标签的某个属性的值
String value = element.attributeValue("属性名");
二、Tomcat10
2.1.WEB服务器
Web服务器通常由硬件和软件共同构成。
硬件:电脑,提供服务供其它客户电脑访问;
软件:电脑上安装的服务器软件,安装后能提供服务给网络中的其他计算机,将本地文件映射成一个url地址供网络中的其他人访问;
常见的JavaWeb服务器:
(1)Tomcat(Apache):当前应用最广的JavaWeb服务器;
(2)Jetty:更轻量级、更灵活的servlet容器;
(3)JBoss(Redhat红帽):支持JavaEE,应用比较广EJB容器;
(4)GlassFish(Orcale):Oracle开发JavaWeb服务器;
(5)Resin(Caucho):支持JavaEE,应用越来越广;
(6)Weblogic(Orcale):支持JavaEE,适合大型项目;
(7)Websphere(IBM):支持JavaEE,适合大型项目;
2.2.Tomcat服务器
(1)Tomcat简介:
Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、sun和其他一些公司及个人共同开发而成。最新的Servlet和JSP规范总是能在Tomcat中得到体现, 因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器;
(2)Tomcat版本对应关系:
企业用的比较广泛的是8.0和9.0,目前比较新正式发布版本是Tomcat10.0,Tomcat11仍然处于测试阶段;
JavaEE和Servelet版本号对应关系:
Servlet Version | EE Version |
6.1 | Jakarta EE ? |
6.0 | Jakarta EE 10 |
5.0 | Jakarta EE 9/9.1 |
4.0 | JAVA EE 8 |
3.1 | JAVA EE 7 |
3.1 | JAVA EE 7 |
3.0 | JAVA EE 6 |
Tomcat版本和Servlet版本之间的对应关系:
Servlet Version | Tomcat Version | JDK Version |
6.1 | 11.0.x | 17 and later |
6.0 | 10.1.x | 11 and later |
5.0 | 10.0.x(superseded) | 8 and later |
4.0 | 9.0.x | 8 and later |
3.1 | 8.5.x | 7 and later |
3.1 | 8.0.x(superseded) | 7 and later |
3.0 | 7.0.x (archived) | 6 and later (7 and later for WebSocket |
2.3.Tomcat目录:
(1)bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat10.exe、tomcat10w.exe,前者是在控制台下启动Tomcat,后者是弹出GUI窗口启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA HOME环境变量才能启动,shutdown.bat用来停止Tomcat;
(2)conf:这是一个非常非常重要的目录,这个目录下有四个最为重要的文件:
a.server.xml:配置整个服务器信息。例如修改端口号。默认HTTP请求的端口号是8080;
b.tomcat-users.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;
c.web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的;
d.context.xml:对所有应用的统一配置,通常我们不会去配置它;
(3)lib:Tomcat的类库,里面是一大堆jar文件。如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当然也可以把应用依赖的iar文件放到这个目录中,这个目录中的iar所有项目都可以共享,但这样应用放到其他Tomcat下时就不能再共享这个目录下的iar包了,所以建议只把Tomcat需要的iar包放到这个目录下;
(4).logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中;
(5).temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除;
(6).webapps:存放web项目的目录,其中每个文件都是一个项目;如果这个目录下已经存在了目录,那么都是Tomcat自带的项目。其中ROOT是一个特殊的项目,在地址中访问http://127.0.01:8080,没有给出项目目录时,对应就是ROOT项目:http://localhost:8080/examples,进入示例项目。其中"examples"就是项目名,即文件夹的名字;
(7).work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的。可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的iava和class文件都会存放到这个目录下;
2.4.WEB项目的标准结构:
(1)app:本应用根目录
(1.1)static:非必要目录,约定俗成的名字,一般在此处放静态资源(css js img);
(1.2)WEB-INF:必要目录,必须叫WEB-INF。受保护的资源目录,浏览器通过url不可以直接访问的目录;
(1.2.1)classes:必要目录,src下源代码、配置文件,编译后会在该目录下。web项目中如果没有Java源码,则该目录不会出现;
(1.2.2)lib:必要目录,项目依赖的jar编译后会出现在该目录下,web项目要是没有依赖任何jar,则该目录不会出现;
(1.2.3).web.xml:必要文件,web项目的基本配置文件,较新的版本中可以没有该文件,但是学习过程中还是需要该文件;
(1.3).index.html:非必要文件,index.html/index.htm/index.jsp为默认的欢迎页;