什么是容器?

servlet没用main方法,它们受控于另一个java应用程序,这个应用程序就称为容器。

tomcat就是这样一个容器。当web服务器得到一个指向某servlet的请求,此时服务器不是直接将请求交给该servlet本身,而是交由部署该servlet的容器,由容器向servlet提供HTTP请求和响应,而且要由容器调用servlet的方法,如doPost()或doGet()。容器主要提供一下几个支持:

  1. 通信支持:利用容器提供的方法,你能轻松的让servlet 与web服务器对话,无需自己建立与web服务器之间的通信
  2. 生命周期管理:控制servlet的生命周期:servlet的加载、实例化和初始化servlet、调用servlet方法,并使servlet能被垃圾回收器回收
  3. 多线程支持:容器会自动为它接受的每个请求创建一个新的java线程来处理此请求
  4. 声明方式实现安全:使用XML部署描述文件来配置安全性
  5. jsp支持

容器处理请求过程

  1. 用户点击一个链接,其url指向一个servlet而不是指向一个静态页面
  2. 容器根据url解析出对应的servlet,并为该请求创建两个对象:1)HttpServletResponse 2)HttpServletRequest
  3. 容器根据请求中的url找到正确的servlet,为这个请求创建或分配一个线程,并把该请求和响应传递给这个servlet线程
  4. 容器调用servlet的service()方法。根据请求的不同类型,service()方法会调用doGet()或doPost()方法。
  5. do**()方法生成动态页面,并把这个页面注入响应对象。
  6. 线程结束,容器把响应对象转换为一个http响应,并返回给客户,然后删除请求和响应对象。

下面是一个servlet示例:

public class HelloWoldServlet extends HttpServlet{
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException{
PrintWriter out = response.getWriter();
out.println("Hello World!");
}
}

j2ee爬坑行之一:web容器的更多相关文章

  1. j2ee爬坑行之二 servlet

    servlet生命周期 web容器加载servlet 类 web容器调用servlet的构造函数,初始化servlet. web容器调用servlet的init()方法.注意该方法在servlet的一 ...

  2. 分层架构web容器的配置安全

    转自:http://hi.baidu.com/shineo__o/item/7520d54c24d234c71081da82 /ps:本以为这是一个偶然配置失误造成的问题,但最近几天无聊时测试发现,有 ...

  3. Web容器自己主动对HTTP请求中參数进行URLDecode处理

    这篇文章转载自 : Web容器自己主动对HTTP请求中參数进行URLDecode处理 如题.在Java中或许非常多人都没有注意到当我们发送一个http请求时,假设附带的參数被URLEncode之后,到 ...

  4. 【饿了么】—— Vue2.0高仿饿了么核心模块&移动端Web App项目爬坑(三)

    前言:接着上一篇项目总结,这一篇是学习过程记录的最后一篇,这里会梳理:评论组件.商家组件.优化.打包.相关资料链接.项目github地址:https://github.com/66Web/ljq_el ...

  5. j2ee的容器:web容器和ejb容器的概念

    在J2EE中,容器充当的是中间件的角色. 两种主要容器的概念 Web容器 给处于其中的应用程序组件(JSP.Servlet)提供一个环境,使得JSP,Servlet能直接和容器中的环境变量.接口交互而 ...

  6. WEB 容器、WEB服务和应用服务器的区别与联系

    Web容器:    何为容器?    容器是一种服务调用规范框架,j2ee大量运用了容器和组件技术来构建分层的企业级应用,在J2EE规范中,相应的有Web Container和EJB Containe ...

  7. 前端工作日常爬坑之——单页面微信开发Jssdk相关,以及jssdk图片直传自己服务器的实现。

    日常爬坑 遇到的情况大致说明: 项目基于Vue2全家桶实现,vue-router控制前端路由,路由模式是History(主要是领导追求太高,觉得hash带#号太丑,然后遇到了小坑...),主要是服务于 ...

  8. 微信小程序爬坑日记

    新公司上手小程序.30天,从入门到现在,还没放弃... 虽然小程序发布出来快一年了,爬坑的兄弟们大多把坑都踩平了.而我一直停留在"Hello World"的学习阶段.一来没项目,只 ...

  9. servlet入门学习之Web容器

    一.web服务器 web服务器(程序/软件) 即:www服务器或http服务器.提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL.向浏览器提供服务的程序. 1.Web服务器是指 ...

随机推荐

  1. 适配iOS7uinavigationbar遮挡tableView的问题

    //适配iOS7uinavigationbar遮挡tableView的问题 if([[[UIDevice currentDevice]systemVersion]floatValue]>=7.0 ...

  2. 2013ACM暑假集训总结-致将走上大三征途的我

    回想起这个暑假,从开始与雄鹰一起的纠结要不要进集训队,与吉吉博博组队参加地大邀请赛,害怕进不了集训队.当时激励我月份开始接触的,记得当时在弄运动会来着,然后就问了雄鹰一些输入输出的东西,怀着满心的期待 ...

  3. Android源代码分析之Framework的MediaPlayer

    在Android中MediaPlayer用来播放音频和视频文件,在这里分析下在Framework层中MediaPlayer是怎样调用的.MediaPlayer的代码位于:./frameworks/ba ...

  4. The builder launch configuration could not be found

    Export Wizard Error      Errors occurred during the build Problems occured when invoking code from p ...

  5. Fedora14下首次搭建Samba服务器遇到的一些问题

    SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的通信协议.而Samba则是在Linux和Unix系统上实现SMB协议的一个免费软件,由服务器及客户端程 ...

  6. 案例:计算1!+2!+3!+......+n!

    /* * 1!+2!+3!+......+n! * */ import java.util.Scanner; public class ForTest{ public static void main ...

  7. android核心服务初探

    终于进入android学习的进阶阶段,第一个课题是android的核心服务.首先,让我们来认识一下核心服务. android核心服务与app服务有所区别.app服务继承自Service基类,在app运 ...

  8. 解决JFreeChart中文乱码问题

    以下是解决X轴,Y轴中文字符乱码的代码: JFreeChart chart = ChartFactory.createBarChart3D("管网损耗",// 图表标题 " ...

  9. python简单小爬虫爬取易车网图片

    上代码: import requests,urllib.request from bs4 import BeautifulSoup url = 'http://photo.bitauto.com/' ...

  10. C#学习第四天

    今天主要学习了结构方面的知识,首先是定义,代码: struct<typeName> { <memberDeclarations> } struct route { public ...