1 在这个博客中,我将描述一下web服务器、Servlet容器的基本概念,以及Servlet容器和jvm之间的关系。我想要证明的是Servlet容器不过就是一个java程序。

2 什么是web服务器

在了解什么是Servlet容器前,我们需要先知道什么是web服务器。

web服务器使用http协议传输数据。下面是一个简单的例子:一个用户在浏览器中输入一个url(例如,www.baidu.com),然后它将会获取到一个web页面。因此,web服务器做的事情是发送一个web页面给浏览器。http协议指定了传输的请求和响应的数据格式。

3 什么是Servlet容器

就上面的例子,client/server模式只是传输静态的文件,client告诉server我需要哪个文件,然后server就把它传给client。如果用户想要获取的页面是基于它的输入的,这个基本的静态文件传输功能是不够的。Servlet容器的基本思想是在服务器端使用java动态生成web页面。所以,本质上Servlet容器是server的一部分,是它和Servlet进行交互的。

4 什么是Servlet

Servlet是javax.servlet包定义的一个接口。它生命了一个Servlet生命周期中的三个基本的方法,init()、service()和destroy()。这三个基本方法由每个Servlet所实现,并且在特定的时间由服务器所触发。

4.1 init()方法在Servlet生命周期的初始化阶段被调用。它以javax.servlet.ServletConfig接口对象为参数,来获取web应用的初始化参数。

4.2 service ()方法被每个请求所触发,每个请求在自己的线程中被serviced,也就是说,每次service()方法被调用都是在自己的线程中。Servlet容器为每个请求调用service()方法。service()方法辨别请求的类型,然后把它分发给合适的处理方法。

4.3 destroy()方法在Servlet对象需要被销毁的时候调用。它释放Servlet对象所持有的资源。

Servlet也是运行在JVM上,Servlet容器负责Servlet的创建、执行和销毁。

5 Servlet容器和服务器是怎样处理一次请求的

第一步,web服务器接收到一个http请求;

第二步,web服务器将请求转发给Servlet容器;

第三步,如果对应的Servlet还没有被加载,那么该Servlet将会被动态加载进Servlet容器的地址空间;

第四步,Servlet容器触发Servlet的init()方法,该方法只会在加载的时候触发一次;

第五步,Servlet容器触发Servlet的service()方法来处理http请求,从请求中读取数据并且生成响应。这个Servlet还在Servlet容器的地址空间中,还可以处理其它的http请求;

第六步,web服务器将动态生成的响应返回给客户端。

6 jvm的角色

使用servlet来让jvm在独立的java线程中来处理每个请求是Servlet容器的一个关键的优势。每个servlet是一个具有特殊组件的java类来对应http请求。Servlet容器的主要功能是将请求转发给正确的Servlet处理,然后再把处理的结果交给web服务器。在大多数情况下,Servlet容器运行在一个jvm实例中,但是当Servlet容器需要多个jvm实例时,也有解决方案。

问题,当多个同类型的http请求来了时,Servlet容器中的Servlet对象需要同时服务多个线程的话,线程安全如何保障?

what is Servlet Container[转载]的更多相关文章

  1. What is the difference Apache (Http Server) and Tomcat (Servlet Container)

    The Apache Project The Apache Project is a collaborative software development effort. Its goal is to ...

  2. Web container==Servlet container

    Web container From Wikipedia, the free encyclopedia   (Redirected from Servlet container)     Web co ...

  3. 1.端口被占用问题:Embedded servlet container failed to start. Port 8097 was already in use.

    1.端口被占用问题:Embedded servlet container failed to start. Port 8097 was already in use.netstat -anonetst ...

  4. SpringBoot项目 org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Jetty servlet container报错

    SpringBoot项目启动报错 ERROR 2172 --- [ main] o.s.boot.SpringApplication : Application startup failed org. ...

  5. MyEclipse2014配置Tomcat开发JavaWeb程序JSP以及Servlet(转载)

    转载地址:http://blog.csdn.net/21aspnet/article/details/21867241 1.安装准备 1).下载安装MyEclipse2014,这已经是最新版本. 2) ...

  6. JavaWeb的学习之Servlet(转载自孤傲苍狼)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  7. Chapter 2: A Simple Servlet Container

    一.这一章从头构建一个简单的Servlet容器,可以处理Servlet和静态资源(如html文件/图片等). 要处理Servlet,必须遵循javax.servlet.Servlet规范,而处理静态资 ...

  8. Javaweb基础--->Servlet(转载)

    今天看到这篇博客,感觉还不错,拿来借鉴学习一下. 一.Servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客 ...

  9. servlet container:tomcat jetty and undertow

    1 spring boot内嵌容器支持tomcat.jetty和undertow 但是undertow性能最好,详见: https://examples.javacodegeeks.com/enter ...

随机推荐

  1. 第1节 yarn:13、yarn资源调度的介绍

    Yarn资源调度 yarn集群的监控管理界面: http://192.168.52.100:8088/cluster jobHistoryServer查看界面: http://192.168.52.1 ...

  2. 德尔福 XE5 安卓权限设置

    http://delphi.org/2013/10/delphi-xe5-android-uses-permissions/ The permissions required by a Delphi ...

  3. LG-P1311选择客栈

    题目 暴力十分好想但你写不出来qwq 正解十分好写但你想不出来qaq 我们先读题,发现k其实没什么用 同时暴力枚举两个客栈的话会超时,所以只能同时枚举一个.我们枚举第二个客栈,然后用第二个客栈反推出前 ...

  4. HDU4415 Assassin’s Creed

    题目大意:有n个人,每个人有x,y两个值.x代表干掉他得到的分数,分数和不超过m;y代表干掉他后你能额外干掉多少个,且不计入总分. 求干掉人数最多为多少,以及最小的分. ~~~~~~~~~~~~~~~ ...

  5. 查看密码存放地-shadow

    shadow 位置:/cat/shadow 作用:存放用户的密码等信息 使用查看命令以后得到以下数据 我们会看到9个字段,分别用  :隔开,如上图所示一一解释: 第一字段:用户名称 第二字段:加密密码 ...

  6. webstrom破解-webstrom2018.2.4破解方法(xjl456852原创)

    方法一: 获取注册码: http://idea.lanyus.com/ 方法二: 使用破解补丁 放在安装目录的bin目录下,并且编辑bin目录下的文件 如果使用的32位的webstrom就编辑webs ...

  7. 九度oj 题目1205:N阶楼梯上楼问题

    题目1205:N阶楼梯上楼问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:4990 解决:2039 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用 ...

  8. 接龙游戏(codevs 1051)

    1051 接龙游戏  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 给出了N个单词,已经按长度排好了序 ...

  9. Git Cheat Sheet 中文版

    Git Cheat Sheet 中文版 索引 配置 配置文件 创建 本地修改 搜索 提交历史 分支与标签 更新与发布 合并与重置 撤销 Git Flow 配置 列出当前配置: $ git config ...

  10. js格式化日期时间

    // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).周(E).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1 ...