前言
Servlet 是在服务器上运行的小程序。这个词是在 Java applet的环境中创造的,Java applet 是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。
服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公告网络接口(Common Gateway Interface,CGI)应用程序完成的。然而,在服务器上运行 Java,这种程序可使用 Java 编程语言实现。在通信量大的服务器上,JavaServlet 的优点在于它们的执行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。
一、Servlet是什么?
Servlet 是在服务器上运行的小程序。Servlet是Tomcat为了响应用户的请求,所创建的一个对象。
二、Servlet的工作原理
1.Servlet的生命周期
一个servlet的生命周期主要由下列三个过程组成:
(1)初始化servlet.servlet第一次被请求加载时,服务器初始化这个servlet,即创建一个
servlet,这servlet调用init方法完成必要的初始化工作。
(2)新诞生的servlet再调用service方法响应用户的请求。
(3)当服务器关闭时,调用destroy方法销毁servlet。
init方法只被调用一次,即在servlet第次被请求加载时调用该方法。当后续的用户 请
求servlet服务时,Tomcat服务器将启动一个新的线程,在该线程中,servlet调用service方法
响应用户的请求。也就是说,每个用户的每次请求都导致service方法被调用执行,其执行过
程分别运行在不同的线程中。
2.init方法,service方法,destroy方法
init方法:、
public void init(ServletConfig Config) throws ServletException { System.out.println(""); }
servlet第一次被请求加载时,服务器创建一个servvlet,这个对象调用init方法完成必要
的初始化工作。该方法在执行时,服务器会把一个SevletConfig类型的对象传递给init方法,
这个对象就被保存在servlet中,直到servlet 被销毁。这个ServletConfig对象负责向servlet
传递服务设置信息,如果传递失败就会发生ServeletException,servlet就不能正常工作。
service方法:
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { System.out.println(""); }
当 servlet成功创建和初始化之后,调用sevive方法来处理用户的请求并返回响应。Tomcat服务器将两个参数传递给该方法。一个是HTTPServletResquest类型的对象,该对象封装了用户的请求信息另外一个参数对象是HTTPServletResponse类型的对象,该对象用来响应用户 的请求.和init方法不同的是init方法只被调用一次,而 sevice方法可能被多次的调用。也就是说,当后续的用户请求该servlet时,Tomcat服务器将启动一个新的线程,在该线程中servlet调用service方法响应用户的请求,即每个用户的请求都导致service方法被调用执行,调用过程运行在不同的线程中,互不干扰。因此,不同线程的service方法中的局部变量方法中的局部变量互不干扰,一个线程改变了自己的service方法中局部变量的值不会影响其他线程的service方法中的局部变量。
destroy方法:
该方法是HttpServlet类中的方法,子类可直接继承这个方法,一般不需要重写。
public destroy()
当Tomcat服务器终止服务时,例如关闭Tomcat服务器等,destroy()方法会被执行,销毁servlet。