初学者对Servlet、JSP及Web容器之间关系的理解

Servlet就是一个Java程序,一个Servlet应用程序经常包含一个或者多个Servlet也就是当用户发送请求,例如提交表单,那么需要一个或多个Servlet协同作用,而访问的jsp页面也是一个Servlet。当每次我们发送请求时,Servlet应用程序中的service()方法就会被触发执行一次。当初次访问一个Servlet时,init()方法会触发执行一次,之后的请求都是执行service()方法。


如果你觉得奇怪,为什么没看到过service()这个方法,那是因为我们一般用的是通过继承HttpServlet来实现Servlet,而在HttpServlet中一般的请求我们只要@override doGet()doPost()方法即可实现我们对请求的处理。而HttpServlet中的service()方法会根据请求的类型调用对应的doGet()doPost()等等方法,所以只要实现doGet()doPost()方法等等即可。

为什么说jsp也是一个Servlet呢,那是因为当我们使用Servlet/JSP容器时,例如最常用的Tomcat会将jsp文件转化成相应的一个Servlet程序,jsp页面的主体就转化成相应代码位于service()方法当中。jsp技术只是将开发变得简单,然而基本原理还是不变的,实现及其复杂的Servlet就由Tomcat这一类的容器来实现,我们只要实现jsp页面就可以了。

访问Servlet只需为地址添加映射到Servlet类即可或者是@WebServlet注解实现。

Servlet是一个接口,含有五个方法:

  • init。仅在第一次访问Servlet时调用,之后不再调用。
  • service。每次请求Servlet时,Servlet容器都会调用这个方法。第一次调用init,之后调用service。这里编写Servlet要实现的处理代码。
  • destroy。销毁Servlet时,Servlet容器就会调用这个方法。
  • getServletInfo……
  • getServletConfig……

初学者对Servlet、JSP及Web容器之间关系的理解_第1张图片

你可能感兴趣的:(WEB,JavaEE)