Today, Budi walks us through a refresher and brief overview of server JSP programming. Today's portion covers Servlet technologies, including servlets and Tomcat. This excerpt comes from chapter one of JavaServer Faces Programming, by Budi Kurniawan (McGraw-Hill/Osborne, ISBN 0-07-222983-7, 2004).
The Servlet 2.3 and 2.4 specifications allow you to write listener classes for servlet contexts, session objects, and request objects (only in Servlet 2.4). In this section, we’re interested in the listener classes for a servlet context.
The javax.servlet package provides two listener interfaces that support event notifications for state changes in the ServletContext object: the ServletContext Listener interface and the ServletContextAttributesListener interface. We’ll examine the ServletContextListener interface here, because it’s directly related to writing JSF applications.
You use the ServletContextListener interface to listen to the ServletContext lifecycle events. ServletContextListener provides two methods:
The contextInitialized method is called when the Web application is ready to service requests. The method is called automatically by the servlet container when its own initialization process is finished. You can write code that needs to be executed when the application initializes, such as loading a JDBC driver, creating a database Connection object, or assigning initialization values to global variables.
The contextDestroyed method is invoked when the servlet context is about to be shut down. You can use this method to write code that needs to run when the application shuts down, such as closing a database connection or writing to the log.
The signatures of contextInitialized and contextDestroyed are as follows:
public void contextInitialized(ServletContextEvent sce) public void contextDestroyed(ServletContextEvent sce)
As an example, the code in Listing 4 is a listener class called ApplicationListener. It listens to the lifecycle events of the ServletContext. It simply prints the string “Application initialized” when the ServletContext is initialized and “Application destroyed” when the ServletContext is destroyed.
Listing 4The ApplicationListener Class
import javax.servlet.ServletContextListener; import javax.servlet.ServletContextEvent; public class ApplicationListener implements ServletContextListener { public void contextInitialized(ServletContextEvent cse) { System.out.println("Application initialized"); } public void contextDestroyed(ServletContextEvent cse) { System.out.println("Application shut down"); } }
For the ApplicationListener class to work, you must register it in the deployment descriptor, such as the one in Listing 5.
Listing 5The Deployment Descriptor for the ApplicationListener Class
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <listener> <listener-class>ApplicationListener</listener-class> </listener> </web-app>
Now, every time your application starts (the first time a servlet or JSP page is invoked), you will see the string “Application initialized” at the console. And before your application is taken out of service, it will display “Application shut down.”
Remember: This is part one of the first chapter of JavaServer Faces Programming, by Budi Kurniawan (McGraw-Hill/Osborne, ISBN 0-07-222983). Stay tuned for part 2 of "Overviews of Java Web Technologies," where we learn about JSP, JavaBeans, and Model 2. Buy this book!