# Filter



## MQue (12. Nov 2009)

Hallo,

beim meiner Web- Anwendung brauche ich einen Filter, welcher mir zum Response noch etwas dazuschreibt, also wenn am Client eine Seite abfrage, dann soll die Abfrage ganz nochmal von statten gehen (ohne Filter) und wenn diese Seite beim Server hinausgeht, dann sollte noch etwas gemacht werden, jetzt ist es schon eine Zeit her das ich das JavaEE Tutorial gelesen habe und ich kann mich noch düster daran erinnern, dass es ein bisschen komplizierter ist, wenn der Filter erst nach einer Anfrage greifen soll,
Vielleich könnte mir da jemand auf die Sprünge helfen, 

Besten Dank,
lg




```
package filter;

import java.io.IOException;
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.http.HttpServletResponse;

public final class Filter1 implements Filter {

    private FilterConfig filterConfig;

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

    public void destroy() {
        filterConfig = null;
        }

    public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
        final HttpServletResponse httpres = (HttpServletResponse)response;
        request.setAttribute("test", "testVaraible in Filer gesetzt");
        chain.doFilter(request, response);
        }
}
```


----------



## FArt (12. Nov 2009)

Ist hier nicht so ein Beispiel dabei?
The Essentials of Filters


----------



## MQue (12. Nov 2009)

Besten Dank,
hab das mal so hinbekommen, dass jede URL gefiltert wird beim request und response mit:


```
<filter-mapping>
        <filter-name>MyFilter</filter-name>
        <url-pattern>/*</url-pattern>  // hier happerts noch
    </filter-mapping>
```

Jetzt möchte ich nur die URLs (Requests, die per AJAX stattfinden) filtern, die in der Anfrage den String "changePicture=true" enthalten.
Geht das irgendwie, ich glaub mit RegEx funktioniert das ganz gut, kann ich diese RegEx in das "url-pattern" tag reinschreiben?
lg


----------



## FArt (12. Nov 2009)

> kann ich diese RegEx in das "url-pattern" tag reinschreiben


Davon gehe ich aus, kommt auf die URL drauf an. Sonst geht das hier: Why url mapping sucks in Java Servlet land, and what I did about it.  Wherever I go, there I am


----------



## MQue (16. Nov 2009)

Hallo,

hätte noch eine Frage zum dem Thema und zwar habe ich in meinem Filter unter anderem die Methode:


```
private void doAfterProcessing(final ServletRequest request, final ServletResponse response) 
   throws IOException, ServletException {
        System.out.println("******** doAfterProcessing: " + response.getCharacterEncoding() + ", " + response.getContentType());
        }
```

eingebaut,
im meinem Fall schaut es so aus, dass der Client eine Seite anfordert und ich durch den Filter noch etwas dazuhängen möchte, ich habe aber das Problem, dass ich nicht weiß, wie ich auf den Content des response zugreifen kann,

lg


----------



## MQue (16. Nov 2009)

Bzw. anders gefragt,
nachdem eine angeforderte Seite zum Client gesendet wurde und diese im Browser angezeigt wird, braucht der Client weitere Informationen (XML) die ich ihm senden möchte (also unmittelbar nachdem ich ihm die Seite gesendet habe),
Wie kann ich das am Besten machen?
Eine Möglichkeit wäre wahrscheinlich, nachdem die Seite im Browser angezeigt wurde frägt der Client nochmal beim Server an, um die zusätzlichen Informationen zu erhalten.
Am Besten wäre es für mich, wenns mit einem Request - Response erledigt wäre.
Was sagt ihr dazu?

lg


----------



## FArt (16. Nov 2009)

> Am Besten wäre es für mich, wenns mit einem Request - Response erledigt wäre.


Klar, sonst müsste der Client noch mal anfragen.


----------

