首页  >  文章  >  Java  >  什么是servlet概念?

什么是servlet概念?

藏色散人
藏色散人原创
2019-05-11 13:16:136612浏览

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

什么是servlet概念?

狭义的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概念?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn