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。

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概念?的详细内容,更多请关注自学java网其它相关文章!

声明:有的资源均来自网络转载,版权归原作者所有,如有侵犯到您的权益 请联系邮箱:our333@126.com我们将配合处理!

原文地址:什么是servlet概念?发布于2021-11-26 11:36:42