WEB服务器可以存放数据,他是一个“容器”,作用是接收用户的请求,再对这个请求做出相应。

Java的Web服务器必须要支持JSP/Servlet(作为JSP/Servlet的容器)。

所以JSP/Servlet就是JavaWeb服务器的一套规范。

所以要进行JavaEE开发,就要遵循Servlet规范。

Tomcat就是遵循了JSP/Servlet规范的WEB服务器

实现Servlet的三种方式

  • 方式一:编写一个类去实现Servlet接口(必须重写Servlet接口里面所有的抽象方法)

  • 方式二:编写一个类去继承GenericServlet抽象类(重写生命周期的service方法(抽象方法))GenericServle抽象类它实现了Servlet接口,还实现了ServletConfig接口(这个接口中提供了一个getServletContext方法)可以在编写一个类中直接调用getServletContext方法就可以获得ServletContext对象。(开发中不常用)

  • 方式三:编写一个类去继承HttpServlet抽象类(没有抽象方法!根据页面的提交方式决定重写doGet或者doPost方法)

谈到这三种方式就要说一下Servlet接口抽象类GenericServlet抽象类HttpServlet的关系

关系说明:

Servlet接口中定义了一些方法,这些方法与Servlet的生命周期有关

在这里插入图片描述

当用户第一次访问Servlet的时候,由服务器容器Tomcat来创建Servlet实例对象(调用的无参构造)!在整个Servlet生命周期中只会创建一次!一旦创建完毕,立即调用**init(ServletConfig config)方法完成Servlet的初始化!该方法在整个Servlet生命周期中只会执行一次!紧接着调用service(ServletRequest request,ServletResponse response)服务方法处理用户请求,该方法在整个Servlet生命周期中执行N次(每请求一次执行一次)当服务器关闭之前调用destroy()**方法来销毁Servlet实例对象!!!该方法在整个Servlet生命周期中只会执行一次!

初始化方法init()中的ServletConfig对象是作为生命周期初始化方法init的参数
SerlvetConfig对象:代表的是当前Servlet初始化配置项的信息

利用ServletConfig对象主要是为了得到Context对象。(Context对象可以帮助我们与用户进行交互)

获得指定初始化参数的值: String getInitParameter(String name); 【需要在web.xml文件中进行配置】
获得所有初始化参数的名称: Enumeration getInitParameterNames();【需要在web.xml文件中进行配置】
获得ServletContext对象:ServletContext getServletContext();
获得当前Servlet的名称: String getServletName();

GenericServlet

GenericServlet是一个抽象类,它实现了Servlet接口,并且还实现了ServletConfig接口,ServletConfig接口中直接提供了getServletContext方法,所以当我们在实现Servlet时直接继承GenericServlet这个抽象类,就可以直接使用getServletContext方法来获取Context对象了。

HttpServlet

HttpServlet也是一个抽象类,但是他内部没有抽象方法(有抽象方法的类一定是抽象类,但抽象类中不一定有抽象方法),他又继承了GenericServlet抽象类,所以具有了GenericServlet的优点。在实现Servlet接口时,直接继承HttpServlet抽象类,再根据网页提交的方式确定使用doGet()方法还是doPost()方法

图解

在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