当请求到来时, 必须有人实例化 servlet, 或者至少建立一个新的线程来处理这个请求. 必须有人调用 servlet 的 doPost()或 doGet()方法. 另外还的有人管理 servlet的”生”与”死”, 这个管理方就是 web 容器

什么是容器

servlet 没有 main() 方法, 它们受控于一个 java 应用, 这个 java应用称为 容器

Tomcat 就是这样一个容器, web服务器得到一个servlet请求(不是其他请求,例如一个静态页面请求), 服务器不是把这个请求交个servlet本身,而是交给了部署该servlet的容器, 容器创建新的线程, 要由容器向线程提供http请求和响应, 而且要容器调用servlet方法(doGet()和doPost())

如果没有 tomcat, 那么所有的内容就要自己编写, 例如自己写 socket 等

多亏有了容器, 你可以更专注于自己的业务逻辑, 而不用考虑为线程管理, 安全性和网络通信编写代码.

容器会自动的为它接收的每个servlet请求创建一个新的java线程.

利用容器, 可以使用 XML部署描述文件来配置(和修改)安全性.

容器怎么样把 servlet 映射到 url ?

1. 客户使用 servlet 绝对路径和文件名

2. 容器开发商提供工具完成映射

3. 某种属性来映射

首先, 处于安全性和软件维护方面考虑, 不能使用方案1, 因为不需要让用户知道web的目录结构, 另外, 当要修改目录结构时, 如果采用这种方式, 难于修改, ( 应该做个间接, 做到一改全改 )

而直接使用开发商提供的工具, 又缺乏灵活性, 所以 需要使用部署描述文件把 url 映射到 servlet

在把 servlet部署到web容器时, 会创建一个相当简单的 xml 文档, 这称为 部署描述文件(DD),该文件会告诉容器如何运行你的servlet和jsp。

<servlet> 把内部名映射到完全限定类名

<servlet-mapping> 把内部名映射到公共URL

JSP web 流程

JSP世界中的MVC

HeadFirst jsp 02 (体系结构)的更多相关文章

  1. HeadFirst jsp 03 (MVC)

    创建一个小的 web 应用, mvc, 麻雀虽小, 五脏俱全 补1: servlet没有main()方法, 他们受控与另外一个Java应用, 这个Java应用称为 容器, tomcat就是这么一个容器 ...

  2. HeadFirst Jsp 14 (Structs)

    大的web程序可能很复杂, 分很多”层” 有关 RMI 的部分, 可以参考 headfirst java 中的 RMI 的部分. struts 是一个框架, 框架是一些接口和类的集合, 这些接口和类设 ...

  3. HeadFirst Jsp 07 (使用 jsp)

    Jsp 变成 Servlet, 容器会查看你的JSP, 把它转换成java源代码, 再编译成完整的Java servlet类. Jsp 不需要你的编译, 容器会自动替换成servlet. 在 jsp中 ...

  4. HeadFirst Jsp 05 (属性和监听)

    活用DD, 比如, 我想设置一个email地址, 但是不像在servlet中硬编码, 如果能再web.xml中设置一个参数, 直接拿到这个参数就更好一点. 容器建立一个servlet时, 它会读DD( ...

  5. HeadFirst Jsp 04 (请求和响应作为servlet)

    servlet 的存在就是为了客服服务, servlet的任务是得到一个客户的请求, 再发回一个响应. 由上图可知, web 容器会在启动后就加载所有的servlet类, 并为之创建实例和初始化 注意 ...

  6. Headfirst JSP 01 (概述)

    HTTP 协议 http 是tcp/ip上层协议, 如果你对这些网络协议还不是太熟悉, 下面提供一个非常简单的解释, tcp负责确保从一个网络节点向另一个网络节点发送文件能作为一个完整的文件到达目的地 ...

  7. HeadFirst Jsp 09 (JSTL)

    JSTL (jsp standard tag library) 标准标记库 JSTL 安装, 注意你的每一个项目都需要一个 JSTL副本, 并把它放在WEB-INF/lib 目录下, 在 Tomcat ...

  8. HeadFirst jsp 08 无脚本JSP

    web页面设计人员真的必须懂 java ? web页面人员可以很快学习 EL 语言. 目前不知道 EL 应用前景如何, 但是我们香港系统没有使用 EL. include 指令 include指令告诉容 ...

  9. JSP的体系结构

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/architecture.html: Web服务器需要一个JSP引擎,即处理JSP页面的容器.JSP容器负 ...

随机推荐

  1. 【bzoj1004】[HNOI2008]Cards

    1004: [HNOI2008]Cards Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2928  Solved: 1754[Submit][Sta ...

  2. BZOJ 3714: [PA2014]Kuglarz

    Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,-,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获得奖品.花费c_ij元,魔术师就会告诉你杯子i,i+ ...

  3. 关于mysql 连接数

    mysql基本维护,就必须要知道连接数 进入mysql ,show status    Threads_connected  当前的连接数    Connections  试图连接到(不管是否成功)M ...

  4. BZOJ 3155: Preprefix sum

    大意:给一个数组,先求出SUM[I],然后动态的求出1-I的SUM[I]的和, 这题得化公式: 树状数组维护两个和:SUM(A[I])(1<=I<=X); SUM(A[I]*(N-I+1) ...

  5. 关于Web与JS

    Web包含的范围比较广, JS只是代码逻辑而已. Web比如HTTP Message, SOAP Message, 浏览器流程,工具等. 不仅仅是代码.

  6. 10 个让人惊讶的 jQuery 插件

    说是让人惊讶,你可能会觉得我们没见过世面,但这里提及的一些 jQuery 的插件的确平时比较少见,用的人应该更少. Grid portfolio 使用竖排方式显示条目信息,现在很流行的的内容布局方式. ...

  7. [翻译]Kafka Streams简介: 让流处理变得更简单

    Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...

  8. 添加hive默认配置hiverc

    可以在$HOME中加一个.hiverc文件,并在里面配置hive启动的一些参数. Fro example: http://hadooped.blogspot.com/2013/08/hive-hive ...

  9. zoj Fibonacci Numbers ( java , 简单 ,大数)

    题目 //f(1) = 1, f(2) = 1, f(n > 2) = f(n - 1) + f(n - 2) import java.io.*; import java.util.*; imp ...

  10. 正则表达式(RegExp)

    正则表达式(RegExp) 如何按一定规则快速查找到需要找寻的内容,js的设计者们给我们提供了一个叫正则表达式(RegExp对象),专门用于处理类似问题. RegExp对象表示正则表达式,它是对字符串 ...