Java 杂谈善倾的知识体系构建之路

B/S 架构及 Tomcat

2018-09-02  本文已影响0人  善倾

动态 Web 执行流程

直接用图片展示动态 Web 程序的执行流程,如下图所示:

_动态Web执行流程.png

自己对这个执行流程很熟悉了啊,感觉这张图都是白画了。以 Tomcat 为例讲解下 web 项目执行流程,URL 为http://localhost:8080/weba/hello.html,通过 localhost 找到服务器主机,8080 找到对应的 tomcat 容器,然后 tomcat 会去它的 webapps 目录下找对应的项目 weba ,然后再找到项目根目录下的 hello.html 。最后将其返回给客户端浏览器,浏览器再将 html 代码渲染成可视化界面展示出来。

Tomcat 容器

Tomcat 集成了上面的动态Web执行流程图中的 WEB 服务器插件、WEB 服务器和 WEB 容器 的功能。Tomcat 是纯 java 编写的一个中间件程序,大胆猜测下,里面肯定用到了网络、线程、I/O 等等知识,不晓得什么时候会需要研究这个,不知道那一天会有多久哦。所谓中间价就是能够自动执行一组程序的程序,以后提到中间件就想想 Tomcat 就可以了。

学习启示:现在到了学习 web 的阶段后,不能像以前一样纠结的太深入了,因为这块知识太复杂,自己懂得也不是很多,根本就没有时间去深入学习,还不是怪自己之前不一直懒得学?暂时停留在一个抽象的层次去学习。

Tomcat 因为是用 java 写的,它管理的项目也是 java 写的,所以一定要有 JDK 的支持才能够运行。它默认的端口号是 8080 ,而且它管理的是一个个 web 项目,web 项目在 Tomcat 中是以目录的形式存在的

Tomcat 目录结构

Tomcat 配置虚目录

如果不配置虚拟目录,使用原始的访问方法,那就直接在请求头中就暴露了项目的信息了,造成极大的不安全。所以配置虚目录就是为了保证项目的名字安全性、存储安全性和位置安全性。

Tomcat 找项目的执行流程,首先在 webapps 目录下找指定的项目,如果不存在就会去 conf/server.xml 文件中寻找 <Context/>标签中是否有对应的虚目录。

</host>标签之前,添加例如<Contxt path="/hidn" docBase="/opt/apache-tomcat-9.0.0.M26/webapps/weba/WEB-INF">的配置信息。其中 path 后跟的是虚目录,必须加上/, docBase 表示文档库的意思,后面跟的是项目在文件系统中的真实物理路径。

同一个项目可以配置多个虚路径,虚路径和真实项目的关系是多对一。

此处还可以添加reloadable属性,用于自动监视字节码改动,一旦有改动就会立即将其加载到内存中去。关于 realoadable 属性详情参见这里

Web 项目

Web 项目相关记录在此处

Web 项目的目录结构

项目名为 weba 的基本目录结构如下:

<weba>
|—— WEB-INF
|   |—— classes
|   |—— lib
|   |—— web.xml
|—— index.html

WEB-INF 目录下的所有内容,客户端都是无法访问的,这是表面现象。本质上就是 Tomcat 不允许它被客户端浏览器访问,所以这个目录下的 Servlet 类字节码文件不可以直接被客户端访问,所以才需要在 WEB-INF/web.xml 文件中进行 Servlet 访问 url 的配置。

其中 WEB-INF/classes 目录用于存放项目的 .java 源文件编译后的 .class 文件(一般都是自己编写的 Java 类)。Tomcat 只负责运行 web 应用,自然是没有能力去编译源码的,它又不是 IDE 工具。所以如果是手工开发的话,需要自行将编译好的 .class 文件按照包名组织好,放到此目录下。如果是使用 IDE 工具进行开发的话,指定项目编译后的字节码文件输出到此目录下即可,这在新建项目的引导界面会有选项供选择。

lib 用于存放项目需要的多个 .class 字节码打包后的 jar 包,一般都是项目中需要利用到的其他标准类库,web.xml 中存放的是项目的配置信息。

Web 应用的配置描述符 web.xml

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

浏览器提交请求到服务器的方式

以下三种方式都会在浏览器的帮助下,自动生成 HTTP 请求。

上一篇下一篇

猜你喜欢

热点阅读