狭义的Servlet是指Java言语完成的一个接口,广义的Servlet是指任何完成了这个Servlet接口的类,平常情况下,人们将Servlet理解为后者。Servlet运转于支撑Java的运用效劳器中。从原理上讲,Servlet能够相应任何范例的要求,但绝大多数情况下Servlet只用来扩大基于HTTP协定的Web效劳器。
最早支撑Servlet规范的是JavaSoft的Java Web Server,今后,一些别的的基于Java的Web效劳器最先支撑规范的Servlet。
servlet 的生命周期
servlet的生命周期是由servlet的容器来掌握的,重要分为初始化、运转、烧毁3个阶段,Servlet容器加载servlet,实例化后挪用init()要领举行初始化,当要求抵达时运转service()要领,依据对应要求挪用doget或dopost要领,当效劳器决定将实例烧毁时挪用destroy()要领(开释servlet占用的资本:封闭数据库衔接、封闭文件输入输出流),在全部生命周期中,servlet的初始化和烧毁只会发作一次,而service要领实行的次数则取决于servlet被客户端接见的次数。
Servlet的特性
Servlet是单例多线程的,只建立一个servlet对象,然则每次要求都邑起一个线程并在本身线程栈内存中实行service要领。
一个 Servlet 实例只会实行一次无参组织器与 init()要领,并且是在第一次接见时实行。
用户每提交一次对当前 Servlet 的要求,就会实行一次 service()要领。
一个 Servlet 实例只会实行一次 destroy()要领,在运用住手时实行。
由于 Servlet 是单例多线程的,所以为了保证其线程安全性,平常情况下是不发起在 Servlet类中定义可修正的成员变量,由于每一个线程都可修正这个成员变量,会涌现线程安全问题。
默许情况下,Servlet 在 Web 容器启动时是不会被实例化的。
package com.ntqn.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class IndexServlet */ @WebServlet("/IndexServlet.php") public class IndexServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * Default constructor. */ public IndexServlet() { // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("<h1>Hello,Sevlet</h1>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
以上就是什么是servlet观点?的细致内容,更多请关注ki4网别的相干文章!