我现在的理解是 任意一个客户端发送一次请求以后 tomcat 实例化一个 servlet 包括他的 init() 方法,以后的所有请求都用这个 servlet 的实例了。这个实例一直到 tomcat 的服务关闭。不知道这样理解对吗?我的疑惑是 servlet 实例化了以后 他的 inti() 方法也就执行完了,如果换别的用户来请求的时候 也就是不再执行 Init()方法了,如果数据库里有 5 万条记录 我是通过init()查询出来的,
public void init() throws ServletException {
// Put your code here
int count = "查询语句";//count 现在等于 5 万。
}
也就是说 count 永远是 5 万了吧!(直到tomcat关闭服务)。如果前面的用户把数据库里删了 2万条,后面的用户再访问的时候 count 仍然是 5 万啊。也就是说没做到实时更新的效果啊? 请问我哪里理解错了 ? 谢谢了。

解决方案 »

  1.   

    servlet 实例化了以后 他的 inti() 方法也就执行完了;
    不会再执行init()了.
      

  2.   

    是我知道不用再执行了 因为不再执行才有问题的 public void init() throws ServletException {
    // Put your code here
    int count = "查询语句";//count 现在等于 5 万。
    }
    也就是说 count 永远是 5 万了吧!(直到tomcat关闭服务)。如果前面的用户把数据库里删了 2万条 而后面的人再去请求的时候又没执行 init(),这时候 count 仍然是 5 万啊。数据不就不准确了吗!
      

  3.   

    1.init方法在请求中只执行一次,不会发生改变.
    2.你在想问题的时候有没有想过,既然 你现在做的不能得到你想要的结果,为什么还飞要在init里面做呢,可以不在里面初始化数据.
    3.或者你可以些一个监听器,一直监听着这个着值.
      

  4.   

    servlet 的 inti()方法实际上是初始化它自身的内置对象,比如request ,response等等
    init()方法在请求中只执行一次,不会发生改变. 如果你想实现你的目的,可以在post()或get()方法中实现。