<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Java_Servlet</id>
	<title>Java Servlet - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Java_Servlet"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Java_Servlet&amp;action=history"/>
	<updated>2026-06-23T07:26:56Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Java_Servlet&amp;diff=74564&amp;oldid=prev</id>
		<title>imported&gt;Cwek：​/* top */</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Java_Servlet&amp;diff=74564&amp;oldid=prev"/>
		<updated>2024-06-13T02:46:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;top&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
|1= zh-hans:类; zh-hant:類別;&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Servlet&amp;#039;&amp;#039;&amp;#039;（Server Applet），全称&amp;#039;&amp;#039;&amp;#039;Java Servlet&amp;#039;&amp;#039;&amp;#039;。是用[[Java]]编写的[[服务器]]端[[程序]]。其主要功能在于交互式地浏览和修改数据，生成动态[[Web]]内容。狭义的Servlet是指Java语言实现的一个[[介面 (資訊科技)|接口]]，广义的Servlet是指任何实现了这个Servlet接口的[[类 (计算机科学)|類別]]，一般情况下，人们将Servlet理解为后者。&lt;br /&gt;
&lt;br /&gt;
Servlet运行于支持Java的[[应用服务器]]中。从实现上讲，Servlet可以响应任何类型的请求，但绝大多数情况下Servlet只用来扩展基于[[HTTP]][[协议]]的[[Web服务器]]。&lt;br /&gt;
&lt;br /&gt;
最早支持Servlet标准的是JavaSoft的Java Web Server。此后，一些其它的基于Java的Web服务器开始支持标准的Servlet。&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Servlet API 历史&lt;br /&gt;
! Servlet API 版本 !! 发布日期 !! 平台 !! 重要变化&lt;br /&gt;
|-&lt;br /&gt;
|Servlet 5.0&lt;br /&gt;
|[https://jakarta.ee/specifications/servlet/5.0/ 2020年6月12日] {{Wayback|url=https://jakarta.ee/specifications/servlet/5.0/ |date=20201210214940 }}&lt;br /&gt;
|Jakarta EE 9&lt;br /&gt;
|迁移包名到“&amp;lt;code&amp;gt;jakarta.servlet&amp;lt;/code&amp;gt;”&lt;br /&gt;
|-&lt;br /&gt;
|Servlet 4.0.3&lt;br /&gt;
|[https://jakarta.ee/specifications/servlet/4.0/ 2019年3月13日] {{Wayback|url=https://jakarta.ee/specifications/servlet/4.0/ |date=20201028122138 }}&lt;br /&gt;
|Jakarta EE 8&lt;br /&gt;
|去除“Java”商标&lt;br /&gt;
|-&lt;br /&gt;
| Servlet 4.0 || [https://jcp.org/en/jsr/detail?id=369 2017年9月] {{Wayback|url=https://jcp.org/en/jsr/detail?id=369 |date=20210129230036 }} || Java EE 8 || [[HTTP/2]]&lt;br /&gt;
|-&lt;br /&gt;
| Servlet 3.1 || [http://jcp.org/en/jsr/detail?id=340 2013年5月] {{Wayback|url=http://jcp.org/en/jsr/detail?id=340 |date=20210130191332 }} || Java EE 7 || Non-blocking I/O, HTTP protocol upgrade mechanism ([[WebSocket]])&amp;lt;ref&amp;gt;{{Cite web |url=https://blogs.oracle.com/arungupta/entry/what_s_new_in_servlet |title=What&amp;#039;s new in Servlet 3.1? - Java EE 7 moving forward |accessdate=2016-09-07 |archive-date=2017-01-17 |archive-url=https://web.archive.org/web/20170117195341/https://blogs.oracle.com/arungupta/entry/what_s_new_in_servlet |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Servlet 3.0 || [https://web.archive.org/web/20110806105927/http://www.javaworld.com/javaworld/jw-02-2009/jw-02-servlet3.html 2009年12月] || Java EE 6, Java SE 6 || Pluggability, Ease of development, Async Servlet, Security, File Uploading&lt;br /&gt;
|-&lt;br /&gt;
| Servlet 2.5 || [https://web.archive.org/web/20080609055213/http://www.javaworld.com/javaworld/jw-01-2006/jw-0102-servlet.html 2005年9月] || Java EE 5, Java SE 5 || Requires Java SE 5, supports annotation&lt;br /&gt;
|-&lt;br /&gt;
| Servlet 2.4 || [https://web.archive.org/web/20080609055812/http://www.javaworld.com/jw-03-2003/jw-0328-servlet.html 2003年11月] || J2EE 1.4, J2SE 1.3 || web.xml uses XML Schema&lt;br /&gt;
|-&lt;br /&gt;
| Servlet 2.3 || [https://web.archive.org/web/20080516235155/http://www.javaworld.com/jw-01-2001/jw-0126-servletapi.html 2001年8月]|| J2EE 1.3, J2SE 1.2 || Addition of &amp;lt;code&amp;gt;Filter&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Servlet 2.2 || [https://web.archive.org/web/20080611155209/http://www.javaworld.com/jw-10-1999/jw-10-servletapi.html 1999年8月]|| J2EE 1.2, J2SE 1.2 || Becomes part of J2EE, introduced independent web applications in .war files&lt;br /&gt;
|-&lt;br /&gt;
| Servlet 2.1 || [https://web.archive.org/web/20080611083008/http://www.javaworld.com/jw-12-1998/jw-12-servletapi.html 1998年11月] || Unspecified || First official specification, added &amp;lt;code&amp;gt;RequestDispatcher&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ServletContext&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Servlet 2.0 || || JDK 1.1 || Part of Java Servlet Development Kit 2.0&lt;br /&gt;
|-&lt;br /&gt;
| Servlet 1.0 || 1997年6月|| ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 工作模式 ==&lt;br /&gt;
*客户端发送请求至服务器&lt;br /&gt;
*服务器启动并调用Servlet，Servlet根据客户端请求生成响应内容并将其传给服务器&lt;br /&gt;
*服务器将响应返回客户端&lt;br /&gt;
*其他&lt;br /&gt;
&lt;br /&gt;
== 通用Servlet ==&lt;br /&gt;
一般來說，通用Servlet由javax.servlet.GenericServlet實作Servlet介面。程序设计人员可以通过使用或[[继承 (计算机科学)|继承]]这个类来实现通用Servlet应用。&lt;br /&gt;
&lt;br /&gt;
=== HttpServlet ===&lt;br /&gt;
javax.servlet.http.HttpServlet实现了专门用于响应[[HTTP]]请求的Servlet，提供了响应对应HTTP标准请求的doGet()、doPost()等方法。&lt;br /&gt;
&lt;br /&gt;
== 生命周期 ==&lt;br /&gt;
当servlet被部署在应用服务器中（应用服务器中用于管理Java组件的部分被抽象成为[[容器 (计算机科学)|容器]]）以后，由容器控制servlet的生命周期。除非特殊指定，否则在容器启动的时候，servlet是不会被加载的，servlet只会在第一次请求的时候被加载和实例化。servlet一旦被加载，一般不会从容器中删除，直至应用服务器关闭或重新启动。但当容器做記憶體回收动作时，servlet有可能被删除。也正是因为这个原因，第一次访问servlet所用的时间要大大多于以后访问所用的时间。&lt;br /&gt;
&lt;br /&gt;
servlet在服务器的运行生命周期为，在第一次请求（或其实体被内存垃圾回收后再被访问）时被加载并执行一次初始化方法，跟着执行正式运行方法，之后会被常驻并每次被请求时直接执行正式运行方法，直到服务器关闭或被清理时执行一次销毁方法后实体销毁。&lt;br /&gt;
&lt;br /&gt;
== 与JSP的关系 ==&lt;br /&gt;
Java服务器页面（[[JSP]]）是HttpServlet的扩展。由于HttpServlet大多是用来响应HTTP请求，并返回Web页面（例如[[HTML]]、[[XML]]），所以不可避免地，在编写servlet时会涉及大量的HTML内容，这给servlet的书写效率和可读性带来很大障碍，JSP便是在这个基础上产生的。其功能是使用HTML的书写格式，在适当的地方加入Java代码片段，将程序员从复杂的HTML中解放出来，更专注于servlet本身的内容。&lt;br /&gt;
&lt;br /&gt;
JSP在首次被访问的时候被应用服务器转换为servlet，在以后的运行中，容器直接调用这个servlet，而不再访问JSP页面。JSP的实质仍然是servlet。&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
* [[Java]]、[[JSP]]、[[J2EE]]&lt;br /&gt;
* [[Struts]]&lt;br /&gt;
* [[HTTP]]&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* [https://www.jcp.org/en/jsr/detail?id=369 JSR 369] {{Wayback|url=https://www.jcp.org/en/jsr/detail?id=369 |date=20210129230036 }} - Java servlet 4.0 documentation&lt;br /&gt;
* [https://www.jcp.org/en/jsr/detail?id=340 JSR 340] {{Wayback|url=https://www.jcp.org/en/jsr/detail?id=340 |date=20210130191332 }} - Java servlet 3.1 documentation&lt;br /&gt;
* [https://www.jcp.org/en/jsr/detail?id=315 JSR 315] {{Wayback|url=https://www.jcp.org/en/jsr/detail?id=315 |date=20210109112755 }} - Java servlet 3.0 documentation&lt;br /&gt;
* [https://www.jcp.org/en/jsr/detail?id=154 JSR 154] {{Wayback|url=https://www.jcp.org/en/jsr/detail?id=154 |date=20201130042748 }} - Java servlet 2.4 documentation&lt;br /&gt;
* [https://www.jcp.org/en/jsr/detail?id=53 JSR 53] {{Wayback|url=https://www.jcp.org/en/jsr/detail?id=53 |date=20200608073657 }} - Java servlet 2.3 documentation&lt;br /&gt;
&lt;br /&gt;
{{-}}&lt;br /&gt;
{{Java (Sun)}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Java企业平台]]&lt;br /&gt;
[[Category:Java平台]]&lt;br /&gt;
[[Category:Java规范请求]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Cwek</name></author>
	</entry>
</feed>