---
title: 'Thema der Woche: Servlet-Filter'
url: 'https://tutego.de/blog/javainsel/2012/12/thema-der-woche-servlet-filter'
markdown: 'https://tutego.de/blog/javainsel/2012/12/thema-der-woche-servlet-filter.md'
date: '2012-12-12'
description: 'Was Nordkorea kann, können wir auch. Lies zur Einleitung http://www.spiegel.de/netzwelt/web/html-trick-nordkorea-macht-seinen-fuehrer-groesser-a-872291.html, um eine Idee zu bekommen, was wir vorhaben. Lege in der IDE ein Web-Projekt an. Setze eine index.jsp in das Wurzelverzeichnis mit Text, der d…'
taxonomy:
  category:
    - 'Die wöchentliche Dosis Java'
---

# Thema der Woche: Servlet-Filter

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Thema der Woche: Servlet-Filter

12.12.2012 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

Was Nordkorea kann, können wir auch. Lies zur Einleitung [http://www.spiegel.de/netzwelt/web/html-trick-nordkorea-macht-seinen-fuehrer-groesser-a-872291.html](http://www.spiegel.de/netzwelt/web/html-trick-nordkorea-macht-seinen-fuehrer-groesser-a-872291.html "http://www.spiegel.de/netzwelt/web/html-trick-nordkorea-macht-seinen-fuehrer-groesser-a-872291.html"), um eine Idee zu bekommen, was wir vorhaben.

Lege in der IDE ein Web-Projekt an. Setze eine *index.jsp* in das Wurzelverzeichnis mit Text, der den Namen “Kim Jong Un” enthält (alternativ “Angela Merkel”; je nachdem, wer einem sympathischer ist). Teste die Seite.

Lies [http://www.oracle.com/technetwork/java/filters-137243.html](http://www.oracle.com/technetwork/java/filters-137243.html "http://www.oracle.com/technetwork/java/filters-137243.html") und verstehe das Konzept der `Filter`. Der Code ist mit den Eintragungen in die *web.xml* nicht mehr ganz aktuell, den letzten Teil kann man daher überspringen.

Kopiere und probiere es aus. Das Beispiel nutzt die Annotationen aus der aktuellen Servlet-Spezifikation.

Ändere den `Filter`, so dass er den Namen unseres gewählten Staatsoberhaupts größer setzt. Wie das realisiert ist, ist im Prinzip egal, die einfachster Lösung ist Ok (etwa mit <font size=+1>name</font>).

Kategorien: [Die wöchentliche Dosis Java](https://tutego.de/blog/javainsel/category/die-woechentliche-dosis-java/)

## 1 Kommentare

**bobndrew** · [14.06.2013 18:56](#comment-4559)

Mein Ansatz: ```java import java.io.CharArrayWriter; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; /\*\* \* Ein Servlet Filter der eine subtile Änderung am Erscheinungsbild des ausgelieferten HTML-Contents vornimmt. \* \* @author bobndrew \*/ @WebFilter( filterName = "WahljahrFilter", urlPatterns = { "\*" } ) public final class WahljahrFilter implements Filter { private FilterConfig filterConfig = null; @Override public void init( FilterConfig filterConfig ) throws ServletException { this.filterConfig = filterConfig; } @Override public void destroy() { this.filterConfig = null; } @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException { if ( filterConfig == null ) return; PrintWriter out = response.getWriter(); CharResponseWrapper wrapper = new CharResponseWrapper( (HttpServletResponse) response ); chain.doFilter( request, wrapper ); CharArrayWriter caw = new CharArrayWriter(); caw.write( wrapper.toString().replace( "Angela Merkel", "Ange" + "la Me" + "rkel" ) ); response.setContentLength( caw.toString().length() ); out.write( caw.toString() ); out.close(); chain.doFilter( request, wrapper ); } /\*\* \* ''WahljahrFilter.java'' wraps the response in this CharResponseWrapper. CharResponseWrapper overrides the \* getWriter method to return a stand-in stream into which the servlet at the end of the filter chain writes \* its response. When chain.doFilter returns, \* \* ''WahljahrFilter.java'' retrieves the servlet''s response from PrintWriter and writes it to a buffer if it \* is an HTML response. The filter inserts the value of the counter into the buffer, resets the content \* length header of the response, and finally writes the contents of the buffer to the response stream. \* \* \* @author sun / oracle \*/ public class CharResponseWrapper extends HttpServletResponseWrapper { private CharArrayWriter output; public String toString() { return output.toString(); } public CharResponseWrapper( HttpServletResponse response ) { super( response ); output = new CharArrayWriter(); } public PrintWriter getWriter() { return new PrintWriter( output ); } } } ```

Die bisherigen Kommentare wurden aus WordPress übernommen. Neue Kommentare sind derzeit geschlossen.

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Java-Versionen gehen mit Unicode-Standard Hand in Hand](https://tutego.de/blog/javainsel/2012/12/java-versionen-gehen-mit-unicode-standard-hand-in-hand.md)
- Next: [Base64-Klasse kommt öffentlich ins Paket java.util](https://tutego.de/blog/javainsel/2012/12/base64-klasse-kommt-ffentlich-ins-paket-java-util.md)
