JSP的Servlet与Tomcat

JSP的Servlet与TomcatJSP的Servlet与Tomcat

大家好,又见面了,我是你们的朋友全栈君。

概念了解

  • JAVA EE(j2ee)即Java Web标准。
  • Tomcat是Servlet的容器,Servlet运行在Tomcat容器当中(如docker镜像运行在docker容器当中)Servlet容器有很多(tomcat,Jboss,weblogic)等;Tomcat根据JSP页面生成对应Servlet的Java文件及class文件。
  • JSP是动态网页技术,出现在Servlet技术之后的,JSP技术是为了解决Servlet的开发效率低下,不方便开发人员开发,其本质还是Servlet。
  • JSP和Servlet会有如下转换:
  1. JSP页面的静态内容、JSP脚本都会转换成Servlet的xxxService()方法,类似于自行创建Servlet时service()方法。
  2. JSP声明部分,转换成Servlet的成员部分。所有JSP声明部分可以使用private,protected,public,static等修饰符,其他地方则不行。
  3. JSP的输出表达式(<%= …%>部分),输出表达式会转换成Servlet的xxxService()方法里的输出语句。
  4. 九个内置对象要么是xxxService()方法的形参,要么是该方法的局部变量,所以九个内置对象只能在JSP脚本和输出表达式中使用。// 不能在jsp Declaration中使用

Servlet在这里插入图片描述

Servlet是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过“请求-响应” 编程模型来访问的这个驻留在服务器内存里的Servlet程序。
在这里插入图片描述

  • Java Servlet具有如下优点:
    (1) Servlet可以和其他资源(数据库、文件、Applet和Java应用程序等)交互,把生
    成的响应内容返回给客户端。如果需要,还可以保存“请求一响应”过程中的信息。
    (2)服务器采用Servlet可以完全授权对本地资源的访问,Servlet自身也会控制外部
    用户的访问数量及访问性质。
    (3) Servlet可以从本地硬盘,或者通过网络从远端硬盘来激活。
    (4)通过Scrvlet Tag技术,可以在HTML页面中动态调用Servleto
    (5) Servlet可以是其他服务的客户端程序。
    (6)通过链接技术,‘。个Servlet可以调用另一个或一系列Servlet来成为它的客户端。
    (7) Servlet API与协议无关。
  • servlet的生命周期

在这里插入图片描述
在这里插入图片描述

  • 实例化和初始化
    一般来说,servlet会在第一次被访问时被实例化,实例化之后,会调用init()方法(该方法在servlet的整个生命周期中只执行一次)来完成一些初始化的操作(比如得到一个数据库连接等)。
  • 处理请求
    接下来,任何对该servlet的每次请求,都会在一个单独的线程中执行servlet的service()方法(service()方法会进一步根据请求的类型,调不同的doGet()或者doPsot()方法)。
  • 销毁servlet
    在servlet被垃圾回收,被销毁之前会调用destroy()方法(该方法在servlet的整个生命周期中也只执行一次)完成一些销毁的操作。

tomcat

在这里插入图片描述

Tomcat是一个免费的开放源代码的Servlet容器。
Tomcat服务器接受客户请求并做出响应的过程如下:
1)客户端(通常都是浏览器)访问Web服务器,发送HTTP请求。
2)Web服务器接收到请求后,传递给Servlet容器。
3)Servlet容器加载Servlet,产生Servlet实例后,向其传递表示请求和响应的对象。
4)Servlet实例使用请求对象得到客户端的请求信息,然后进行相应的处理。
5)Servlet实例将处理结果通过响应对象发送回客户端,容器负责确保响应正确送出,同时将控制返回给Web服务器。

Tomcat与Servlet之间的关系

