1   package ch.ige.edossier.web.struts;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   import java.util.Enumeration;
6   import java.util.Iterator;
7   import javax.servlet.http.HttpServletRequest;
8   import javax.servlet.http.HttpServletResponse;
9   import javax.servlet.http.HttpSession;
10  import org.apache.log4j.Logger;
11  import org.apache.struts.action.*;
12  
13  /**
14   * B32.03 - eDossier-Interceptions - Diplomarbeit an der Software-Schule Schweiz<br>
15   * MUSS-ZIEL [M2] - Logout (Pflichtenheft b32.03_PF_eDossier.pdf, Seite 16)<br>
16   * Die Klasse LogoffAction wird die Session der Webapplikation beendet.
17   * <p>
18   * Copyright (c) 2004, Eidgenössisches Institut für Geistiges Eigentum
19   * @author    Anita Rueegsegger, Marc Bouquet
20   * @version   $Id: LogoffAction.java,v 1.8 2004/11/02 02:01:47 bouquet Exp $
21   */
22  public class LogoffAction extends Action
23  {
24    /**
25     * Die Methode execute wird aufgerufen, wenn aus irgend einer JavaServerPage der Link "Logout" gedrückt wird.
26     * Durch die Methode wird die bestehende Session beendet und der Benutzer wird auf die Einstiegsseiten
27     * verzweigt.
28     * @param actionMapping ActionMapping
29     * @param actionForm ActionForm
30     * @param httpServletRequest HttpServletRequest
31     * @param httpServletResponse HttpServletResponse
32     * @return ActionForward
33     */
34    public ActionForward execute( ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse )
35    {
36      HttpSession session = httpServletRequest.getSession();
37      Enumeration attributeNames = session.getAttributeNames();
38      List listAttributeNames = new ArrayList();
39  
40      while( attributeNames.hasMoreElements() )
41      {
42        listAttributeNames.add( ( String )attributeNames.nextElement() );
43      }
44  
45      Iterator iter = listAttributeNames.iterator();
46      while( iter.hasNext() )
47      {
48        session.removeAttribute( ( String )iter.next() );
49      }
50  
51      session.setAttribute( "token", new Boolean( false ) );
52      session.invalidate();
53  
54      return( actionMapping.findForward( "forward" ) );
55    }
56  }
57