创建servlet的三种方式

发布时间:2023年12月26日

创建servlet的三种方式

1、通过实现Servlet接口

import javax.servlet.*;
import java.io.IOException;

/**
 * 第一种方式:
 *      创建方式:implements Servlet接口
 *      缺点:必须实现全部方法
 * servlet接口:是契约,所有servlet实例都必须实现该接口
 */
public class SevletDemo implements Servlet {

    //第一次请求时,tomcat使用反射(servlet-class)创建servlet对象时调用
    public SevletDemo() {
        System.out.println("第一次请求,tomcat调用构造方法创建servlet实例.......");
    }

    //servlet对象创建后调用,eg:加载*.txt、数据源
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("servlet实例被创建后,调用init方法初始化servlet.......");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    //处理请求的方法,每次都被调用
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        //设置相应的编码格式:往响应头添加
        servletResponse.setContentType("text/html;charset=utf-8;msg=sb;");
        servletResponse.getWriter().write("我是用servlet接口创建的servlet");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    //tomcat关闭时调用,eg:保存并关闭流
    @Override
    public void destroy() {
        System.out.println("tomcat关闭,调用destroy方法,销毁servlet实例.........");
    }
}

2、继承GenericServlet抽象类的方式

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
/**
 * 第二种方式:
 *      方式:extends GenericServlet接口
 *      有点:不需要再实现全部方法了
 */
public class GenericServletDemo extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        //设置相应的编码格式:往响应头添加
        servletResponse.setContentType("text/html;charset=utf-8;msg=sb;");
        servletResponse.getWriter().write("我是用GenericServlet抽象类创建的servlet");
    }
}

3、继承HttpServlet的方式

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

/**
 * 第三种方式:
 *      方式:extends HttpServlet抽象类
 *      好处:①对请求方式进行分门别类 ②强化ServletRequest和ServletResponse
 */
public class HttpServletDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //业务逻辑
        resp.setContentType("text/html;charset=utf-8;");
        resp.getWriter().write("这是用HttpServlet抽象类创建的servlet实例");
    }
}

综上:

1、实现Servlet接口
缺点:必须实现所以方法
2、继承GenericServlet抽象类
优点:不需要实现所以方法
3、继承HttpServlet抽象类
优点:①强化了ServletRequest和ServletResponse ②对请求进行分门别类

最好的方式是继承HttpServlet

1.可以减少对其他方法的要求 init destroy

2.可以根据前端的要求进行分门别类 doGet doPost

文章来源:https://blog.csdn.net/qq_62124267/article/details/135230875
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。