一、容器概述

Servlet是一种运行在服务器上的小插件,Servlet最常见的用途是扩展Web服务器的功能,Servlet具有以下的特点:

  • 提供了可被服务器动态加载并执行的程序代码,为来自客户端的请求提供相应的服务。
  • Servlet完全使用Java语言编写,因此要求运行Servlet的服务器必须支持Java语言
  • Servlet完全在服务器端运行,因此他的运行不依赖于浏览器。

Tomcat作为运行Servlet的容器,其基本的功能是负责接收和解析来自客户端的请求,同时把客户端的请求传递给相应的Servlet,并把Servlet的相应结果返回给客户

如果Web服务器应用得到一个指向某Servlet的请求,此时,服务器不是把这个请求交给Servlet本身,而是交给部署该Servlet的容器。由容器向Servelt提供Http请求和响应,而且要由容器调用Servlet的方法,如doGet()或doPost()。流程如下图所示:

二、容器提供什么

如前文所述,要由容器用来管理和运行Servlet,这是为什么呢?容器到底带给我们什么呢?如下所示,是容器提供给我们的,也是使用容器的原因:

  • 通讯支持利用容器提供的方法,可以轻松的让servlet与web服务器对话,无需自己建立ServerSocket、监听端口、创建流等。容器知道自己与Web服务器之间的协议。
  • 生命周期的管理:控制着Servlet的生与死。
  • 多线程支持容器会自动的为其接收的每个Servlet请求创建一个新的Java线程。
  • 声明方式实现安全:利用容器,可以使用XML部署描述文件来配置和修改安全性,而不必将其硬编码写入到Servlet(或其他)类代码中。
  • JSP支持:将JSP翻译成Java。

总而言之,有了容器,我们可以更专注于自己的业务逻辑,而不必考虑为请求监听、线程管理、安全性及网络通讯编写代码。

下图为容器处理请求的过程:

 Servlet示例代码:

/*** 创建一个简单的Servlet类*/
public class Ch1Servlet extends HttpServlet {/*** get请求* @param request  容器创建的请求* @param response 容器创建的响应。 Servlet从此处获取到容器创建的请求和响应。* @throws IOException*/public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {PrintWriter out = response.getWriter();Date today = new Date();//获取到客户请求之后,响应一个HTML页面给客户out.println("<html>\n" +"<!-- 简单的Html页面 -->\n" +"<head>\n" +"    <title>A Login Page</title>\n" +"</head>" +"<body>\n" +"<h1 align=\"center\"> wangy login page</h1>\n" +"<br>" + today+"</body>\n" +"\n" +"</html>");}}

三、 Servlet的三个名字

容器如何找到某个需要的Servlet呢?作为客户端请求的一部分,URL会以某种方式映射到服务器上的一个特定的servlet。我们需要配置这种映射,这牵扯到Servlet的三个名字

1)客户知道的URL名(公共URL名):

        Servley有一个公共的URL名,这是客户所知道的名字,这个名字写在HTML中,当用户点击一个指向该servlet的链接时,就可以把这个公共URL名放在HTTP请求中,发送给服务器。公共URL只是一个虚构的名字,完全为客户提供的。

2)部署人员知道的秘密内部名:

        部署人员可以造一个名字,这个名字只有他自己知道,这个名字也是虚拟的,只用于部署Servlet。

3)实际的文件名:

        开发人员的servlet类有一个完全限定名,其中包括类名和包名。servlet类文件有一个实际的路径和文件名。这取决于其在服务器上的文件位置。

下面是将URL映射到servle

t的部署文件(web.xml)示例:

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><!-- 部署描述文件 -->
<web-app><display-name>Archetype Created Web Application</display-name><!-- servlet部署 --><servlet><servlet-name>Chapter1 servlet</servlet-name> <!-- servlet 部署时的内部名 --><servlet-class>com.wyf.servlet.Ch1.Ch1Servlet</servlet-class> <!-- servlet实际文件名 --></servlet><!-- 将servlet与url映射 --><servlet-mapping><servlet-name>Chapter1 servlet</servlet-name><url-pattern>/Servl</url-pattern> <!-- servlet 客户使用的URL名--></servlet-mapping></web-app>

