10. März 2010  
  Suche:
 
  Basics
  Code-Galerie
  Forum
  FAQ
  Tipps & Tricks
  Literatur
  Knowledge Base
  Workshops
  JSP-Hosting
  JSP-Engines
  Jobbörse
  Links
  JSP-Sites
  Newsletter
  JSP-Test
  Impressum
  Username:
  
  Passwort:
  
  

  Jetzt registrieren
  Warum registrieren?

  Valid HTML 4.01!
  Valid CSS!

Filter Services

von shark,  13.03.2002 19:54:55  (2 votes)  [vote]
Ab der Servlet 2.3 Spezifikation ist das Servlet Filter Modell verfügbar. Servlet Filter basieren auf dem J2EE Design Pattern Decorating Filter. Filter werden als Objekte implementiert die HTTP-Requests bzw. Responses modifizieren. Filter kann man sich als Präprozessor eines HTTP-Requests bzw. im Fall der HTTP-Response als Postprozessor vorstellen.

Filter werden demnach vor einem HTTP-Request bzw. nach einer HTTP-Response ausgeführt.

Der wesentliche Vorteil von Servlet Filtern ist, dass Services, die Servlets betreffen, außerhalb des Servlet Source Codes definiert werden können.

Filter implizieren wiederverwendbare Software Services, die man zwischen Anwendungen austauscht. Im Internet gibt es mittlerweile interessante Filter für eine Vielzahl von Anwendungsfällen.

Technologisch gesehen implementieren Filter die javax.servlet.Filter Schnittstelle.

Folgende Filter-Methoden sind für eigene Gehversuche zu implementieren:

void init(FilterConfig poConfig) throws ServletException
void destroy()
void doFilter(ServletRequest poRequest, ServletResponse poResponse, FilterChain poChain) throws IOException, ServletException

Die init-Methode wird aufgerufen, um den Filter zu initialisieren, destroy hingegen wenn der Filterservice beendet wird. Die Methode doFilter ist Kern eines Filters, der für jeden HTTP-Request ausgeführt wird.

Folgendes Beispiel veranschaulicht, wie Filter implementiert und konfiguriert werden können:

//-- filter implementierung
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SimpleFilter implements Filter
{
  private FilterConfig m_oConfig = null;

  public void init(FilterConfig poConfig) throws ServletException
  {
    this.m_oConfig = poConfig;
  }

  public void destroy()
  {
    m_oConfig = null;
  }

  public void doFilter(ServletRequest poRequest, ServletResponse poResponse,
                    FilterChain poChain) throws IOException, ServletException
  {
   
    poChain.doFilter(poRequest, poResponse);
 
    m_oConfig.getServletContext().log("SimpleFilter: Log-Message...");
  }
}

<!-- filter konfiguration in der 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/j2ee/dtds/web-app_2_3.dtd">

<web-app>

    <filter>
        <filter-name>simpleFilter</filter-name>
        <filter-class>SimpleFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>simpleFilter</filter-name>
   <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

Die Datei web.xml kopiert man in das "Web-inf" Verzeichnis und die Klasse "SimpleFilter.class" liegt für unser Beispiel im Verzeichnis "\Web-inf\classes" vor. Es macht Sinn eine einfache index.html zu schreiben, um diese in das Verzeichnis "\develop\simple" zu legen.

Nachfolgend die Verzeichnisstruktur im Überblick:

develop
  -- simple
      -- Web-inf
            -- classes 

Im Verzeichnis "\develop\simple" führt man in iner Dos-Shell das Kommando "jar cvf simple.war index.html Web-inf" aus, um die Anwendung in ein Web-Archiv zu packen. Das Web-Archiv kopiert man in das "\webapps" Verzeichnis der ServletEngine bzw. des Application Servers, falls Hot-Deployment unterstützt wird. Unterstützt der Servlet Container kein Hot-Deployment, deployed man die Anwendung mit einer entsprechenden Administrationskonsole.

Fazit: Filter sind ein gutes Mittel für die Steuerung von HTTP-Requests/-Responses. Neue Services und Funktionalitäten lassen sich in Filtern kapseln und sind lose mit einer Web-Anwendung verbunden. Die Austausch- und Wiederverwendbarkeit von Servlet Filtern ist konform dem komponentenorientierten Gedanken.
[Druckansicht]    [Beitrag versenden]
<< zurück  Kommentieren


Hinweis: Auf dieser Seite liegen Links zu anderen Seiten im Internet. Für alle diese Links gilt: Wir betonen ausdrücklich, daß wir keinerlei Einfluß auf die Gestaltung und die Inhalte der gelinkten Seiten haben. Deshalb distanzieren wir uns hiermit ausdrücklich von allen Inhalten aller gelinkten Seiten auf dieser Homepage und machen uns ihre Inhalte nicht zueigen. Diese Erklärung gilt für alle auf unserer Homepage angebrachten Links

Redaktion/Betreiber von JSP-Develop übernehmen keinerlei Gewährleistung und Verantwortung für die Richtig- und/oder Vollständigkeit von den auf den Webseiten JSP-Develop veröffentlichten Source Codes. Die Verantwortung der Verwendung/Anwendung sowie etwaige Modifikation der hier veröffentlichten Sourcen obliegt einzig dem Benutzer der Webseite, welche die veröffentlichten Sourcen in einer Applikation/Anwendung einsetzt. Durch das Kopieren und/oder Benutzen der Sourcen in einer Applikation/Anwendung bzw. etwaigen Abschriften wird dieser Rechtshinweis anerkannt.

Java, JSP, JavaServer Pages, J2EE, EJB, JDBC, JNDI, JTA, Sun, Sun Microsystems are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and in other countries. IBM, WebSphere are trademarks or registered trademarks of International Business Machines Corporation. Other trademarks and registered trademarks are the property of their respective owners.