Monday, 26 November 2012

J2ee tutorial part 9:- Listeners in servlet

//listeners concept in servlet with example


Step1 :- Declare your listeners in web.xml as given bellow

<?xml version="1.0" ?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<listener>
  <listener-class>web.prac.MyContextListener</listener-class>
</listener>

<listener>
  <listener-class>web.prac.MyContextAttributeListener</listener-class>
</listener>


<servlet>
  <servlet-name>SetContextAttributes</servlet-name>
  <servlet-class>webcert.ch04.ex0403.SetContextAttributes</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>SetContextAttributes</servlet-name>
  <url-pattern>/SetContextAttributes/*</url-pattern>
</servlet-mapping>

</web-app>

Step2 :-  Create the servlet which generates events so thant we can implement them

package web.prac;

import java.io.*;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class SetContextAttributes extends HttpServlet {

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        PrintWriter out = response.getWriter();
        response.setContentType("text/html");
        out.write("<HTML><HEAD>");
        out.write("<TITLE>Set and Display Context Attributes</TITLE>");
        out.write("</HEAD><BODY>");

        ServletContext context = getServletContext();
       
        // Add, replace & remove some context attributes
        context.setAttribute("attribute1", "first attribute");
        context.setAttribute("attribute2", "second attribute");
        context.setAttribute("attribute1", "changed first attribute value");
        context.setAttribute("attribute2", "changed second attribute value");
        context.removeAttribute("attribute2");
       
        // Display context attributes

        Enumeration e = context.getAttributeNames();
        out.write("<H2>Context Attributes</H2>");
        while (e.hasMoreElements()) {
            String name = (String) e.nextElement();
            String value = "" + context.getAttribute(name);
            out.write("<BR />Name: " + name + ", value: " + value);
        }
       
       
        // Conclude page
        out.write("</BODY></HTML>");
        response.flushBuffer();

    }

    public void init() throws ServletException {
        super.init();
        System.out.println("In SetContextAttributes init() method.");
        ServletContext context = getServletContext();
        context.setAttribute("servletInitAttribute", "This attribute value added in servlet init() method.");
    }
}

Step 3 :- Now create your listeneres which were declared in the web.xml

package web.prac;

import javax.servlet.*;
public class MyContextAttributeListener implements
        ServletContextAttributeListener {//this listenes for change of context attributes
    public void attributeAdded(ServletContextAttributeEvent event) {
        String name = event.getName();
        String value = "" + event.getValue();
        System.out.println("Added context attribute: " + name + ", " + value);
    }

    public void attributeReplaced(ServletContextAttributeEvent event) {
        ServletContext context = event.getServletContext();
        String name = event.getName();
        String oldValue = "" + event.getValue();
        String newValue = "" + context.getAttribute(name);
        System.out.println("Replaced context attribute: " + name
                + ", old value: " + oldValue + ", new value: " + newValue);
    }

    public void attributeRemoved(ServletContextAttributeEvent event) {
        String name = event.getName();
        String value = "" + event.getValue();
        System.out.println("Removed context attribute: " + name + ", " + value);
    }
}

Step 4 :- The other listener declared in the web.xml

package webcert.ch04.ex0403;

import javax.servlet.*;

public class MyContextListener implements ServletContextListener {//this listenes for context initilization and destroying

    public void contextInitialized(ServletContextEvent event) {
        System.out.println("In MyContextListener contextInitialized() method.");
        ServletContext context = event.getServletContext();
        context.setAttribute("contextInitAttribute", "Made in the ServletContextListener");
    }

    public void contextDestroyed(ServletContextEvent event) {
        System.out.println("In MyContextListener contextDestroyed() method.");
        ServletContext context = event.getServletContext();
        context.removeAttribute("contextInitAttribute");
    }

}

No comments:

Post a Comment

Custom single threaded java server

 package com.diffengine.csv; import java.io.*; import java.net.*; import java.util.Date; public class Server { public static void main(Str...