Servlet
Servlet的生命周期
Servlet的生命周期是由tomcat服务器来控制的。
1 构造方法:
创建servlet对象的时候调用。默认情况下,第一访问servlet就会创建servlet对象只创建一次。说明servlet对象在tomcat中是单实例的。
2初始化 init方法
当创建完servlet对象的时候会调用init()方法,只调用一次。
3 调用服务 service 方法 其中就包含doGet doPost等方法
每次发送请求的时候调用。可以调用n次。
4 销毁 destory 方法
销毁servlet对象的时候调用,停止服务器或者重新部署的web项目的时候销毁servlet就会调用destory方法
Servlet时序图
servlet自动加载
在web.xml中加入
<load-on-startup> 1</load-on-startup>
里面的数字越小加载级别越高
当tomcat启动的时候,就去运行web.xml解析里面的内容,当发现有自动加载的数据时候,就会运行加载。
<servlet>
<servlet-name>sl</servlet-name>
<servlet-class>com.bw.servlet.LoginServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
ServletConfig 对象
主要是加载servlet的初始化参数,在web应用中可以存在多个ServletConfig对象
<servlet>
<servlet-name>sl</servlet-name>
<servlet-class>com.bw.servlet.LoginServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>godyang</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</init-param>
</servlet>
ServletContext对象
上下文对象,表示当前的web应用(项目)环境。一个web应用只有一个ServletContext对象
上下文参数配置 它是全局的 所有的servlet都可以访问
<context-param>
<param-name>ecode</param-name>
<param-value>UTF-8</param-value>
</context-param>
// 获取上下文对象
ServletContext sc = this.getServletContext();
String contextParamValue = sc.getInitParameter("ecode");
System.out.println("contextParamValue=" + contextParamValue);
//项目路径
String path=sc.getContextPath();
System.out.println("path="+path);
//文件发布后(tomcat/webapps)的真实路径
String realPath=sc.getRealPath("counter.txt");
System.out.println("realPath="+realPath );
//获取文件流
InputStream is=sc.getResourceAsStream("C:\\Tomcat\\webapps\\webThree\\WEB-INF\\classes\\counter.txt");