创建Servlet有多种方式:
- 创建一个普通的类去实现Servlet接口,重写该接口中未实现的方法
- 继承JAVA中提供的GenericServlet类,该类已经实现了Servlet,ServletConfig和Serializable接口
- 继承HttpServlet类,该类是GenericServlet类的子类,并且已经重写了service()方法
下图是这几个类的关系直观图:
GenericServlet类并没有重写service()方法,而HttpServlet类作为它的子类实现了service()方法,我们只需要实现该类中的doGet()与doPost()方法,这两个方法分别是浏览器发出不同的请求方式实现不同的逻辑,当浏览器是get请求时,就会调用doGet方法,而请求方式是post时,就会调用doPost()。
当然请求方式多种多样,HttpServlet类底层重写service()也是判断请求方式,我们只是重写了两个方式而已,如果需要其他请求方式,也可以进行重写。
还可以使用idea创建Servlet,用该方法创建的Servlet是直接使用注解配置的。
//用注解配置Servlet的映射路径
//name 配置Servlet的名字 value 配置Servlet的映射路径
//一个Servlet可以配置多个映射路径 ,value多个映射路径配置需要大括号 {"/d1","/d2",...}
//urlPatterns也可以配置映射路径
@WebServlet(name = "MyServlet4",urlPatterns = "/demo4")
public class MyServlet4 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}