实现Servlet的三种方式
方式一:编写一个类去实现Servlet接口(必须重写Servlet接口里面所有的抽象方法)
package com.example.demo_servlet01;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/ServletDemo")
public class ServletDemo implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
方式二:编写一个类去继承GenericServlet抽象类(重写生命周期的service方法(抽象方法))GenericServle抽象类它实现了Servlet接口,还实现了ServletConfig接口(这个接口中提供了一个getServletContext方法)可以在编写一个类中直接调用getServletContext方法就可以获得ServletContext对象。(不常用)
package com.example.demo_servlet01;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/GenericServletDemo")
public class GenericServletDemo extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("servlet服务。。。");
}
}
方式三:编写一个类去继承HttpServlet抽象类(没有抽象方法!根据页面的提交方式决定重写doGet或者doPost方法)
package com.example.demo_servlet01;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
@WebServlet("/HttpServletDemo")
public class HttpServletDemo extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("执行了post方法");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("执行了get方法");
}
}