servlet是用java编写的服务端程序。主要功能在于交互式浏览和修改数据,生成动态web内容。狭义是值java语言实现的一个借口,广义是指任何实现这个servlet接口的类。
servlet运行于支持java的应用服务器中。从实现上讲,servlet可以响应任何类型的请求,但绝大多数情况下servlet只用来扩展基于http协议的web服务器。
工作模式
客户端发送请求至服务器,服务器启动并调用servlet,servlet根据客户端请求生成响应内容并将其传给服务器,服务器将响应返回客户端。
通用servlet
servlet由javax.servlet.GenericServlet实现servlet接口。程序设计人员可以通过使用或继承这个类来实现servlet应用
httpservlet
javax.servlet.http.HttpServlet实现了专门用于响应HTTP请求的servlet,提供了响应请求的doGet()和doPost()方法
生命周期
当servlet被部署在应用服务器中(应用服务器用于管理java组件的部分被抽象成为容器)以后,由容器控制servlet的生命周期。除非特殊制定,否则在容器启动的时候
servlet是不会被加载的,servlet只会在第一次请求的时候被加载和实例化。servlet一旦被加载,一般不会从容器中删除,直到应用服务器关闭或重新启动。但当容器做内存回收动作时,servlet有可能被删除。正因为这个原因,第一次访问servlet所以的时间要大大多于以后访问所用的时间。
servlet 1.加载-》2.初始化-》调用-》销毁
与jsp的关系
java服务器页面(jsp)是HttpServlet的扩展。由于HttpServlet大多是用来响应HTTP请求,并返回web页面(例如HTML/XML),所以不可避免地,在编写servlet时会涉及到大量的HTML内容,这给servlet的书写效率和可读性带了了很大障碍,jsp便是在这个基础上产生的。其功能是使用HTML的书写格式,在适当的地方加入java代码片段,将程序从复杂的HTML中解放出来,更专注与servlet本身的内容。
JSP在首次被访问的时候被应用服务器转换为servlet,在以后的运行中,容器直接调用这个servlet,而不再访问JSP页面。JSP的实质仍然是servlet。
java servlet优势
Servlet可以和其他资源(文件、数据库、Applet、Java应用程序等)交互,以生成返回给客户端的响应内容。如果需要,还可以保存请求-响应过程中的信息。
采用Servlet,服务器可以完全授权对本地资源的访问(如数据库),并且Servlet自身将会控制外部用户的访问数量及访问性质
Servlet可以是其它服务的客户端程序,例如,它们可以用于分布式的应用系统中,可以从本地硬盘,或者通过网络从远端硬盘激活Servlet。
Servlet可被链接(chain)。一个Servlet可以调用另一个或一系列Servlet,即成为它的客户端。
采用Servlet Tag技术,可以在HTML页面中动态调用Servlet。
Servlet API与协议无关。它并不对传递它的协议有任何假设。
像所有的Java程序一样,Servlet拥有面向对象Java语言的所有优势
Servlet提供了Java应用程序的所有优势——可移植、稳健、易开发。使用Servlet 的Tag技术,Servlet能够生成嵌于静态HTML页面中的动态内容。
一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。每个请求将生成一个新的线程,而不是一个完整的进程。多个客户能够在同一个进程中同时得到服务。一般来说,Servlet进程只是在Web Server卸载时被卸载。