zoukankan      html  css  js  c++  java
  • 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 请求。

     

    It's a lonely road!!!
  • 相关阅读:
    B树与B+详解
    处理器拦截器(HandlerInterceptor)详解(转)
    过滤器(Filter)与拦截器(Interceptor )区别
    Redis和MemCache静态Map做缓存区别
    Ubuntu16.10下mysql5.7的安装及远程访问配置
    windows中mysql5.7保存emoji表情
    基于Quartz.NET 实现可中断的任务(转)
    Ubuntu16.10下使用VSCode开发.netcore
    ubuntu16.10 安装ibus中文输入法
    ubuntu 中安装mysql 使用默认用户密码登录
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15264581.html
Copyright © 2011-2022 走看看