Servlet与Tomcat的关系


Servlet与Tomcat的关系概述

在web项目访问中,多数需要http协议,也就是基于请求和响应,比如你在百度输入一行内容搜索,

那么百度服务器如何处理这个请求呢,他需要创建servlet来处理,servlet其实就是java程序,只是在服务器端的java程序,

servlet通过配置文件拦截你的请求,并进行相应处理,然后展示给你相应界面,那么servlet如何创建? 这时候tomcat用到了,

它就是帮助你创建servlet的东西,所以也称web容器,没有它,没法运行web项目。相对应的web容器有很多,比如Tomcat、Jboss、Weblogic等




Servlet

1、Servlet是什么?

(1)Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序。
(2)Servlet多线程体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器(如Tomcat)负责的。
(3)Servlet的作用:主要功能在于交互式地浏览和修改数据,生成动态Web内容。
(4)Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。

1.1 Servlet 与 Servlet 容器的关系

tomcat容器模型
Context 容器
Tomcat 的容器等级中,Context 容器是直接管理 Servlet 在容器中的包装类 Wrapper,所以 Context 容器如何运行将直接影响 Servlet 的工作方式。

真正管理 Servlet 的容器是 Context 容器,一个 Context 对应一个 Web 工程,在 Tomcat 的配置文件中可以很容易发现这一点,如下:

<Context path="/projectOne " docBase="D:\projects\projectOne"  
reloadable="true" />
1.2 Servlet 如何工作?

当用户从浏览器向服务器发起一个请求,请求信息:

http://hostname: port /contextpath/servletpath 
        ①:hostname 和 port 是用来与服务器建立 TCP 连接。
        ②:【/contextpath/servletpath】即【 URL 】才是用来选择服务器中的哪个子容器来服务用户的请求。
        特别说明:
        Tomcat7.0 中有个映射类【org.apache.tomcat.util.http.mapper】,这个类保存了 Tomcat 的 Container 容器中的所有子容器的信息,
        mapper 将会根据这次请求的 hostnane 和 contextpath 将 host 和 context 容器设置到 Request 的 mappingData 属性中。


Tomcat

Tomcat 是什么?

  Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展,处理动态网页部分。
  Tomcat是运行java的网络服务器,底层是一个socket的程序,同时Tomcat也是JSP和Serlvet的容器

那么为什么我们要用Tomcat呢?

  一般情况下,如果我们使用HTML/CSS/JS编写了一个网页,这个网页只能由我们本地打开,别的人无法通过远程访问这个页面。那么Tomcat就解决了这个问题,让其他人也可以访问我们写的页面。

在这里插入图片描述




扩 展 知 识

Session

(1)Session的三种工作方式
    1.基于 URL Path Parameter,默认就支持;
    2.基于 Cookie,如果你没有修改 Context 容器个 cookies 标识的话,默认也是支持的;
    3.基于 SSL,默认不支持,只有 connector.getAttribute(“SSLEnabled”) 为 TRUE 时才支持。
(2)SSL(Secure Sockets Layer 安全套接层)协议,及其继任者TLS(Transport Layer Security传输层安全)协议,是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密,用于保障网络数据传输安全,利用数据加密技术,确保数据在网络传输过程中不会被截取及窃听。SSL协议已成为全球化标准,所有主要的浏览器和WEB服务器程序都支持SSL协议,可通过安装SSL证书激活SSL协议。
SSL 证书就是遵守 SSL协议的服务器数字证书,由受信任的证书颁发机构(CA机构),验证服务器身份后颁发,部署在服务器上,具有网站身份验证和加密传输双重功能。
如果是第三种情况的话将会根据 javax.servlet.request.ssl_session 属性值设置 Session ID。
(3)有了 Session ID 服务器端就可以创建 HttpSession 对象了,第一次触发是通过 request. getSession() 方法,如果当前的 Session ID 还没有对应的 HttpSession 对象那么就创建一个新的,并将这个对象加到 org.apache.catalina. Manager 的 sessions 容器中保存,Manager 类将管理所有 Session 的生命周期,Session 过期将被回收,服务器关闭,Session 将被序列化到磁盘等。只要这个 HttpSession 对象存在,用户就可以根据 Session ID 来获取到这个对象,也就达到了状态的保持。
(4)Session 的致命弱点是不容易在多台服务器之间共享。

Servlet 中的 Listener

(1)整个 Tomcat 服务器中 Listener 使用的非常广泛,它是基于【观察者模式】设计的。
Listener 的设计对开发 Servlet 应用程序提供了一种快捷的手段,能够方便的从另一个【纵向维度控制程序和数据】。
(2)目前 Servlet 中提供了 6 种两类事件的观察者接口,它们分别是:
4 个 EventListeners 类型的,ServletContextAttributeListener、ServletRequestAttributeListener、ServletRequestListener、HttpSessionAttributeListener 和 2 个 LifecycleListeners 类型的,ServletContextListener、HttpSessionListener。
这些 Listener 的实现类可以配置在 web.xml 中的 标签中。当然也可以在应用程序中动态添加 Listener,需要注意的是 ServletContextListener 在容器启动之后就不能再添加新的,因为它所监听的事件已经不会再出现。掌握这些 Listener 的使用,能够让我们的程序设计的更加灵活。

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值