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。

历史

编辑
Servlet API 历史
Servlet API 版本 发布日期 平台 重要变化
Servlet 5.0 2020年6月12日页面存档备份,存于互联网档案馆 Jakarta EE 9 迁移包名到“jakarta.servlet
Servlet 4.0.3 2019年3月13日页面存档备份,存于互联网档案馆 Jakarta EE 8 去除“Java”商标
Servlet 4.0 2017年9月页面存档备份,存于互联网档案馆 Java EE 8 HTTP/2
Servlet 3.1 2013年5月页面存档备份,存于互联网档案馆 Java EE 7 Non-blocking I/O, HTTP protocol upgrade mechanism (WebSocket)[1]
Servlet 3.0 2009年12月 Java EE 6, Java SE 6 Pluggability, Ease of development, Async Servlet, Security, File Uploading
Servlet 2.5 2005年9月 Java EE 5, Java SE 5 Requires Java SE 5, supports annotation
Servlet 2.4 2003年11月 J2EE 1.4, J2SE 1.3 web.xml uses XML Schema
Servlet 2.3 2001年8月 J2EE 1.3, J2SE 1.2 Addition of Filter
Servlet 2.2 1999年8月 J2EE 1.2, J2SE 1.2 Becomes part of J2EE, introduced independent web applications in .war files
Servlet 2.1 1998年11月 Unspecified First official specification, added RequestDispatcher, ServletContext
Servlet 2.0 JDK 1.1 Part of Java Servlet Development Kit 2.0
Servlet 1.0 1997年6月

工作模式

编辑
  • 客户端发送请求至服务器
  • 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器
  • 服务器将响应返回客户端
  • 其他

通用Servlet

编辑

一般來說,通用Servlet由javax.servlet.GenericServlet實作Servlet介面。程序设计人员可以通过使用或继承这个类来实现通用Servlet应用。

HttpServlet

编辑

javax.servlet.http.HttpServlet实现了专门用于响应HTTP请求的Servlet,提供了响应对应HTTP标准请求的doGet()、doPost()等方法。

生命周期

编辑

当servlet被部署在应用服务器中(应用服务器中用于管理Java组件的部分被抽象成为容器)以后,由容器控制servlet的生命周期。除非特殊指定,否则在容器启动的时候,servlet是不会被加载的,servlet只会在第一次请求的时候被加载和实例化。servlet一旦被加载,一般不会从容器中删除,直至应用服务器关闭或重新启动。但当容器做記憶體回收动作时,servlet有可能被删除。也正是因为这个原因,第一次访问servlet所用的时间要大大多于以后访问所用的时间。

servlet在服务器的运行生命周期为,在第一次请求(或其实体被内存垃圾回收后再被访问)时被加载并执行一次初始化方法,跟着执行正式运行方法,之后会被常驻并每次被请求时直接执行正式运行方法,直到服务器关闭或被清理时执行一次销毁方法后实体销毁。

与JSP的关系

编辑

Java服务器页面(JSP)是HttpServlet的扩展。由于HttpServlet大多是用来响应HTTP请求,并返回Web页面(例如HTMLXML),所以不可避免地,在编写servlet时会涉及大量的HTML内容,这给servlet的书写效率和可读性带来很大障碍,JSP便是在这个基础上产生的。其功能是使用HTML的书写格式,在适当的地方加入Java代码片段,将程序员从复杂的HTML中解放出来,更专注于servlet本身的内容。

JSP在首次被访问的时候被应用服务器转换为servlet,在以后的运行中,容器直接调用这个servlet,而不再访问JSP页面。JSP的实质仍然是servlet。

参见

编辑

参考文献

编辑
  1. ^ What's new in Servlet 3.1? - Java EE 7 moving forward. [2016-09-07]. (原始内容存档于2017-01-17). 

外部链接

编辑

📚 Artikel Terkait di Wikipedia

JSP

库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet程序码。JSP编译器可以把JSP文件编译成用Java程序码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。 JSP从2

Apache Struts

Apache Struts 2是一个用于开发Java EE網路應用程式的開放原始碼網頁應用程式架構。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。 缘起于Apache Struts的WebWork(英语:WebWork)框架,旨在提供相对于Struts框架的增强和改进,

Java applet

Servlet(Server-let)、MIDlet(Mobile Information Device-let)和JSP中的Scriptlet的命名也是基于同样原理。 ActiveX Curl Java Java Servlet Java Web Start JavaFX 丰富互联网应用程序

Jakarta EE

Java服务器页面(Java Server Pages) JSTL - Java服务器页面标准标签库(Java Server Pages Standard Tag Library) JTA - Java事务API(Java Transaction API) JavaMail Servlet - Java Servlet

WAR (文件格式)

在软件工程中,WAR文件(Web应用程序归档,英語:Web application ARchive)是一种JAR文件,其中包含用来分发的JSP、Java Servlet、Java类、XML文件、标签库、静态网页(HTML和相关文件),以及构成Web应用程序的其他资源。 一个WAR文件可能会以与JAR文件相同的

Jetty

Jetty是一个纯粹的基于Java的网页服务器和Java Servlet容器。尽管网页服务器通常用来为人们呈现文档,但是Jetty通常在较大的软件框架中用于计算机与计算机之间的通信。Jetty作为Eclipse基金会的一部分,是一个自由和开源项目。该网页服务器被用在Apache

Apache Tomcat

Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomc

Apache Struts 1

Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller(MVC)设计模式的应用框架,是MVC经典设计模式中的一个经典产品。 在Struts中,已经由一个名为ActionServlet的Servlet充当