【第22期】观点:IT 行业加班,到底有没有价值?

服务器端--Servlet基本知识总结

原创 2017年01月03日 19:06:59

Servlet 简介

Servlet是什么?

Servlet是一个Java编写的程序,此程序是基于Http协议的,并运行在web服务器上或者应用服务器上。它主要是作为web浏览器或其他Http客户端的请求与Http服务器上的数据库或应用程序之间的中间层。也就是,当客户机发送请求至服务器时,服务器可以将请求信息发送给 Servlet ,并让 Servlet 建立起服务器返回给客户机的响应。当启动 Web 服务器或客户机第一次请求服务时,可以自动装入 Servlet。装入后, Servlet 继续运行直到其它客户机发出请求。

使用 CGI技术可以实现同样的效果,但使用CGI技术开发起来过于复杂,且性能方面较差,只要有一个请求到达,Web服务器就会单独分配一个进程来进行处理导致,移植性不好,而Servlet不需要像CGI技术那样分配单独的进程来处理请求,而是单独分配一个线程来进行处理,提升了处理效率。并且Java语言是跨平台的语言,页提升了Web服务器扩展程序的可移植性,所以Servlet技术已经取代了CGI技术,成为B/S架构中的主流技术

 

Servlet 功能

Servlet 可完成如下功能:

(1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML 页面。

(2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面( HTML 片段)。

(3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。

(4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如, Servlet 可以是多参与者的游戏服务器。

(5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至 applet的新连接,并将该连接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下, applet 也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如 IIOP )进行通信。

(6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括( SSI )。

(7) 将定制的处理提供给所有服务器的标准例行程序。例如, Servlet 可以修改如何认证用户。

 

Servlet原理

 

Servlet作为补充Web服务器功能的组件,需要依赖于Servlet容器才能运行。能够充当Servlet容器这个角色的有很多软件,如Tomcat、Weblogic、JBoss等。而这些Servlet容器不仅仅具备了管理Servlet组件的功能,也具备了Web服务器的一些功能,所以很多时候只要安装一个Tomcat软件就同时具备了Web服务器及Servlet容器的双重功能。

在浏览器中输入请求地址后,浏览器会依据IP地址及端口号找到对应的Web服务器,如果请求的是静态资源,Web服务器直接提供响应;如果请求的是动态资源,Web服务器的通信模块会将该请求传递给Servlet容器的通信模块,Servlet容器负责创建Servlet实例,并将请求中的数据解析出来传递给Servlet。在Servlet处理完数据之后,响应结果也是由容器的通信模块负责返回给Web服务器。后续的Servlet的销毁及管理都由容器来负责。


Servlet生命周期

Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化,运行,销毁。

首先,第一个到达服务器的Http请求被委派到Servlet容器中,Servlet容器在调用service()方法之前会先加载一个Servlet对象,调用初始化方法进行初始化,初始化操作执行进行一次,在后续的请求中不会再调用初始化方法;然后Servlet容器处理由多条线程产生的多个请求,每个线程执行一个单一的 Servlet 实例的 service() 方法;请求处理完将输出结果返回客户端,无请求时Servlet容器调用destory()进行释放资源的操作,具体如下:


  • 初始化阶段:

    1,Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。

    2,然后Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了Servlet的初始化配置信息。

    3,Servlet容器创建一个servlet对象。

    4,Servlet容器调用servlet对象的init方法进行初始化,初始化方法只调用一次,在后续的用户请求中将不再调用。


  • 运行阶段:
  • 每次服务器接收到一个Servlet请求时,服务器会产生一个新的线程并调用服务方法。service()方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
  • 当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest和servletResponse对象。

    然后调用service方法,并把这两个参数传递给service方法。Service方法通过servletRequest对象获得请求的

    信息并处理该请求,再通过servletResponse对象生成这个请求的响应结果。


  • 销毁阶段:

    当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,销毁servlet对象以及与servlet对象相关联的servletConfig对象。同时也可以在destroy方法中实现释放资源的操作,如关闭数据库连接,关闭文件输入输出流等。


  • 如图所示:




版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

服务器基础知识【初学者必看】

1. 什么是服务器    就像他的名字一样,服务器在网络上为不同用户提供不同内容的信息、资料和文件。可以说服务器就是Internet网络上[/pre]的资源仓库,正是因为有着种类繁多数量庞大内容丰富的...

服务器硬件知识普及篇(需要配置服务器的朋友可以参考)

开篇一: 服务器主板  服务器主板概述    对于服务器而言,稳定性才是首要,服务器必须承担长年累月高负荷的工作要求,而且不能像台式机一样随意的重起,为了提高起可靠性普遍的做法都是部件的冗余技术,...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

服务器知识

1.带宽计算 网站的服务器带宽,是根据实际情况分析才可以的 网络带宽计算公式是统一的:1M带宽是指比特,并不是平时所说的字节. 比特(bit)是内存中...

[服务器] 网游服务端开发入门知识

原文链接:http://www.cnblogs.com/GameDeveloper/archive/2011/05/24/2055880.html 【广播现在还是服务器控制,没有客户端参与配合。   ...

服务器五大相关基础知识【转】

1 双路     问题:常听说双路至强XX式服务器,最近又出现了双核至强,都是两个CPU,是不是双路等于双核?     答案:不是     无论服务器的单路、双路、四路乃至八路,其中的“路”都是指服...

服务器域名解析知识

近段时间,由于工作原因,对服务器端操作比较频繁,其中遇到了一些技术点,在此记录下,以便自己日后学习。 1、A记录 用来指定主机名(或域名)对应的IP地址记录。用户可以将网站指向到自己的服务...

服务器学习笔记(一)服务器知识简单了解

近来在学习服务器方面的知识,把自己所了解的有关服务器方面的知识与大家交流分享,同想学习服务器方面知识的朋友们一起努力学习。   什么是服务器?服务器是计算机的一种,它是在网络操作系统的控制下为网络环...

认识服务器的几大必备知识

相信不少人一定知道,一个网站的正常运行是离不开服务器的,网站是附属于服务器,那么,大家对服务器了解有多少呢,知道怎么去选择,去维护我们的服务器吗?下面小编整理和收集了几点比较重要关于服务器的知识点,供...

JSP自学笔记(一)服务器端脚本的基本知识

JSP自学笔记(一)服务器端脚本的基本知识 新类是现有类的一种类型向上转型:由导出类型转成基类,向上转型比较安全如果必须向上转型,则继承是必要的,否则要好好考虑下继承是否必要,是否只用组合即可以?对于...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)