Java教程

9.13JavaWeb之Servlet容器

本文主要是介绍9.13JavaWeb之Servlet容器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

9.13JavaWeb之Servlet容器

其他语言部署动态网站的前提条件

需要部署web服务器:

  • 运行 PHP 网站一般选择 Apache 或者 Nginx;

  • 运行 ASP/ASP.NET 网站一般选择 IIS;

  • 运行 Python 网站一般选择内置的 WSGI 服务器模块——wsgiref。

什么是web服务器?

一种对外提供 Web 服务的软件,它可以接收浏览器的 HTTP 请求,并将处理结果返回给浏览器

部署 Servlet 网站时,同样需要一种类似的软件,例如 Tomcat等,通常称为容器而不是服务器。

传统Web 服务器架构模式

特点:

  • 只能提供http(s)服务

  • 让用户访问静态资源(Html文档、图片、Css文件、JavaScript文件等)

Web服务器+编程语言运行环境+数据库管理系统=动态网站

运行时环境:

  • 开发网站使用的编程语言一般都是脚本语言(比如 PHP、ASP、Python),部署网站时都是将源代码直接扔到服务器上

  • 要有解释器的支持;当用户访问动态页面时,解释器负责分析、编译和执行源代码,然后得到处理结果

解释器是执行脚本语言核心的部分:

  • 垃圾回收器:负责及时释放不需要的内存,腾出资源供其它页面使用;

  • 标准库:任何编程语言都会附带标准库,它们提供了很多通用性的功能,极大地提高了开发效率,避免重复造轮子。

各种支持脚本语言运行的部件统称为运行环境,或者运行时(Runtime)。

小结:

部署一个动态网站至少需要的三个组件:

Servlet 容器架构模式--->Web容器架构模式

概念理解:

Servlet基于Java,运行时需要Jre,Jre只包含了JVM、Java 核心类库和一些辅助性性文件。并不支持Servlet规范。

要运行Servlet代码需要一种额外的部件,该部件必须支持 Servlet 规范,实现了 Servlet 接口和一些基础类--->这种部件就是 Servlet 容器

到底什么是Servlet容器?

  • Servlet 代码的运行环境(运行时)

容器特点:

  • 实现 Servlet 规范定义的各种接口和类,为 Servlet 的运行提供底层支持

  • 管理由用户编写的 Servlet 类,比如实例化类(创建对象)、调用方法、销毁类等。

Servlet 类没有 main() 函数,不能独立运行,只能作为一个模块被载入到 Servlet 容器,然后由 Servlet 容器来实例化,并调用其中的方法。

一个动态页面对应一个 Servlet 类,开发一个动态页面就是编写一个 Servlet 类,当用户请求到达时,Servlet 容器会根据配置文件(web.xml)来决定调用哪个类。

Servlet 容器在整个 HTTP 请求流程中的位置如下图

流程分析:

  • Http请求到达Web 服务器,Web服务器判断该请求是静态资源还是动态资源:

    • 静态资源就直接返回,此时相当于用户下载了一个服务器上的文件;

    • 动态资源将无法处理,必须将该请求转发给 Servlet 容器。

  • Servlet 容器接收到请求以后,会根据配置文件(web.xml)找到对应的 Servlet 类,将它加载并实例化,然后调用其中的方法来处理用户请求;

    • 处理结束后,Servlet 容器将处理结果再转交给 Web 服务器,由 Web 服务器将处理结果进行封装,以 HTTP 响应(response)的形式发送给最终的用户。

    • 常用的 Web 容器有 Tomcat、Jboss、Jetty、WebLogic 等,Tomcat由Java官方提供

  • Web 容器往往也会自带 Web 服务器模块,提供基本的 HTTP 服务,可以不用再安装 Apache、IIS、Nginx 等传统意义上的服务器,只需要安装一款 Web 容器,就能部署 Servlet 网站。--->有些称tomcat为web服务器有些称为web容器,概念以及很模糊

使用Web容器作为服务器后:

Servlet容器总结

  • Servlet 容器就是 Servlet 程序的运行环境

    • 实现 Servlet 规范定义的各种接口和类,为 Servlet 的运行提供底层支持;

    • 管理用户编写的 Servlet 类,以及实例化以后的对象;

    • 提供 HTTP 服务,相当于一个简化的服务器。

Servlet 容器自带的 Web 服务器模块没有传统的 Web 服务器强大,也可以将传统的 Web 服务器和 Servlet 容器组合起来,共同完成 HTTP 请求。

 

这篇关于9.13JavaWeb之Servlet容器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!