🏀 视频及资料地址
视频:【尚硅谷2020版JavaWeb全套教程,java web零基础入门完整版】
资料:【https://share.mowangblog.top/Courseware/JavaWeb】
🏀 XML
⚽ XML 简介
xml 是可扩展的标记性语言。
🏐 xml 的作用
1、用来保存数据,而且这些数据具有自我描述性
2、作为项目或者模块的配置文件
3、作为网络传输数据的格式(现在 JSON 为主)。
⚽ XML 语法
🏐 文档声明
<?xml version="1.0" encoding="utf-8" ?> <!-- xml文档声明 -->
version="1.0"
:version表示xml的版本号encoding="utf-8"
:encoding表示xml文件的编码格式
🏐 注释
xml的注释和html一样。
<!-- 这里的内容为注释内容 -->
🏐 元素(标签)
xml元素指的是从开始标签(包括)到结束标签(包括)的部分。元素可以包含其他元素、文本或者两者混合,元素也可以拥有属性。
⚾ XML 命名规则
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能包含空格
⚾ xml 中的元素(标签)也分单双标签
双标签:
<books></books>
单标签:
<books />
🏐 xml 元素属性
xml 的标签属性和 html 的标签属性是非常类似的,属性可以提供元素的额外信息,一个标签上可以书写多个属性,每个属性的值必须使用引号引起来。
<books name="Java" price="9.9"></books>
🏐 语法规则
- 所有 XML 元素都须有关闭标签(也就是闭合)
<root> <book1></book1> <book2 /> <!-- <book3>为闭合标签 --> </root>
- XML 标签对大小写敏感
- XML 元素之间必须正确地嵌套
- XML 文档必须有根元素。根元素就是顶级元素,没有父标签的元素,叫顶级元素。根元素是没有父标签的顶级元素,而且必须唯一。
- XML 的属性值须加引号
- XML 中需要显示特殊字符与html一样,如需要显示大于号,则使用
>
🏐 文本区域(CDATA)
CDATA 语法可以告诉 xml 解析器,CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析,可以实现将输入的字符原样输出。
CDATA格式:
<root> <![CDATA[ 该区域可以将输入的字符原样输出,不会进行解析 <><><><><> ]]> </root>
⚽ XML 解析
不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术来解析。使用 dom 技术进行解析,那么就会有 document 对象,document 对象表示的是整个文档(可以是 html 文档,也可以是 xml 文档)。
早期 JDK 提供了两种 xml 解析技术(已经过时):DOM 和 Sax。
第三方的解析:
1、jdom 在 dom 基础上进行了封装 。
2、dom4j 又对 jdom 进行了封装。
3、pull 主要用在 Android 手机开发,跟 sax 非常类似,都是使用事件机制解析 xml 文件。
🏐 Dom4j 解析 XML
这个 Dom4j 是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml 文件。
Dom4j jar包加载为库:
需要进行解析的XML文件:
<?xml version="1.0" encoding="utf-8" ?> <books> <book sn="SN12341234"> <name>Java</name> <price>9.9</price> </book> <book sn="SN12312312"> <name>Python</name> <price>9.9</price> </book> </books>
相应的类对象:
package xmls; public class Book { private String sn; private String name; private double price; public Book() { } public Book(String sn, String name, double price) { this.sn = sn; this.name = name; this.price = price; } @Override public String toString() { return "Book{" + "sn='" + sn + '\'' + ", name='" + name + '\'' + ", price=" + price + '}'; } public void setSn(String sn) { this.sn = sn; } public void setName(String name) { this.name = name; } public void setPrice(double price) { this.price = price; } public String getSn() { return sn; } public String getName() { return name; } public double getPrice() { return price; } }
解析XML文件:
package xmls; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.junit.Test; import java.util.List; public class Dom4jTest { @Test public void test1() throws Exception { // 创建一个SaxReader输入流对象,读取xml文件 SAXReader saxReader = new SAXReader(); // 读取xml文件,生成Document对象 // Junit测试中,相对路径从模块名开始 Document document = saxReader.read("src\\xmls\\books.xml"); // System.out.println(document); // 通过Document对象获取根元素 Element rootElement = document.getRootElement(); // 通过根元素获取book标签对象 // element() elements() 都是通过标签名查找子元素 List<Element> books = rootElement.elements("book"); for (Element book : books) { // asXML() 将标签对象转换为标签字符串 // System.out.println(book.asXML()); // 获取子标签 Element name = book.element("name"); // getText() 获取标签中的文本内容 String nameText = name.getText(); // elementText() 直接获取指定标签名的文本内容 String priceText = book.elementText("price"); // attributeValue() 获取标签对象指定属性的属性值 String sn = book.attributeValue("sn"); Book book1 = new Book(sn, nameText, Double.parseDouble(priceText)); System.out.println(book1); } } }
🏀 Tomcat
⚽ JavaWeb相关概念
- 什么是 JavaWeb
- JavaWeb 是指,所有通过 Java 语言编写可以通过浏览器访问的程序的总称,叫 JavaWeb。JavaWeb 是基于请求和响应来开发的。
- 什么是请求
- 请求是指客户端给服务器发送数据,叫请求 Request。
- 什么是响应
- 响应是指服务器给客户端回传数据,叫响应 Response。
- 请求和响应的关系
- 请求和响应是成对出现的,有请求就有响应。
⚽ Web资源的分类
- web 资源按实现的技术和呈现的效果的不同,分为静态资源和动态资源两种。
- 静态资源: html、css、js、txt、mp4 视频 , jpg 图片等
- 动态资源: jsp 页面、Servlet 程序等
⚽ 常用的 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 规范,而且不断的完善以适应新的开发要求,适合大型项目(收费,用的不多,适合大公司)。
⚽ Tomcat 服务器和 Servlet 版本的对应关系
⚽ Tomcat的使用
🏐 下载
可以根据jdk的版本进行选择下载,我的jdk为1.8,tomcat8.0支持jdk1.7及以后,这边选择了tomcat8.5.84
下载完成后将下载的压缩包进行解压即可。
🏐 Tomcat目录介绍
- bin 专门用来存放 Tomcat 服务器的可执行程序
- conf 专门用来存放 Tocmat 服务器的配置文件
- lib 专门用来存放 Tomcat 服务器的 jar 包,tomcat相关类实现的存放路径
- logs 专门用来存放 Tomcat 服务器运行时输出的日记信息
- temp 专门用来存放 Tomcdat 运行时产生的临时数据
- webapps 专门用来存放部署的 Web 工程,在该文件夹下一个目录一个工程
- work 是 Tomcat 工作时的目录,用来存放 Tomcat 运行时 jsp 翻译为 Servlet 的源码,和 Session 钝化(序列化)的目录。
🏐 启动Tomcat服务器方式一
找到 Tomcat 目录下的 bin 目录下的 startup.bat 文件,双击,就可以启动 Tomcat 服务器。
打开浏览器,在浏览器地址栏中输入以下其中一个地址进行测试:
1、http://localhost:8080
3、http://本机真实ip:8080
当出现如下界面,说明 Tomcat 服务器启动成功:
🏐 常见启动失败情况
⚾ 双击 startup.bat 文件出现一个小黑窗口一闪而过
原因(一般情况):没有配置好 JAVA_HOME 环境变量
解决:配置 JAVA_HOME 环境变量
⚾ 常见JAVA_HOME配置失败情况
- JAVA_HOME 必须全大写。
- JAVA_HOME 中间必须是下划线,不是减号
- JAVA_HOME 配置的路径只需要配置到 jdk 的安装目录即可。不需要带上 bin 目录。
🏐 启动Tomcat服务器方式二
使用该方式启动tomcat服务器可以看到启动失败的错误信息。
在tomcat的bin目录下打开命令行,运行如下命令:
catalina run
🏐 Tomcat 的停止
- 点击 tomcat 服务器窗口的 x 关闭按钮
- 把 Tomcat 服务器窗口置为当前窗口,然后按快捷键 Ctrl+C
- 找到 Tomcat 的 bin 目录下的 shutdown.bat 双击,就可以停止 Tomcat 服务器
🏐 修改 Tomcat 的端口号
Tomcat 默认的端口号是:8080
找到 Tomcat 目录下的 conf 目录,找到 server.xml 配置文件,在 server.xml 配置文件中找到 Connector 标签修改该标签的 port 属性值。
端口号的范围:1-65535,一般不要使用1000以内的端口号(一般已经被一些系统服务占用),注意,修改完端口号,需要重启Tomcat服务器才会生效。
🏐 部暑 web 工程到 Tomcat
⚾ 方式一
只需要把 web 工程的目录拷贝到 Tomcat 的 webapps 目录下即可。
1、在 webapps 目录下创建一个工程目录:
2、网页内容拷贝到工程目录下:
<h1>HELLO WORLD</h1>
3、访问 Tomcat 下的 web 工程
http://ip:port http://127.0.0.1:8080 表示访问到Tomcat目录下webapps目录
访问格式如下:
http://ip:port/工程名/目录下/文件名
访问刚刚部署的web工程:
http://127.0.0.1:8080/test/test.html
⚾ 方式二
找到 Tomcat 下的 conf 目录\Catalina\localhost\ 下,创建如下的配置文件,一个配置文件对应一个web工程:
配置文件内容如下:
<!-- Context 表示一个工程上下文 path 表示工程的访问路径:/testabc (与配置文件名一致) docBase 表示你的工程目录在哪里 --> <Context path="/testabc" docBase="E:\testabc" />
注意配置文件的编码格式要为utf-8
重启Tomcat访问工程目录下的test.html文件:
http://127.0.0.1:8080/testabc/test.html
⚽ ROOT 的工程的访问,以及默认 index.html 页面的访问
当我们在浏览器地址栏中输入访问地址如下:
http://ip:port/
没有工程名的时候,默认访问的是 ROOT 工程。
当我们在浏览器地址栏中输入的访问地址如下:
http://ip:port/工程名/
没有资源名,默认访问 index.html 页面
index.html
<h1>hello world</h1>
⚽ IDEA 整合 Tomcat 服务器