【Tomcat】第二站:Tomcat通过反射机制运行项目

目录

前言

[1. 动态资源&静态资源](#1. 动态资源&静态资源)

[1.1 为什么要区分?](#1.1 为什么要区分?)

[1.2 静态资源](#1.2 静态资源)

[1.3 动态资源](#1.3 动态资源)

[1.4 如何判断](#1.4 如何判断)

[2. Tomcat优先动态](#2. Tomcat优先动态)

[2.1 原因](#2.1 原因)

[3. Tomcat运行项目的流程](#3. Tomcat运行项目的流程)


前言

我们在写项目时,在进行前后端交互时,都会创建一个servlet,然后让他继承HttpServlet。

一般还需要发送过来请求方式:get/post

以及url如何写:http://localhost:8080/Lojarro/DelUserSession 来访问当前的地址。

就是说,在**@webservlet中规定了访问路径**。

在上一博客中,我画过这一流程图。Tomcat第一站

http请求发送过来时,要区分想要的是html页面(静态资源)还是servlet资源(动态资源)。


1. 动态资源&静态资源

1.1 为什么要区分?

如果是静态页面会直接将文件内容呈现给客户端(浏览器),如果是动态页面会将其解析成静态内容之后再呈现给客户端(浏览器)。

1.2 静态资源

通常是以html、htm、shtml等结尾的文件,所有数据都是写在文件里的。

客户端加载静态页面时,无须对数据库进行操作,直接将文件内容呈现出来。

优点 :相对于另外两种页面(动态页面和伪静态),速度最快,不需要从数据库里面提取数据,也不会对服务器产生压力。

缺点 :由于数据都是写在文件里,很有可能会导致文件非常大,占用大量的服务器磁盘空间,每次添加内容都会生成新的文件。++更改源代码的话必须全部更改++,而不能更改一个地方,全站的静态页面就自动更改了。

1.3 动态资源

通常是以php、jsp、asp等结尾的文件,不是独立存在于服务器上的网页文件,当用户请求时服务器才会返回一个完整的网页。

数据都是存储在数据库中,根据用户发出的不同请求从数据库里提取不同的数据,从而提供个性化的网页内容。

优点 :占用磁盘空间小,一般几万条数据的网站,文件大小可能只有几M。数据都是从数据库里提取出来,如果需要修改某些数据,可直接修改数据库,所有动态页面就都会自动更新。

缺点 :相对于静态页面而言,访问速度较慢,因为++动态页面需要处理成静态内容,才能呈现给用户++。动态页面的数据是从数据库里提取出来的,如果访问量大的话,会导致数据库的压力很大。现在动态网站多数都使用了缓存技术,但相对于静态网站而言,服务器的压力比较大,访问的人越多服务器的压力越大。

1.4 如何判断

不是动态资源,就是静态资源。或者说先在动态资源里找,没有就从静态资源找,都没有的话返回404。


2. Tomcat优先动态

2.1 原因

因为在Tomcat里有一个动态资源的映射表。(key-value类型的数据,key值就是@webservlet里的值,value值就是所对应的类对象。类对象是能够获取类信息的。

注意!!

类对象不是该类的对象,而是通过反射得到的,类对象也是可以创建对象的。

反射的三种方式:--获取类对象

java 复制代码
Class clazz1=Class.forname("Demo");

Class clazz2=Demo.class;//类.class

Demo demo=new Demo();
Class clazz3=demo.getclass();//对象.getclass
java 复制代码
System.out.println(clazz1==clazz2);
System.out.println(clazz2==clazz3);

结果是true,说明他们是同一个对象。

clazz1,clazz2,clazz3我们统称为类对象,类对象是能够获取类信息的。 反射是一种获取类信息的能力。类信息里有父类,子类,方法,变量,接口等。

++小点:对象是堆里的一块内存空间++


3. Tomcat运行项目的流程

Tomcat当中写了一个项目,这个项目当中,有10份servlet文件,有5份前端html文件。

由于默认优先访问servlet(动态资源),在起始阶段,访问这10份servlet,获取到**@webservle**t里的key值(访问地址),把它加载到动态资源的映射表,并且把当前该类转换成类对象,以value值的形式进行存储。

如此,当我们的请求打过来,和key值匹配,获取类信息进行输出。

相关推荐
宽广13 分钟前
java aspose word 模板根据数据导出pdf
java·开发语言·pdf·c#·word
码猩13 分钟前
VBA 连续打印多个内容成PDF
java·服务器·pdf
不修×蝙蝠31 分钟前
搭建Tomcat(二)--反射的应用
tomcat·反射·静态资源·动态资源·动态资源映射表
yangfeipancc31 分钟前
Tomcat的安装即使用
java·tomcat
m0_7482400238 分钟前
关于idea-Java-servlet-Tomcat-Web开发中出现404NOT FOUND问题的解决
java·servlet·intellij-idea
智慧老师40 分钟前
Spring基础分析01-Spring的核心特性与优势
java·后端·spring
亦是远方2 小时前
C++编译过程
java·开发语言·c++
【上下求索】2 小时前
学习笔记069——Java集合框架
java·集合