1.javaEE规范之一,也是java提供的一门动态web资源开发技术
作用:WEB Server与WEBapp解耦合
实现:一个类实现Servlet接口或者继承GenericServlet,并重写里面的所有方法
2.生命周期:(由Tomcat服务器负责)
(1):默认情况下,服务器启动的时候Servlet对象并没有被实例化,但在用户发送第一次请求的时候Servlet对象被实例化
(2):init():Tomcat服务器启动的时候执行,只执行一次,通常是完成初始化的操作,且在执行的时候,Servlet对象已经被创建出来了
(3):service():处理用户请求的核心方法,用户请求一次,方法执行一次,因此,此方法是专门用来处理请求和响应的
(4):destroy():只执行一次,此方法在执行的时候,Servlet对象还未被销毁,因此可以用来用于关闭操作,比如流,数据库的连接关闭
注:Servlet的构造方法也是在对象第一次创建的时候执行,并且也只执行一次,那能否代替init()呢?
答案是不能,因为不安全。因为无参容易变成有参,原来的无参就没有了,会导致Servlet对象无法实例化
3.ServletConfig接口:(Servlet规范中的一员)
(1):Tomcat服务器实现了ServletConfig接口
(2):一个Servlet对象中有一个ServletConfig对象
(3):ServletConfig包装了web.xml文件中<servlet></servlet>中的配置信息
(4):Tomcat服务器调用Servlet对象的init()方法的时候需要传一个ServletConfig对象的参数给init()方法
4.ServletContext:(Servlet规范中的一员)
(1):Tomcat服务器实现了ServletContext接口
(2):ServletContext对象在WEB服务器启动的时候创建
(3):对于一个webapp来说,ServletContext对象只有一个,且在服务器关闭的时候销毁
(4):ServletContext对象其实就是整个web.xml文件,放在ServletContext对象中的数据,所有Servlet一定是共享的
(5):Tomcat是一个容器,一个容器中可以放入多个webapp,一个webapp对应一个ServletContext对象
(6):ServletContext还有另一个名字:应用域。如果所有的用户共享一份数据,并且这个数据很少的被修改,并且这个数据量很小,可以将这些数据放到ServletContext这个应用域中
当然,以后在编写Servlet类的时候,实际上是不会去直接继承GenericServlet的,因为B/S机构是系统,这种系统是基于Http超文本传输协议的,在Servlet规范当中,提供了一个类:HttpServlet。它是专门为HTTP协议准备的一个类,但是,它也是继承GenericServlet类的