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。

历史

More information Servlet API 版本, 发布日期 ...
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月
Close

工作模式

  • 客户端发送请求至伺服器
  • 伺服器启动并调用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。

参见

参考文献

外部链接

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.