Servlet基础:容器相关推荐

  1. Servlet基础:接口、类、请求响应、配置、会话追踪、上下文、协作、异常

    10.1 Servlet介绍 ​ Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的Web服务器端编程技术,主要用于在Web服务器端获得客户端的访问请求信息和动 ...

  2. JSP/Servlet基础语法

    相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp ...

  3. Servlet基础(三) Servlet的多线程同步问题

    Servlet基础(三) Servlet的多线程同步问题 Servlet/JSP技术和ASP.PHP等相比,由于其多线程运行而具有很高的执行效率. 由于Servlet/JSP默认是以多线程模式执行的, ...

  4. Servlet基础(一) Servlet基础和关键的API介绍

    转载:http://www.cnblogs.com/mengdd/p/3202550.html Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解 Servlet基础(一) S ...

  5. servlet基础_Servlet基础

    servlet基础 通过本教程,我将尝试使您更接近Java Servlet模型. 在检查servlet规范中定义的类之前,我将解释在开始开发Web应用程序之前需要了解的基本知识. 了解Java Ser ...

  6. 动态网站开发讲课笔记04:Servlet基础

    文章目录 零.本节学习目标 一.Servlet基础 (一)Servlet概述 1.Servlet是什么 2.Servlet容器 3.Servlet应用程序的体系结构 (二)Servlet的特点 1.功 ...

  7. Servlet 基础

    Servlet 基础 简述 什么是Servlet? Servlet是用Java语言编写应用到Web服务器端的扩展技术,他先于JSP产生,可以方便地对Web应用中的HTTP请求进行处理.在JavaWeb ...

  8. Servlet 基础练习题

    Servlet 基础练习题 Servlet 基础 一.单选题 二.多选题 三.判断题 四.填空题 Servlet 基础 点击蓝色字体跳转到Servlet的百度百科,了解更多的Servlet Servl ...

  9. java框架 - Servlet基础框架

    一,servlet定义 Servlet(Server Applet)是Java Servlet的简称,称为服务器端小程序.小服务程序或服务连接器,是一种使用 Java 语言来开发动态网站的技术(用Ja ...

  10. 第三章 Java Servlet基础

    第三章 Java Servlet基础 3.6.2 转发 1.获得RequestDispatcher对象 2.RequestDispatcher对象调用forward()方法实现转发 请求转发工作原理 ...

最新文章

  1. WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类
  2. Kubernetes + CRI + Kata + Firecracker
  3. LaTeX写作技术规范
  4. openresty开发系列1--网关API架构及选型
  5. bzoj 4921: [Lydsy六月月赛]互质序列
  6. 浅析几种常见算法(转载)
  7. 评测征集 | 2021全国知识图谱与语义计算大会
  8. SpringBoot配置ELK环境
  9. 力扣题目——566. 重塑矩阵
  10. 成功之道——永远的知识
  11. Kafka负载均衡策略
  12. 项目计划书——书写模板
  13. 草根IT江湖路之三:希望,在坚持之中
  14. Spring Boot 动态添加/删除定时任务
  15. linux系统不能用投影仪,Linux连接投影仪(ubuntu)失败或显示不正常--未测试
  16. STM32F411 Discovery学习笔记(二)点亮你的第一个LED
  17. 2020-08 前端技术汇总
  18. LibreCAD环境配置
  19. 基于ZigBee和STM32的智能家居控制系统的设计与实现(三)
  20. Nignx 网关 和 GateWay网关

热门文章

  1. 最新中国数据中心排行榜
  2. xmapp phpstorm xdebug安装
  3. 基于YOLO的新型RGB-D融合方法对行人进行检测和3D定位
  4. 对大数据 数据挖掘和机器学习的认识和理解
  5. 将Wi-Fi生成二维码
  6. Java后台给PDF加水印并且合并多个PDF文件
  7. 组态王bitset用法_组态王使用问题解答8
  8. C4D中英文对照—材质编辑器之反射通道
  9. win10计算器rsh_win10 自带计算器快捷键有哪些_windows10计算器快捷键汇总
  10. matlab sae模型,发动机平均值模型的三篇SAE论文