当初在Apache开发时还未出现Servlet的概念,所以Apache不能内置支持Servleto实
际上,除了Apache,其他许多Web服务器软件都不能直接支持Servleto为了支持Servlet,
通常要单独开发程序,这种程序一般称为服务器小程序容器(Servlet Container),有时也
叫做服务器小程序引擎(Servlet Engine)o它是Web服务器或应用程序服务器的一部分,
用于在发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化基于MIME
的响应,它在Servlet的生命周期内包容和管理Servlet,是一个实时运行的外壳程序。运行
时由Web服务器软件处理一般请求,并把Servlet调用传递给“容器”来处理o Tomcat就
是满足这种需要的JSP/Servlet引擎,是Sun公司的JSP/Servlet的官方实现。
按照工作模式的不同,Servlet容器可以分为以下3类:

  1. 独立运行的Servlet容器
             在这种模式下,Servlet容器作为构成Web服务器的一部分而存在。当使用基于Java的
    Web服务器时,就属于这种情况。这种方式是Tomcat的默认模式,然而大多数Web服务
    器并不是基于Java的,所以就产生了下面的两种其他类型。
  2. 内置的Servlet容器
             Servlet容器由Web服务器插件和Java容器两部分组成。采用这种方式时,Web服务器
    插件需要在某个Web服务器内部地址空间中打开一个JVM(Java虚拟机),在此JVM上
    加载Java容器并运行Servlet。如果客户端调用Servlct,Web服务器插件首先获得此请求的
    控制并将它传递(使用JNI技术)给Java容器,然后Java容器把此请求交给Servlet来处理。
    这种方式运行速度较快,并且能够提供良好的性能,适用于单进程、多线程服务器,但是
    在伸缩性方面存在不足。
  3. 外置的Servlet容器
             采用这种方式时,Servlet容器运行在Web服务器外部地址空问。先由Web服务器插件
    在某个Web服务器外部地址空间打开一个JVM(Java虚拟机),然后加载Java容器来运
    行Servlet。Web服务器插件和JVM之间使用IPC(进程间通信)机制(通常是TCP/IPSockets)。
    如果客户端调用Servlet,Web服务器插件首先获得此请求的控制并将它传递(使用IPCs技
    术)给Java容器,然后Java容器把此请求交给Servlet来处理。这种方式对客户端请求的处
    理速度不如内置Servlet那样快,但是在其他方面(如可伸缩性、稳定性等)具有优势。
             Tomcat属于Servlet容器,其工作模式也分为上述3种,所以Tomcat既可被用作独立
    运行的Servlet引擎(便于开发和调试),又可作为一个需要增强功能的Web服务器(如当
    前的Apache、IIS和Netscape服务器)插件。在配置Tomcat之前,就需要确定采用哪种工
    作模式,工作模式(1)比较简单,直接安装Tomcat即可,工作模式(2)和(3)有些复
    杂,除了安装Tomcat、Web服务器之外,还需要安装连接两者的中间连接件。
             Java Servlet API是Servlet容器和Servlet之间的接U,它定义了Servlet的各种方法,
    还定义了Servlet容器传送给Servlet的对象类,其中最重要的是请求对象ServletRequest和
    响应对象ServletResponseo这两个对象都是由Servlet容器在客户端调用Servlet时产生的,
    Servlet容器把客户请求信息封装在ServletRequest对象中,然后把这两个对象都传送给要调
    用的Servlet,Servlet处理完后把响应结果写入ServletResponse,然后由Servlet容器把响应
    结果发送到客户端。Tomcat服务器接收客户端请求并作出响应的完整过程如图I-l所示。
    在这里插入图片描述
    ①处表示Web服务器接收到客户端发出的HTTP请求后,转发给Servlet容器,
    同时把控制返回Servlet容器;
    ②处表示Servlet容器把响应对象ServletResponse中的处理结。
    果转发给Web服务器,通知Web服务器以HTTP响应的方式把结果发送到客户端,同时把
    控制返回Web服务器。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106677.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月22日 下午2:20
下一篇 2022年4月22日 下午2:20


