能够使用 lookup() 方法来执行 SELECT 查询,使用 executeUpdate() 方法来执行 UPDATE 查询,连同使用 insert() 方法来执行 INSERT 查询。更有一个 execute() 方法,他无需参数,能够执行任何没有 PrepareStatement 参数的查询。
Banner 类Banner 类只是一组直接对应于 ADS 数据库表中各列的值的 setter 和 getter 方法。
BannerServlet 类BannerServlet 是我们这个应用程式的核心。我们将把该类分成几个不同部分来向您讲解。通过浏览代码,您将对如何用 DBHandler 类连接到数据库更加熟悉。
字段 BannerServlet 使用五个字段:
- String _databaseUrl:要访问数据库的名称(
jdbc:odbc:\\localhost\BANNER)。
- String _driverName:用来和数据库通信的驱动程式的名称。正如上面所描述的那样,我们将使用 MM MySQL JDBC 驱动程式。该驱动程式的名称是
org.gjt.mm.mysql.Driver。
- Logger _logger:
Logger类的名称,用此类来记录我们应用程式中发生的任何事件。
- HashMap _banners:任何
Banner对象的 HashMap。用 servlet 的init()方法填充该 HashMap。将数据库表中的每一行转换成存储在 HashMap 中的一个Banner对象。我们过一会儿将周详说明这一点。
- 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 的行为,第二部分处理链接请求。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



