<context-param>标签,
比如
<context-param><param-name>breed</param-name>
<param-value>test</param-value>
</context-param>
应用在容器中启动之后,整个应用任何一个servlet都可以通过getContextConfig获取breed的值。
但是如果我们需要在项目启动的时候获取一个对象呢,而不仅仅是一个字符串呢?
我们可以通过写一个类实现ServletContextListener接口实现这一点。
package javax.servlet;
import java.util.EventListener;
public abstract interface ServletContextListener extends EventListener
{
public abstract void contextInitialized(ServletContextEvent paramServletContextEvent);
public abstract void contextDestroyed(ServletContextEvent paramServletContextEvent);
}
在web.xml中配置
<listener>
<listener-class>
servlet.ServletContextListenerTest
</listener-class>
</listener>
ServletContextListenerTest实现一个ServletContextListener的接口
package servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ServletContextListenerTest implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent event) {
}
@Override
public void contextInitialized(ServletContextEvent event) {
System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
ServletContext sc = event.getServletContext();
String dogBreed = sc.getInitParameter("breed");
System.out.println("aaaaaaaaaaaaaa"+dogBreed);
Dog dog = new Dog(dogBreed);
event.getServletContext().setAttribute("dog", dog);
}
}
上面的代码主要是实现了在应用启动的时候,将一个dog对象塞进ServletContext的attribute属性中,
这样应用的所有servlet就可以通过getAttribute共享这个dog对象了。
Dog类
package servlet;
public class Dog {
public String breed;
public String getBreed() {
return breed;
}
public void setBreed(String breed) {
this.breed = breed;
}
public Dog(String breed) {
this.breed=breed;
}
public void getDogBreed() {
System.out.println("the breed of the dog is"+breed);
}
}
写一个情景类
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns={"/servletContextListenerTestClient"})
public class ServletContextListenerTestClient extends HttpServlet{
private static final long serialVersionUID = -5169172101637034615L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Dog dog = (Dog)this.getServletContext().getAttribute("dog");
dog.getDogBreed();
}
}