B S架构 服务器虚拟化,B/S 架构及 Tomcat

动态 Web 执行流程

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

430c2eb466c8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

_动态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 目录结构

bin 所有可执行命令都在这个文件夹内,包括启动和关闭 Tomcat 的命令

confTomcat 的配置文件都在这里,包括常用的 server.xml 和 web.xml

每个 web 应用的 WEB-INF 目录下都有一个 web.xml 文件,用来描述该 web 应用相关信息,比如 servlet 类的配置、欢迎页面的配置和设置全局上下文参数等。 但是这和 conf/web.xml 文件有什么关系呢?conf/web.xml 文件中的描述信息对 Tomcat 所管理的所有 web 应用都有效。比如,JSP 本质上是 Servlet ,所以在 conf/web.xml 中对 JSP 完全进行了和 Servlet 一样的配置,这才使得所有的 web 应用可以直接访问 JSP 页面啊。你看,技术本质上都是一样的!也就是说任何一个 web 应用都有两个 web.xml 文件在对它在起作用。

lib存放了 Tomcat 容器所需要的各个库文件

logs 保存了 Tomcat 容器的日志信息

webapps默认存放 web 项目的目录,但是也可以通过指定虚目录,将 web 项目放在其他位置

work程序运行过程中,临时文件都是放在这个位置

Tomcat 配置虚目录

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

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

在标签之前,添加例如的配置信息。其中 path 后跟的是虚目录,必须加上/, docBase 表示文档库的意思,后面跟的是项目在文件系统中的真实物理路径。

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

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

Web 项目

Web 项目相关记录在此处

Web 项目的目录结构

项目名为 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

在 web.xml 中配置应用的首页列表,列表元素从上之下,优先级逐级降低。

index.html

index.jsp

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

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

使用表单

能和用户进行交互,而且只有表单能够发送 post 请求,适合发送大量数据。

使用超链接

不需要和用户进行交互,只能是 get 请求

通过浏览器的地址栏输入地址

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值