Servlet是什么

Servlet是什么

维基百科:
Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

最早支持Servlet标准的是JavaSoft的Java Web Server。此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。
Java Servlet技术简称Servlet技术,是Java开发Web应用的底层技术。由Sun公司于1996年发布,用来代替CGU----当时生成Web动态内容的主流技术。CGI的问题是每一个WEB请求都需要重新启动一个进程来处理。创建进程需要消耗不少CPU周期,导致难以编写刻苦鏖战的CGI程序,而Servlet在创建后(处理第一个请求时)就一直保存在内存中,这就比CGI有着更好的性能。

Servlet是一个Java程序,一个servlet应用有一个或多个Servlet程序。JSP页面会被转换和编译成servlet程序。

Servlet程序无法独立运行,必须运行在Servlet容器中。Servlet容器将用户的请求床底给servlet应用,并将结果返回给用户。由于大部分Servlet用用都包含多个JSP页面,因此更准确地说是“Servlet/JSP应用”。

Servlet/JSP容器是一个可以同时处理Servlet和静态内容的Web容器。过去,由于通常认为HTTP服务器比Servlet/JSP 容器更加可靠,因此人们习惯将servlet容器当做HTTP服务器的一个模块,这种模式下,HTTP服务器用来处理静态资源,Servlet容器则负责生成动态内容。
在这里插入图片描述

工作模式

在这里插入图片描述
1、客户端请求该 Servlet;
2、加载 Servlet 类到内存;
3、实例化并调用init()方法初始化该 Servlet;
4、service()(根据请求方法不同调用doGet() 或者 doPost(),此外还有doHead()、doPut()、doTrace()、doDelete()、doOptions());
5、destroy();
6、加载和实例化 Servlet。这项操作一般是动态执行的。然而,Server 通常会提供一个管理的选项,用于在 Server 启动时强制装载和初始化特定的 Servlet;
7、Server 创建一个 Servlet的实例;
8、第一个客户端的请求到达 Server;
9、Server 调用 Servlet 的 init() 方法(可配置为 Server 创建 Servlet 实例时调用,在 web.xml 中 标签下配置 标签,配置的值为整型,值越小 Servlet 的启动优先级越高);
10、一个客户端的请求到达 Server;
11、Server 创建一个请求对象,处理客户端请求;
12、Server 创建一个响应对象,响应客户端请求;
13、Server 激活 Servlet 的 service() 方法,传递请求和响应对象作为参数;
14、service() 方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息;
15、service() 方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如 doGet() 或 doPost() 或程序员自己开发的新的方法;
16、对于更多的客户端请求,Server 创建新的请求和响应对象,仍然激活此 Servlet 的 service() 方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用 init() 方法。一般 Servlet 只初始化一次(只有一个对象),当 Server 不再需要 Servlet 时(一般当 Server 关闭时),Server 调用 Servlet 的 destroy() 方法。

Servlet的学习离不开每天都在用的Tomcat,它们之间到底有什么妩媚的关系呢~
https://zhuanlan.zhihu.com/p/54121733

感谢大神:
https://www.ibm.com/developerworks/cn/java/j-lo-servlet/
http://www.360doc.com/content/16/1203/18/22355405_611594605.shtml
https://www.zhihu.com/question/21416727

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值