>
int _totalWeight:所有 Banner 权重之和。该值也是在 init() 方法中设置的;我们将很快讨论这一点。
init() 任何 servlet 的 init(ServletConfig) 方法都在容器首次装入该 servlet 时被调用。在这里,容器就是 Tomcat。Tomcat 生成并传入 ServletConfig 对象,该对象包含容器设置的缺省配置信息以及开发人员(您)在 servlet 的配置文件中可以进行设置的定制配置信息。对于我们的用途,不需要传入任何配置信息,但您有时可能需要扩展 servlet,并使用这一功能。
我们调用 super.init() 之后在 init() 中所做的第一件事是初始化 HashMap 变量 _banners,并将 _totalWeight 设置为 0。然后,连接到数据库,以 ResultSet 的形式从 ADS 表获取所有行。我们使用 for 循环对 ResultSet 进行循环遍历,从每行构造一个 Banner 对象,接着,把 for 循环的索引作为散列值,将 Banner 对象添加到 HashMap。(我们也可以方便地使用 Vector 或其它一些 Collection 类来完成同样的任务。)
现在,内存中有了一个包含所有 Banner 的 HashMap。如果更新数据库,那么只需调用 init() 方法就可重新装入 HashMap。我们将在 increaseImpressions() 和 decreaseClicksRemaining() 方法中用到这一点。
service()
service() 方法是在我们的 BannerServlet 继承的 HttpServlet 类中定义的,可以处理任何请求,不管它是 GET 方法还是 POST 方法。对于 service() 方法的实现有两个核心部分。第一个部分处理 Web 页面发送图像请求时 servlet 的行为,第二部分处理链接请求。
最后,我们看一下从客户机发送来的 type << 上一页 [11] [12] 下一页
|