HeadFirst jsp 02 (体系结构)
当请求到来时, 必须有人实例化 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 (体系结构)的更多相关文章
- HeadFirst jsp 03 (MVC)
创建一个小的 web 应用, mvc, 麻雀虽小, 五脏俱全 补1: servlet没有main()方法, 他们受控与另外一个Java应用, 这个Java应用称为 容器, tomcat就是这么一个容器 ...
- HeadFirst Jsp 14 (Structs)
大的web程序可能很复杂, 分很多”层” 有关 RMI 的部分, 可以参考 headfirst java 中的 RMI 的部分. struts 是一个框架, 框架是一些接口和类的集合, 这些接口和类设 ...
- HeadFirst Jsp 07 (使用 jsp)
Jsp 变成 Servlet, 容器会查看你的JSP, 把它转换成java源代码, 再编译成完整的Java servlet类. Jsp 不需要你的编译, 容器会自动替换成servlet. 在 jsp中 ...
- HeadFirst Jsp 05 (属性和监听)
活用DD, 比如, 我想设置一个email地址, 但是不像在servlet中硬编码, 如果能再web.xml中设置一个参数, 直接拿到这个参数就更好一点. 容器建立一个servlet时, 它会读DD( ...
- HeadFirst Jsp 04 (请求和响应作为servlet)
servlet 的存在就是为了客服服务, servlet的任务是得到一个客户的请求, 再发回一个响应. 由上图可知, web 容器会在启动后就加载所有的servlet类, 并为之创建实例和初始化 注意 ...
- Headfirst JSP 01 (概述)
HTTP 协议 http 是tcp/ip上层协议, 如果你对这些网络协议还不是太熟悉, 下面提供一个非常简单的解释, tcp负责确保从一个网络节点向另一个网络节点发送文件能作为一个完整的文件到达目的地 ...
- HeadFirst Jsp 09 (JSTL)
JSTL (jsp standard tag library) 标准标记库 JSTL 安装, 注意你的每一个项目都需要一个 JSTL副本, 并把它放在WEB-INF/lib 目录下, 在 Tomcat ...
- HeadFirst jsp 08 无脚本JSP
web页面设计人员真的必须懂 java ? web页面人员可以很快学习 EL 语言. 目前不知道 EL 应用前景如何, 但是我们香港系统没有使用 EL. include 指令 include指令告诉容 ...
- JSP的体系结构
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/architecture.html: Web服务器需要一个JSP引擎,即处理JSP页面的容器.JSP容器负 ...
随机推荐
- aspose.cell 自定义模板 SUM无效
数字类型的单元格, 显示 解决方案: 绑定的DataTable的列为字符串类型. 应该将其设置成数字类型的列
- Codeforces Round #248 (Div. 2)C 题
题目:http://codeforces.com/contest/433/problem/C 没想到做法就各种纠结, 今天做的都快疯掉了, 太弱了, 等题解一出,就各种恍然大悟 不应该不应该 正文: ...
- Virtualbox网络设置和无UI启动
因工作需要,在Macbook上安装Ubuntu 14.04.2虚拟机,需要ssh连接操作. 一番查找资料,实践后可以正常工作了,记录一些信息以备用 无UI启动虚拟机,可使用以下命令: VBoxMana ...
- jquery mobile的学习资料
磨刀不误砍柴工!想要学的快就得有好的资源.jquery mobile只是jquery的一个插件,所以相对简单易学.只要有jquery的基础就好.如果想修改东西的话,那么需要的知识就相对较多了. 书 & ...
- windows 两个用户,默认其中一个用户登录
1. 在开始菜单中搜索“运行”,回车打开,或者Win+R打开运行窗口. 输入“control userpasswords2”或者“rundll32 netplwiz.dll,UsersRunDll”回 ...
- 2014多校第六场 1007 || HDU 4927 Series 1(杨辉三角组合数)
题目链接 题意 : n个数,每操作一次就变成n-1个数,最后变成一个数,输出这个数,操作是指后一个数减前一个数得到的数写下来. 思路 : 找出几个数,算得时候先不要算出来,用式子代替,例如: 1 2 ...
- strncpy 和 strcpy的区别 (要抽时间重点看,未完待续)
strcpy的实现: //GNU-C中的实现(节选): */ char* strcpy(char *d, const char *s) { char *r=d; while((*d++=*s++)); ...
- js判断一个对象是否包含属性的方式
判断一个对象是不是包含属性,我们这里提供三种方式 1,使用in 运算符 var obj = {name:'liwei'}; alert('name' in obj); // return true a ...
- JavaScript基于对象编程
js面向对象特征介绍 javascript是一种面向(基于)对象的动态脚本语言,是一种基于对象(Object)和事件驱动(EventDirven)并具有安全性能的脚本语言.它具有面向对象语言所特有的各 ...
- 【XJOI-NOIP16提高模拟训练9】题解。
http://www.hzxjhs.com:83/contest/55 说实话这次比赛真的很水..然而我只拿了140分,面壁反思. 第一题: 发现数位和sum最大就是9*18,k最大1000,那么su ...