In short, you could probably use one or the other as you wish (as with any
java code) but it really matters what your doing with your servlet.
For example, a good
pattern might be to open a connection open during the init() for the life of the servlet and close it in the destroy(), but this limits you on selection (or non-selection) of database connections for the servlet.
Ergo, it is usually best to always wrap any database connection statement with a finally block if the connection is not closed elsewhere. Its very easy to write code that exhausts your database connection pool.
While finally blocks are often concerned with database resources in practice, detroy() methods are often concerned with session/servlet cleanup events unrelated to the database.
The real question I have is why do you database code inside a servlet?