学习目标:
1.Serlvetde生命周期
2.ServletConfig接口
3. SerlvetContext接口
学习内容:
1.Serlvetde生命周期
Servlet的生命周期:2方极乐世界,这个周期过程就是人的生命周期,
其实servlet的生命周期和人的一样,从servlet对象被创建,经过使用servlet对象,
到最终servlet对象被销毁,整个过程就是servlet的生命周期。
与生命周期相关的三个方法:
>>> 初始化阶段:
init(ServletConfig config) 初始化方法:首次访问这个Servlet,servlet对象会被创建,执行初始化方法,执行一次。
>>> 运行阶段:
service(ServletRequest req, ServletResponse res) 服务方法:每次访问servlet时,服务方法都会被执行,执行多次。。
>>> 销毁阶段:
destroy()销毁方法:在服务器正常关闭时。会执行销毁方法,执行一次。
Servlet工作原理:
首先简单解释一下Servlet接收和响应客户请求的过程,首先客户发送一个请求,Servlet是调用service()方法对请求进行响应的,通过源代码可见,service()方法中对请求的方式进行了匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在Servlet接口和GenericServlet中是没有doGet,doPost等等这些方法的,HttpServlet中定义了这些方法,但是都是返回error信息,所以,我们每次定义一个Servlet的时候,都必须实现doGet或doPost等这些方法。
每一个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet的生命周期,分别是上文提到的init(),service(),destroy()方法。GenericServlet是一个通用的,不特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口。所以我们定义Servlet的时候只需要继承HttpServlet即可。
Servlet接口和GenericServlet是不特定于任何协议的,而HttpServlet是特定于HTTP协议的类,所以HttpServlet中实现了service()方法,并将请求ServletRequest,ServletResponse强转为HttpRequest和HttpResponse。
2.ServletConfig接口
Servlet容器初始化Servlet对象时会为Servlet创建一个ServletConfig对象,在ServletConfig对象中包含了Servlet的初始化参数信息,此外ServletConfig对象还与当前web应用中的ServletContext对象关联,Servlet容器在调用Servlet对象的init(SevletConfig config)方法时会把ServletConfig对象作为一个参数传递给Servlet对象,这个方法是的Servlet和ServletConfig对象之间建立关联,
每个初始化参数包含一对参数名和参数值,在web.xml中初始化参数时可以用<init-param>来设置参数值,<param-name>表示参数名,<param-value>表示参数值。
3. SerlvetContext接口
Servletcontext 对象称为全局作用域对象。来自于 servlet 规范中一个接口(在 Tomcat 中存在 servlet-api.jar ),在 Tomcat 中负责提供这个接口实现类。
如果两个 servlet 来自于同一个网站。彼此之间通过网站的 ServletContext 实例对象实现数据共享。每个web工程都只有一个ServletContext对象,也就是不管在哪个servlet里面,获取到的这个ServletContext对象都是同一个。
例:
ServletConfig接口
serlvetContext接口
2020080605009