1、javaweb模型
java的代码是在内存里的,比如Array、LIst、Map这就意味着在这些容器中存储的数据都是临时的,重启java程序之后数据进入新的生命周期。这种程序也有,比如计算器——本质上是只使用程序的计算代码,属于基本功能。
但是要对存储的数据进行持久化,则需要使用存储于硬盘的文件,比如txt,properties,json、xml、sql等,java的io类等提供了对这些文件的操作接口。
一种文件类型是否适合存储数据要看多方面表现的情况,txt存储数数据没有统一规范,所以不适用,properties、json、xml存储数据有统一规范但是由于缺乏构建庞大复杂数据和数据处理的算法特点,所以不适用。
sql凭借优秀的规范进入数据持久化的行列。我们使用mysql举例,他的默认端口是3306,java程序通过这个端口和mysql提供的连接接口实现了数据持久化。
此时,我们还需要一个输入和输出的载体,java提供了awt和swing来完成它的图形化,但是由于使用过的人说很不好,所以没使用过的人也就对它不理睬了。
到此刻已经是一个局域网内的C/S架构的软件了,只要他们配置的是同一个数据库,他们就可以实现数据的共享和操作,这类软件太多了,几乎都成了规模化生产了,像什么各类的管理系统。
去掉javaGUI,我们继续看图。tomcat提供了servlet,你需要开启tomcat服务器,这个服务器的端口是8080,我们这个时候仍然需要一个用于表现的载体,说白了就是如何让html文件和java文件联系起来。
启动tomcat之后可以看得出来localhost:8080打开的网页实际上是这个网页,按照链接规范原则上我们可以访问该目录下的所有开放资源。
我很抱歉我把图片顺序弄得一塌糊涂,但就是这个意思。实际上这种访问我们不通过tomcat也可以实现,你只需要在同级目录下创建一个html5文件和json文件并使用超链接访问即可。那么使用tomcat的意义在哪呢?
就像我们刚才说的重点在于实现html和java文件的联系http发布一个请求这请求是一个路径,由于这个请求是在tomcat服务器内发生的,tomcat服务器提供了一个路径映射文件,通过路径映射文件去寻找class文件(被编译的java文件)并执行此文件。在执行之后,可以通过重定向去跳转其他页面,也可以通过输出流向浏览器输出数据。
至此完成了javaweb B/S架构的整个运行过程。那我为什么要写出来呢,其实这些都是些不新鲜的东西了。因为有的时候路走的长了,总是要回头看看自己的原点在哪,知道自己原点的意义就是看清自己想要的东西。有的人刚开始学习编程就开始问,分布式怎么写啊,负载均衡怎么做啊,双11秒杀系统为什么不崩溃啊?说白了这些的东西产生的根源并不是大数据量所导致的,而是因为互联网巨头垄断形成的瓶颈效应,整个互联网的发展几乎就是大厂一宕机小厂就瘫痪,高度的依赖性使得各种工具都难以上下其手。所以不得不回到最初的原点去思考这些问题。对互联网的地位看法,国内还是普遍倾向于商业化认识,这种认识使得互联网不得不一步步的陷入一个又一个的发展泥潭。要解决这个问题又得去思考互联网背后的智慧根源,这种思考根本没有土壤产生。
回到正题:javaweb B/S架构我们来分析一下。
整体上根据 数据库、Java、Tomcat不同的作用,分别形成了持久层、业务层、表现层三层的结构,但是这样分的话会使得每一项技术越分越远,以此我们使用整体的眼光来看这三层的关系。
实际上java和mysql之间独立的读写是很轻松就能实现的,甚至说图形化了的mysql很大程度上就像是一个通用型软件系统,是什么需求导致的必须在java和mysql之间建立联系呢?首先资源不能无限,第二受众可能较多。由此看得出来,实际上的
java很大程度上应当是去解决表现层的问题才对。比方说Java中的类能够很好地和sql表的结构吻合,这样的话,通过异步线程将表的数据载入内存,然后使用高效的数据结构对表进行操作,以频率换效率。
java在解决表现层问题上总是显得很力不从心,这其中的根源是由于树结构的文档流和哈希表结构的类之间的差距,说真的我也比较好奇为啥HTML选择了树这种低效率的结构呢?另一方面动态页面和静态页面在本质上都是无差别的html元素展示。
标签:文件,java,javaweb,tomcat,基础知识,mysql,数据,梳理 From: https://www.cnblogs.com/ifeason/p/17064804.html