一、前言
大家好,我是卷心菜,大二学生一枚。最近在复习javaweb,再次学习javaweb,又有了一些新的理解和收获,着手写关于JavaWeb从入门到精通的专栏,扎实web根基,千锤百炼javaweb,为以后的框架打好基础!
那么通过这篇文章,各位小伙伴们可以收获哪些呢?
了解和使用XML,解析XML
部署工程到Tomcat的方式
javaweb的核心概念
手托 html 页面到浏览器和在浏览器中输入 http://ip:端 口号/工程名/访问的区别
废话不多说,满满的干货,赶快来看看吧~
二、XML简介
xml是一种可扩展的标记性语言,因此,xml可以像html一样,都可以使用w3c组织制定的dom技术来解析。
xml主要作用有:
- 用来保存数据,并且这些数据具有自我描述性
- 作为项目或者模板的配置文件
- 作为网络传输数据的格式(现在以JSON为主)
三、解析XML
早期 JDK 为我们提供了两种 xml 解析技术: DOM 和 Sax 简介(已经过时,但我们需要知道这两种技术)
dom 解析技术是 W3C 组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。
Java 对 dom 技术解析标记也做了实现。 sun 公司在 JDK5 版本对 dom 解析技术进行升级:SAX( Simple API for XML ) SAX 解析,它跟 W3C 制定的解析不太一样。它是以类似事件机制通过回调告诉用户当前正在解析的内容。 它是一行一行的读取 xml 文件进行解析的。不会创建大量的 dom 对象。 所以它在解析 xml 的时候,在内存的使用上。和性能上。都优于 Dom 解析。
第三方的解析: jdom 在 dom 基础上进行了封装 、 dom4j 又对 jdom 进行了封装。 pull 主要用在 Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件。
这个 Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml 文件。下载地址:dom4j下载地址
四、dom4j解析技术
这里重点介绍使用第三方技术解析xml文件,先创建一个xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- xml 声明 version 是版本的意思
encoding 是编码 -->
<books>
<book id="CSY12345"><!--book标签表示一本书,id代表书的编号-->
<name>从删库到跑路</name><!--name代表书名-->
<author>李四</author><!--author代表书的作者-->
<price>88.8</price><!--price代表书的价格-->
</book>
<book id="CSY12346">
<name>从入门到放弃</name>
<author>张三</author>
<price>66.6</price>
<!--当有特殊字符时,可以使用语句来显示-->
<!--<one>-->
<!--<![CDATA[<你><好>]]>-->
<!--</one>-->
</book>
</books>
然后创建实体类,构造器之类的就不在这里写了:
public class Book {
private String id;
private String name;
private String author;
private Double price;
}
最后写一个测试类,显示测试结果:
public class TestXml {
@Test
public void test01() throws DocumentException {
// 先创建一个SAXReader对象
SAXReader saxReader = new SAXReader();
// 加载 xml文件创建 Document 对象
Document document = saxReader.read("src/book.xml");
// 打印document到控制台,看看结果是否正确
System.out.println(document);
// 通过 Document 对象拿到根元素对象
Element rootElement = document.getRootElement();
System.out.println(rootElement);
// asXML():将当前元素转换为字符串
String s = rootElement.asXML();
System.out.println(s);
// 通过根元素.elelemts(标签名);可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象
List<Element> book = rootElement.elements("book");
System.out.println(book);
for (Element item : book) {
// elementText()获取标签里面的文本内容
String name = item.elementText("name");
String author = item.elementText("author");
String price = item.elementText("price");
// attributeValue()获取标签的属性值
String id = item.attributeValue("id");
System.out.println(new Book(id, name, author, Double.parseDouble(price)));
}
}
}
那么测试结果是什么呢?
五、JavaWeb概念
- 什么是JavaWeb
javaweb是指所有通过Java语言编写可以通过浏览器访问的程序的总称。JavaWeb是基于请求和响应来开发的。
- 什么是请求
请求是指客户端给服务器发送数据,叫做请求request
- 什么是响应
响应是指服务器给客户端回传数据,叫做响应response
- 请求和响应的关系
请求和响应成对出现,有请求就有响应
六、部署工程到Tomcat
1、方式一
在Tomcat文件中的webapps目录下创建一个工程:
然后就可以将自己写的代码拷贝到新建的工程文件下就可以了
只需要在浏览器中输入访问地址格式如下: http://ip:port/工程名/目录下/文件名
2、方式二
找到Tomcat下的conf目录\Catalina\localhost下,创建一个配置文件:
book.xml
配置文件内容如下:
<!-- Context 表示一个工程上下文
path 表示工程的访问路径:/abc docBase 表示你的工程目录在哪里 -->
<Context path="/abc" docBase="D:\book" />
那到底是什么意思呢?也就是说,如果我把刚才建立的book工程文件夹放到别的目录下(D盘),通过方式二,也可以访问自己的工程,不再拘泥于webapps目录了。
访问这个工程的路径如下:http://ip:port/abc/ 就表示访问 D:\book 目录
七、细节对比
到了这里,有一个疑问:手托 html 页面到浏览器和在浏览器中输入 http://ip:端 口号/工程名/访问的区别?
先看看手托的:
通过上图,我们可以发现,它使用的协议是file://协议。file协议表示告诉浏览器直接读取file:协议后面的路径,解析展示在浏览器上即可。
再来看看访问地址:
所使用的协议是http协议,其原理与上面的完全不同。
注意:
当我们在浏览器地址栏中输入访问地址如下: http://ip:port/ ====>>>> 没有工程名的时候,默认访问的是 ROOT 工程
当我们在浏览器地址栏中输入的访问地址如下: http://ip:port/工程名/ ====>>>> 没有资源名,默认访问 index.html 页面
八、总结
乐莫乐兮新相知,很高兴各位小伙伴可以坚持看完这篇关于javaweb的文章。
如果对你有帮助,可以给博主三连支持一下哦~~ 非常感谢, 一起加油,一起进步!