<servlet>
<servlet-name>BeerParamTests</servlet-name>
<servlet-class>TestInitParams</servlet-class>
<init-param>
<param-name>addEmail</param-name>
<param-value>lik@qq.com</param-name>
</init-param>
</servlet>
在servlet代码中可以通过
getServletConfig().getInitParameter("addEmail"):
调用getServletConfig() 不能在初始化参数之前调用 不能在init中调用 必须等servlet加载完才可以调用.
********容器初始化一个servlet时,会为这个Servlet创建一个唯一的ServletConfig********
创建servletConfig步骤:
1.容器读取Servlet部署文件,包括servlet的初始化参数(init-param)
2.容器为这个servlet创建一个新的servletConfig实例
3.容器为每个servlet初始化参数创建一个键值对。
4.容器向ServletConfig提供键值对初始化参数的引用.
5.容器创建servlet类的一个新实例
6.容器调用servlet的init方法 传入servletCOnfig的引用.
容器只会读一次Servlet初始化参赛,在Servlet生命周期中无法改变这个值,除非重新部署servlet.
上下文初始化参数,不仅仅是针对一个Servlet可用,它是针对整个web应用,应用中所有Servlet和jsp都自动的能访问
上下文初始化参数。可以在web.xml中配置。
<servlet>
</servlet>
<context-param>
<param-name>add</param-name>
<param-value></param-value>
</context-param>
在代码中,getServletContext().getInitParameter("add");
或者ServletContext context = getServletContext();
context.getInitParameter("add");
每个servlet一个ServletConfig
每个web应用一个ServletContext
如果web应用是分布的,那么每个jvm就会有一个servletcontext,如果应用分布在多个服务器上
那么web应用实际上可以有多个servletContext。一个ServletContext确实只对应一个应用,但是前提是应用
在一个jvm中.
servletContext和ServletConfig只有获取的方法,没有设置的值的方法。都是常量。
两种方法获取ServletContext对象
getServletConfig().getServletContext().getInitParameter();
或者
this.getServletConfig().getServletContext();
ServletContextListener 监听ServletContext一生中关键两个事件,初始化和撤销.
ServletContextListener可以做的工作:
1.上下文初始化时候的可以做:从servletContext得到上下文初始化参赛。
使用初始化参数查找名建立一个数据库连接
把数据库连接存储为一个属性,使得web应用各个部分都能访问
上下文撤销时:
关闭数据库连接
public class MyServletContextListener implements ServletContextListener{
public void contextInitialized(ServletContextEvent event){
//数据库连接代码
}
public void contextDestroyed(ServletContextEvent event){
//关闭数据库连接代码
}
}
下面是一个应用实例对与监听器的使用
public class MyServletContextListener implements ServletContextListener{
public void contextInitialized(ServletContextEvent event){
//数据库连接代码
ServletContext sc = event.getServletContext();
String dogBreed = sc.getInitParameter("breed");
Dog d = new Dog(dogBreed);
sc.setAttribute("dog",d);//利用上下文设置属性,在其他地方就可以获得属性
}
public void contextDestroyed(ServletContextEvent event){
//关闭数据库连接代码
}
}
public class Dog{
private String breed;
public Dog(String breed){
this.breed = breed;
}
public String getBreed(){
return breed;
}
}
public class ListenerTester extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws Excepton{
response.setContentType("text/html");\
PrintWriter out = response.getWriter();
Dog dog = (Dog)getServletContext().getAttribute("dog");
out.println(dog.getBreed());
}
}
web.xml部署文件
<servlet>
</servlet>
<servlet-mapping>
</servlet-mapping>
<context-param>
<param-name>breed</param-name>
<param-value>Great Dane</param-value>
</context-param>
<listener>
<listener-class>
com.gac.MyServletContextListener
</listener-class>
</listener>
<servlet-name>BeerParamTests</servlet-name>
<servlet-class>TestInitParams</servlet-class>
<init-param>
<param-name>addEmail</param-name>
<param-value>lik@qq.com</param-name>
</init-param>
</servlet>
在servlet代码中可以通过
getServletConfig().getInitParameter("addEmail"):
调用getServletConfig() 不能在初始化参数之前调用 不能在init中调用 必须等servlet加载完才可以调用.
********容器初始化一个servlet时,会为这个Servlet创建一个唯一的ServletConfig********
创建servletConfig步骤:
1.容器读取Servlet部署文件,包括servlet的初始化参数(init-param)
2.容器为这个servlet创建一个新的servletConfig实例
3.容器为每个servlet初始化参数创建一个键值对。
4.容器向ServletConfig提供键值对初始化参数的引用.
5.容器创建servlet类的一个新实例
6.容器调用servlet的init方法 传入servletCOnfig的引用.
容器只会读一次Servlet初始化参赛,在Servlet生命周期中无法改变这个值,除非重新部署servlet.
上下文初始化参数,不仅仅是针对一个Servlet可用,它是针对整个web应用,应用中所有Servlet和jsp都自动的能访问
上下文初始化参数。可以在web.xml中配置。
<servlet>
</servlet>
<context-param>
<param-name>add</param-name>
<param-value></param-value>
</context-param>
在代码中,getServletContext().getInitParameter("add");
或者ServletContext context = getServletContext();
context.getInitParameter("add");
每个servlet一个ServletConfig
每个web应用一个ServletContext
如果web应用是分布的,那么每个jvm就会有一个servletcontext,如果应用分布在多个服务器上
那么web应用实际上可以有多个servletContext。一个ServletContext确实只对应一个应用,但是前提是应用
在一个jvm中.
servletContext和ServletConfig只有获取的方法,没有设置的值的方法。都是常量。
两种方法获取ServletContext对象
getServletConfig().getServletContext().getInitParameter();
或者
this.getServletConfig().getServletContext();
ServletContextListener 监听ServletContext一生中关键两个事件,初始化和撤销.
ServletContextListener可以做的工作:
1.上下文初始化时候的可以做:从servletContext得到上下文初始化参赛。
使用初始化参数查找名建立一个数据库连接
把数据库连接存储为一个属性,使得web应用各个部分都能访问
上下文撤销时:
关闭数据库连接
public class MyServletContextListener implements ServletContextListener{
public void contextInitialized(ServletContextEvent event){
//数据库连接代码
}
public void contextDestroyed(ServletContextEvent event){
//关闭数据库连接代码
}
}
下面是一个应用实例对与监听器的使用
public class MyServletContextListener implements ServletContextListener{
public void contextInitialized(ServletContextEvent event){
//数据库连接代码
ServletContext sc = event.getServletContext();
String dogBreed = sc.getInitParameter("breed");
Dog d = new Dog(dogBreed);
sc.setAttribute("dog",d);//利用上下文设置属性,在其他地方就可以获得属性
}
public void contextDestroyed(ServletContextEvent event){
//关闭数据库连接代码
}
}
public class Dog{
private String breed;
public Dog(String breed){
this.breed = breed;
}
public String getBreed(){
return breed;
}
}
public class ListenerTester extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws Excepton{
response.setContentType("text/html");\
PrintWriter out = response.getWriter();
Dog dog = (Dog)getServletContext().getAttribute("dog");
out.println(dog.getBreed());
}
}
web.xml部署文件
<servlet>
</servlet>
<servlet-mapping>
</servlet-mapping>
<context-param>
<param-name>breed</param-name>
<param-value>Great Dane</param-value>
</context-param>
<listener>
<listener-class>
com.gac.MyServletContextListener
</listener-class>
</listener>