关于servlet初始化以及ans监听的梳理
容器查找servlet类文件,并将其实例化,生成一个对象,此时还不是servlet,然后容器执行init()初始化,容器将查找web.xml的<init-param>
<param-name>myemail</param-name>
<param-value>f**kout@f**kin.com</param_value> //举个栗子
<init=param>
的(servletconfig)名值对,将其作为参数传入init()方法,将类文件对象进一步初始化,成为servlet,所以每个servlet有一个servletconfig,
/*可在servlet类文件中使用getServletConfig() ,java中除了主数据类型以外全是对象,所以得到的也是对象,类 型为ServletConfig,该类有一个getInitParameterNames() and getInitParameterName(nameString)
*/
如果想要所有的servlet都能得到(访问)一样的邮箱地址名值对,笨方法是在配置文档的每个servlet元素里都加入一个一模一样的名值对,而servletContext就是解决这个存在,只要在<context-param>标签里配置名值对即可,这样所有的servlet都能得到参数,
servletContext的名值对参数只能是String字符串,不能是对象,如果这里要共享的参数不是一个简单的邮箱地址,而是一个数据库链接源的对象,这就需要一个使用名值对参数作为对象的构造器参数创建对象,可是将这部分代码放入任何一个servlet代码中都要确保这个servlet最先运行,这不好实现,于是引入servletContextListener ans在web应用开始运行第一时间运行,创建数据库链接对象,使得每个serlet都能通过该对象访问数据库