相关推荐

  • 软件开发的一些概念

    10.关系数据库(RelationalDatabases)关系数据库因为在大规模Web服务上缺乏可扩充性而颇受微词,然而,关系数据库仍然是近20年来计算机技术中最伟大的成就。关系数据库对处

    2021年12月23日
    45
  • 钓鱼网站php,偶遇钓鱼网站的一次代码审计「建议收藏」

    钓鱼网站php,偶遇钓鱼网站的一次代码审计「建议收藏」偶遇一个钓鱼邮件中的钓鱼网站,并与年华大佬做了代码审计。据说近期全国出现多起钓鱼邮件事件,主要以各大高校为主,已有不少人上当,还需多加注意。分析钓鱼网站钓鱼网站采用常用空间钓鱼CMS搭建,可通过百度搜索下载源码。源码观察源码发现,源码中存在360safe防护机制,无法通过正常方式进行攻击。分析猜测钓鱼网站后台管理页面地址,发现地址为无法知道用户名密码,分析源码,查看是否存在绕过。观察index…

    2022年8月24日
    9
  • 计算机一级二级三级缓存,CPU一级缓存,二级缓存和三级缓存是什么意思? CPU缓存有什么用?…

    计算机一级二级三级缓存,CPU一级缓存,二级缓存和三级缓存是什么意思? CPU缓存有什么用?…所谓的 CPU 缓存是 CPU 内部缓存的运行频率 缓存的大小和结构对 CPU 速度的影响更大 因此缓存的大小也是 CPU 的重要性能指标之一 CPU 缓存的工作效率可以远远超过内存和硬盘的速度 以下安装主页主要介绍有关 CPU 缓存的知识 有兴趣的用户可能希望学习 什么是 CPU 缓存 CPU 缓存的用途是什么 CPU 高速缓存 英文为 CacheMemory 是位于 CPU 和内存之间的临时内存 CPU 缓存的功能主

    2026年3月17日
    1
  • 【转载】7个最佳的双因素认证解决方案

    【转载】7个最佳的双因素认证解决方案7 个最佳的双因素认证解决方案本文中 我们将介绍由知名双因素认证服务提供商提供的 7 种最适合的数据保护工具 访问网络帐户的标准程序包括输入登录详细信息 登录名和密码 这是一个单因素身份验证 双因素身份验证 2FA 是一种额外的数据保护措施 这意味着需要额外的步骤才能进行常规登录过程 与单一因素不同 身份验证要求用户输入密码并登录 他们知道的 来访问数据 2FA 可能需要输入在个人移动设备 用户所拥有

    2026年3月18日
    2
  • Linux内核模块详解

    Linux内核模块详解内核模块实验目的内核模块是Linux操作系统中一个比较独特的机制。通过这一章学习,希望能够理解Linux提出内核模块这个机制的意义;理解并掌握Linux实现内核模块机制的基本技术路线;运用Linux提供的工具和命令,掌握操作内核模块的方法。实验内容针对三个层次的要求,本章安排了3个实验。第一个实验,编写一个很简单的内核模块。虽然简单,但它已经具备了内核模块的基本要素。与此同时,…

    2022年7月23日
    10
  • ideavim有什么用_intellij idea社区版

    ideavim有什么用_intellij idea社区版IdeaVim史诗级分享之前就对vim非常着迷,而我本身就是写java代码的,经常使用Idea这个IDE。2019年初,Idea里一个和vim有关的插件,深深的吸引了我,名字叫Ideavim。后来我就开始使用了。用它的时候,idea原本的快捷键很多就会失去自己的效力。需要进行重新映射,我花了一些时间将一些非常常用的快捷键整理收集,然后赋予其ideavim的快捷键。取得了非常不错的效果。使用vim,最大的好处,是减少打代码的时候进行键鼠切换的频率。有一种相当不错流畅感

    2022年10月1日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号