Tomcat

注:以下资料摘自孙鑫的《sevlet/JSP深入详解》,仅用于个人学习使用。

一.web技术的发展

早期web是静态页面的浏览,使用HTML编写,放入服务器。

1.1浏览器请求静态页面的流程

随着发展,用户访问的资源不仅仅局限于静态网页,更多的应用需要根据用户的请求动态生成页面信息 ,复杂一些的还需要从数据库中提取数据,经过一定的运算,生成一个页面返回给客户。

早期使用的Web服务器扩展机制是CGI,它允许用户调用Web服务器上的CGI程序。CGI的全称是Common Gateway Interface,即公共网关接口。大多数的CGI程序使用Perl来编写,也有使用C、Python或PHP来编写的。CGI程序编写是非常困难的,对用户请求的响应时间较长、以进程方式运行导致性能受限等。由于CGI程序的这些缺点,开发人员需要其他的CGI方案。97年SUN公司推出了Servlet,作为Java的CGI解决方案。

Java Servlet(Java服务器小程序)是一个基于Java技术的Web组件,运行在服务器端,由Servlet容器(有时也称作Servlet引擎)所管理,用于生成动态的内容。Servlet不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用Servlet的方法,Servlet容器在Servlet的生命周期内包容和管理Servlet。JSP技术推出后,管理和运行Servlet的容器也被称为Web容器。

那么在用户点击一个URL之后用户通过访问Servlet,Web服务器接收请求后,并非将请求直接交给Servlet,而是交给Servlet容器。Servlet容器实例化Servlet,调用Servlet的一个特定方法对请求进行处理,并产生一个响应。这个响应由Servlet容器返回给Web服务器,Web服务器包装这个响应,以HTTP响应的形式发送给Web浏览器。

servlet的特点:单实例多线程(每个请求在一个独立的线程中运行,而提供服务的Servlet实例只有一个);使用Java编写,具有Java的一切优点;可以访问Java平台丰富的类库,使得各种应用的开发更为容易,用了Java之后都会觉得Java的类库真的很方便,比c++更加受欢迎。

2.Tomcat(servlet的运行环境)  

学习servlet技术首先需要servlet的运行环境,我们这里采用Tomcat容器

1.2 Tomcat服务器接受客户请求并做出响应的过程

1.客户端访问Web服务器,发送HTTP请求。

2.Web服务器接收到请求后,传递给Servlet容器。

3. Servlet容器加载Servlet,产生Servlet实例,向其传递表示请求和响应的对象。

4. Servlet实例使用请求对象(Request)得到客户端的请求信息,然后进行相应的处理。

5. Servlet实例将处理结果通过响应对象(Response)发送回客户端,容器负责确保响应正确送出,同时将控制返回给Web服务器。

Tomcat是Web服务器和Servlet容器的结合。

Web服务器:是网络环境下为客户提供某种服务的专用计算机,简单的来说就是将计算机的资源映射为一个URL供外界访问

Servlet容器:Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。任何一个应用程序必然包括三个步骤:

1.接收请求

2.处理请求

3.响应请求

接收和响应请求是共性功能,没有差异性,所以把这两种步骤抽取成web服务器。处理请求逻辑上和这两个步骤不同,被抽取出来做成servlet,再到后来servlet被抽取成三层

servlet学习(一)的更多相关文章

  1. JSP&Servlet学习手册

    JSP&Servlet学习手册 沙琪玛 书 目录 JSP 指令... 3 书写方式... 3 指令列表... 3 JSP 内置对象... 3 内置对象特点... 3 常用内置对象... 3 o ...

  2. Servlet 学习笔记

    Servlet 运行在服务器上的 java 类: Servlet 容器为 javaWeb 应用提供运行时环境,负责管理 servlet 和 jsp 生命周期,以及管理他们的共享数据. 现在我们知道了 ...

  3. Servlet学习:(三)Servlet3.0 上传文件

    转: Servlet学习:(三)Servlet3.0 上传文件 2018年08月03日 11:57:58 iDark_CSDN 阅读数:362   一.注意事项 客户端(浏览器) 表单的提交方法必须是 ...

  4. Servlet学习(九)——request

    request运行流程在Servlet学习(四)——response已介绍,不再赘述 1.通过抓包工具获取Http请求 因为request代表请求,所以我们可以通过该对象分别获得Http请求的请求行, ...

  5. # jsp及servlet学习笔记

    目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...

  6. Servlet学习笔记(四)

    目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...

  7. Servlet学习笔记(三)

    目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...

  8. Servlet学习笔记(二)

    目录 Servlet学习笔记(二) Request对象 1.request和response对象: 2.request对象继承体系结构: 3.什么是HttpServletRequest ? 4.Htt ...

  9. servlet 学习(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  10. JavaWeb学习总结-04 Servlet 学习和使用

    一 Servlet 1 Servlet概念 Servlet时运行在服务器端的Java程序. Servlet的框架核心是 javax.servlet.Servlet 接口. 所有自定义的Servlet都 ...

随机推荐

  1. React 17 发布候选版本, 没有添加新功能

    React 17 发布候选版本, 没有添加新功能 React v17.0 Release Candidate: No New Features https://reactjs.org/blog/202 ...

  2. webpack & chunkhash

    webpack & chunkhash https://webpack.js.org/configuration/output/#outputchunkfilename https://web ...

  3. multi selects & mutually exclusive

    multi selects & mutually exclusive 互斥 selects import React, { useState, // useEffect, // useRef, ...

  4. git alias & zsh

    git alias & zsh VPN & git work tree # git pull === gp ➜ .git git:(feature/select-seat-system ...

  5. vue SSR & asyncData & nuxt.js

    vue SSR & asyncData & nuxt.js https://zh.nuxtjs.org/api/ https://www.cnblogs.com/xgqfrms/p/1 ...

  6. 人物传记JULLIAN MURPHY:投资哪家强,区块链必然>股票+房地产

    今年上半年在金融股市出现巨大波动的时候,星盟的项目审核经理JULLIAN MURPHY发现了一个有趣的现象:各种熔断和暴跌的背后,特斯拉的股票却从去年年末开始至今已经暴涨了12倍,即便中途有所回落,但 ...

  7. HDFS 02 - HDFS 的机制:副本机制、机架感知机制、负载均衡机制

    目录 1 - HDFS 的副本机制 2 - HDFS 的机架感知机制 3 - HDFS 的负载均衡机制 参考资料 版权声明 1 - HDFS 的副本机制 HDFS 中的文件,在物理上都是以分块(blo ...

  8. Python学习笔记_类

    class Animal(object): # 定义父类animal def __init__(self,name,sound): # 初始化属性 name sound self.name = nam ...

  9. 生成类库项目时同时生成的pdb文件是什么东东?

    英文全称:Program Database File Debug里的PDB是full,保存着调试和项目状态信息.有断言.堆栈检查等代码.可以对程序的调试配置进行增量链接.Release 里的PDB是p ...

  10. centos7下载和安装 通过xshell连接,有手就行,小白教程

    下载步骤: https://mirrors.aliyun.com/centos/?spm=a2c6h.13651104.0.0.3c3712b2NaHUdY 点击下载或者复制链接到迅雷下载 下载好以后 ...