方法一在servlet的init()方法中缓存数据
当应用服务器初始化servlet实例之后为客户端请求提供服务之前它会调用这个servlet的init()方法在一个servlet的生命周期中init()方法只会被调用一次通过在init()方法中缓存一些静态的数据或完成一些只需要执行一次的耗时的操作就可大大地提高系统性能
例如通过在init()方法中建立一个JDBC连接池是一个最佳例子假设我们是用jdbc的DataSource接口来取得数据库连接在通常的情况下我们需要通过JNDI来取得具体的数据源我们可以想象在一个具体的应用中如果每次SQL请求都要执行一次JNDI查询的话那系统性能将会急剧下降解决方法是如下代码它通过缓存DataSource使得下一次SQL调用时仍然可以继续利用它
public class ControllerServlet extends HttpServlet {
private javaxsqlDataSource testDS = null;
public void init(ServletConfig config)
throws ServletException
{ superinit(config);
Context ctx = null;
try {
ctx = new InitialContext();
testDS = (javaxsqlDataSource)ctxlookup("jdbc/testDS");
}
catch(NamingException ne) {
neprintStackTrace(); }
catch(Exception e) {
eprintStackTrace(); }
}
public javaxsqlDataSource getTestDS()
{ return testDS;
}
}