什么是servlet?

一、servlet是什么?

是用java编写的应用在服务端的程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和修改数据,生成动态Web内容,例如页面等等。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

二、工作原理、流程

1、原理

Servlet容器将Servlet类载入内存,并产生Servlet实例和调用它具体的方法。但是要注意的是,在一个应用程序中,每种Servlet类型只能有一个实例。

2、servlet接口

public interface Servlet {
    void init(ServletConfig var1) throws ServletException;
 
    ServletConfig getServletConfig();
 
    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
 
    String getServletInfo();
 
    void destroy();
}

init():很明显,servlet的初始化,依赖于servletConfig对象。当Servlet第一次被请求时,Servlet容器就会开始调用这个方法来初始化一个Servlet对象出来,但是这个方法在后续请求中不会在被Servlet容器调用。

getServletConfig():返回由Servlet容器传给init()方法的ServletConfig对象。

service():每当请求Servlet时,Servlet容器就会调用这个方法。

getServletInfo():返回Servlet的一段描述,可以返回一段字符串。

destroy():卸载应用程序或者关闭Servlet容器时,Servlet容器就会调用这个方法销毁Servlet。

3、实现类

Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet。

  HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。
  HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。

4、示例

选择要实现的方法

注意上面servlet使用了@WebServlet注解,因此就不需要在web.xml中进行配置。

启动tomcat,效果如下:

或者去掉@WebServlet注解,配置web.xml

工作流程:

  • 客户端发送请求至服务器端;
  • 服务器将请求信息发送至 Servlet;
  • Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
  • 服务器将响应返回给客户端。

最常用的Tomcat就是实现了servlet规范的servlet容器,servlet规范中定义了一些应用容器的职责、规范、约束等等。

tomcat简单的工作流程图:

原文地址:https://www.cnblogs.com/alimayun/p/10699242.html