File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Web Component Certification (SCWCD/OCPJWCD) and the fly likes My example with ServletContextListener  and ServletContextAttrib. Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Web Component Certification (SCWCD/OCPJWCD)
Bookmark "My example with ServletContextListener  and ServletContextAttrib." Watch "My example with ServletContextListener  and ServletContextAttrib." New topic
Author

My example with ServletContextListener and ServletContextAttrib.

Engin Okucu
Ranch Hand

Joined: Feb 09, 2002
Posts: 174
I thought my example may help anybody who are studying for the exam and i wanted to share it with you.
1.MyServlet --> Servlet to print my firstname and lastname and implements also the listener interface
ServletContextAttributeListener. I did it to check if the attributeAdded() method will be called or not.
2.MyServletContextListener --> this is a listener to add and remove attribute (my lastname) from context.
What i'm doing ? i explained with comments in my code.
My aim is to print "Engin OKUCU" , 'Engin' is defined as parameter in the web.xml and 'OKUCU'
is defined in my MyServletContextListener wich will add it in the application's context when
the container is starting.
1. start the container.
2. public void contextInitialized(ServletContextEvent sce) is called as MyServletContextListener
implements ServletContextListener.
3. System.out.println("contextInitialised() is called")
4. sce.getServletContext().setAttribute("lastname",lastname)
5. public void attributeAdded(ServletContextAttributeEvent scab) is called as a context parameter
has been added to the context.
6. System.out.println("attributeAdded is called and the lastname is : "+lastname) --> output for lastname is null
7. System.out.println("this is called after attributeAdded() method")
8. init(ServletConfig config) is called to instantiate the servlet by getting my firstname from

9. call the servlet by making a request : http://localhost:8080/epfc/MyServlet
--> output for lastname is OKUCU
10. shutdown the container
11. the attribute is removed from context.--> sce.getServletContext().getAttribute("lastname")

--------- web.xml
<?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>info.MyServletContextListener</listener-class>
</listener>
<listener>
<listener-class>info.MyServlet</listener-class>
</listener>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>info.MyServlet</servlet-class>
<init-param>
<param-name>firstname</param-name>
<param-value>Engin</param-value>
</init-param>

</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

</web-app>

----------MyServlet

package info;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.io.*;
public class MyServlet extends HttpServlet implements ServletContextAttributeListener
{
static String firstname = null;
String value = null;
String lastname = null ;
int i=0;

public void init(ServletConfig config) throws ServletException
{
ServletContext context = config.getServletContext() ;
// we retrieve the attribute added to the context
lastname = (String)context.getAttribute("lastname"); // the value of lastname is now 'OKUCU'
value = config.getInitParameter("firstname");
if(value == null)
{
firstname ="No name is specified";
}
else
{
firstname = value;
}

}


public void attributeAdded(ServletContextAttributeEvent scab)
{
// it prints null to the output because the servlet is not yet instantiated
System.out.println("attributeAdded is called and lastname is : "+lastname);

}

public void attributeRemoved(ServletContextAttributeEvent scab) {}

public void attributeReplaced(ServletContextAttributeEvent scab) {}



public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException,IOException
{


res.setContentType("text/html");
PrintWriter out = res.getWriter();
// firstname is Engin (defined in web.xml) and lastname is OKUCU (added by setAttribute() to the context of the web app.)
out.println("<html><head>"+firstname+"\t"+lastname+"</head><body>");

}





}
---------MyServletContextListener
package info;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class MyServletContextListener implements ServletContextListener
{
String lastname = "OKUCU";


public void contextInitialized(ServletContextEvent sce)
{
System.out.println("contextInitialised() is called");
sce.getServletContext().setAttribute("lastname",lastname);
System.out.println("this is called after attributeAdded() method");

}



public void contextDestroyed(ServletContextEvent sce)
{
sce.getServletContext().getAttribute("lastname");
System.out.println("Context destroyed");

}
}
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: My example with ServletContextListener and ServletContextAttrib.