You might want to investigate using the Apache Commons Configuration library at
http://commons.apache.org/configuration/index.html. It allows you to deal with configuration data using a variety of sources such as properties files or databases.
In a web app, loading the configuration data at startup can be done both with a ServletContextListener and the init() method of a servlet. Although I've heard the ServletContextListener way is more proper, I tend to use a servlet's init() method, since I can control when the servlet is loaded (via load-on-startup) in relation to other servlets, so that config data can be initialized before other servlets need that data.
Another thing to be wary about is if you're working in a multi-app server environment. If you need to refresh your data, make sure you have a mechanism that can do so across app servers, since you would need to perform the refresh across JVMs.
Edwin