【JAVAWEB】Servlet详解,带你轻松了解Servlet

39 阅读2分钟

一、基本概念

在开始了解Servlet之前,我们首先要知道的是,什么是Servlet? Servlet 是运行在 Web 服务器或应用服务器上的程序,它是一个用来动态创建WEB内容的中间组件,是 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。Servlet还是一个实现类,实现了javax.servlet.Servlet接口。主要用于处理HTTP请求和生成响应。

二、创建Servlet

要创建一个Servlet程序,就必须要实现Servlet接口,一般是写一个类继承HttpServlet类,并重写里面的doGet()和doPost()方法,就能处理前端发送的GET或POST请求。

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ServletTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        super.doGet(request, response);
    }
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        super.doPost(request, response);
    }
}

然后在配置servlet,关于Servlet的配置有两种方式。 第一种是通过web.xml文件进行配置

    <servlet>
        <servlet-name>ServletTest</servlet-name>
        <servlet-class>com.powernode.ServletTest</servlet-class>
    </servlet>

    <servlet-mapping>
     
       <!-- 这个servlet-name必须和上面的servlet-name一致才能映射上   -->
        <servlet-name>ServletTest</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>

第二种是使用@WebServlet注解进行配置,只要写在写在类上就可以了

@WebServlet("/test")
public class ServletTest extends HttpServlet {
    
}

第三步就是在写具体代码了。

三、Servlet执行原理

第一步:当前端页面会向给服务器发送请求,当服务器接收到客户端浏览器的请求之后,会解析请求的路径,获取访问Servlet资源的路径。
第二步:查找web.xml文件,看是否配置了这个路径
第三步:(如果有)找到对应的servlet-class的全类名
第四步:Tomcat服务器会将字节码文件加载进内存,并创建其对象。
第五步:调用其方法。

四、Servlet的生命周期

Servlet的生命周期有加载和实例化、初始化、请求处理和销毁四个阶段

加载和实例化

加载:当Tomcat服务器首次接收到Servlet的请求时,Tomcat会将Servlet类字节码文件加载到内存中。 实例化:加载完类文字节码之后,会实例化servlet类对象。

初始化

初始化是通过init()方法来执行的,这个方法只执行一次,同时也说明Servlet在内存中只存在一个对象

@Override
public void init() throws ServletException {
    super.init();
}

请求处理

每次访问Servlet时,都会调用Servlet的service()方法,然后service()方法根据请求方式调用doGet()或doPost()方法。service()方法可执行多次。

销毁

当服务器关闭时,destroy()就会执行。注意:只有服务器正常关闭时,才会执行destroy()方法,一般用于释放资源。

@Override
public void destroy() {
    super.destroy();
}

以上就是Servlet的基本知识啦,有不对的请大佬在评论区指正!