小工具      在线工具  汉语词典  css  js  c++  java

web开发中 web 容器的作用(如tomcat)

Java 额外说明

收录于:42天前

我们提到servlet可以理解在服务器端处理数据的Java applet,那么谁负责管理servlet呢?这时候我们就要用到web容器了。它帮助我们管理servlet等,让我们只需要关注业务逻辑。

什么是网络容器?

servlet没有main方法,所以我们如何启动一个servlet、如何结束一个servlet、如何查找一个servlet等都是由另一个Java应用程序控制的。该应用程序称为 Web 容器。

我们最常见的tomcat就是这样一个容器。如果 Web 服务器应用程序收到指向 Servlet 的请求,则服务器不会将该 Servlet 交给该 Servlet 本身,而是交给部署该 Servlet 的容器。容器必须向 servlet 提供 http 请求和响应,并且容器必须调用 servlet 的方法,例如 doPost 或 doGet。

Web容器的作用

Servlet需要由Web容器来管理,那么采用这种机制有什么好处呢?

  • 通讯支持
    利用容器提供的方法,你可以简单的实现servlet与web服务器的对话。否则你就要自己建立server搜创可贴,监听端口,创建新的流等等一系列复杂的操作。而容器的存在就帮我们封装这一系列复杂的操作。使我们能够专注于servlet中的业务逻辑的实现。

  • 生命周期管理
    容器负责servlet的整个生命周期。如何加载类,实例化和初始化servlet,调用servlet方法,并使servlet实例能够被垃圾回收。有了容器,我们就不用花精力去考虑这些资源管理垃圾回收之类的事情。

  • 多线程支持
    容器会自动为接收的每个servlet请求创建一个新的java线程,servlet运行完之后,容器会自动结束这个线程。

  • 声明式实施安全性
    利用容器,可以使用xml部署描述文件来配置安全性,而不必将其硬编码到servlet中。

  • jsp支持
    容器将jsp翻译成java!

容器如何处理请求

容器如何处理请求01.PNG

客户端点击一个URL,它的URL指向一个servlet而不是一个静态接口。

容器如何处理请求02.PNG

容器识别出该请求是针对 servlet 的,因此它创建了两个对象:

  • httpservlet请求
  • httpservlet响应

03.PNG

容器根据请求中的URL找到对应的servlet,为该请求创建或分配一个线程,并将request和response这两个对象传递给servlet线程。

粘贴_图像.png

容器调用 servlet 的 service() 方法。根据请求的类型,service() 方法将调用 doGet() 或 doPost() 方法。

粘贴_图像.png

doGet()方法生成一个动态页面,然后将该页面填充到响应对象中。此时容器仍然拥有响应对象的引用。

粘贴_图像.png

线程结束。容器将响应对象转换为http响应,将其传回客户端,并销毁响应和请求对象。

URL和servlet映射模式

<servlet>
    <servlet-name>Ch1Servlet</servlet-name>
    <servlet-class>ch1Servlet.Ch1Servlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Ch1Servlet</servlet-name>
    <url-pattern>/Ch1Servlet</url-pattern>
  </servlet-mapping>

Servlet 有三个名称:

  • 客户知道的URL名 <url-pattern>/Ch1Servlet</url-pattern>
  • 部署人员知道的秘密的内部名 <servlet-name>Ch1Servlet</servlet-name>
  • 实际文件名 <servlet-class>ch1Servlet.Ch1Servlet</servlet-class>

链接:https://www.jianshu.com/p/99f34a91aefe
 

. . .

相关推荐

额外说明

Andrew Ng 的机器学习错误:ModuleNotFoundError:没有名为“ipympl”的模块

我的问题是 解决方案就是 首先在用命令行打开项目所在目录,先在编译器里面open in terminal,然后conda activate 某个环境,如果使用的是base环境就直接 conda activate然后直接pip install ipympl

额外说明

Mysql:分组且排序

查询用户的信息总条数,并按电话分组,信息总数排序 select 姓名,手机,count(*) as 信息总数 from 表名 GROUP BY 手机ORDER BY 信息总数 desc select username,userphone,count(

额外说明

es搜索高亮展示

在某些分类电商网站中,经常遇到这样一种需求,对搜索出来的数据的某些字段进行高亮展示,这样让产品的某些属性和特点更加容易受到关注,也就是突出商品卖点 在电商或分类网站中,由于要加载的数据量大,如果后端通过程序做处理,这将比较费时费力,而且性能会受到影响,通

额外说明

Android R: mFocusedWindow和mFocusedApp更新流程

Android R: mFocusedWindow和mFocusedApp更新流程 有些场景下会根据mFocusedWindow和mFocusedApp做一下开发。 所以,分析mFocusedWindow和mFocusedApp更新流程还是有必要的。 1

额外说明

Docsify介绍—md文件直接生成网页的工具

Markdown是一种轻量级标记语言,它使用易读易写的纯文本格式,用于编写文档,如README,wiki,博客文章等。Markdown语言最初由约翰·格鲁伯(John Gruber)和亚伦·斯沃茨(Aaron Swartz)在2004年创建,并且得到了广

额外说明

[设计模式-创建型]建造者(Builder)

概括 名称 Builder 结构 动机 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 适用性 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 当构造过程必须允许被构造的对象有不同的表示时。 解析 形象比

额外说明

HTML

前言 1.1、CS架构和BS架构 web网页,我们都不陌生,相信大家都有使用web浏览上网的。那么,学习制作网页前,我们需要清晰哪些概念,准备哪些工具呢?接下来,我们要先了解下。在日常生活中,我们都会上网,或聊天、或阅读、或购物等,浏览很多的网站,而网站

额外说明

Java核心类库篇5——异常

Java核心类库篇5——异常 java.lang.Throwable类是Java语言中错误(Error)和异常(Exception)的超类 其中Error类主要用于描述Java虚拟机无法解决的严重错误,通常无法编码解决,如:JVM挂掉了 等 其中Exce

额外说明

wordpress添加媒体_如何在WordPress中添加社交媒体共享计数小部件

WordPress 添加媒体 Earlier on this blog, we created a WordPress 社交媒体备忘单, but that only showed you how to add social media buttons.

ads via 小工具