# fillter-mapping: möglichkeiten mit url-pattern



## tagtraeumer (28. Mrz 2009)

Hi,
ich habe in der web.xml einen startfilter eingerichtet, der logs erstellen, letzte exceptions und noch ein paar andere dinge bereit stellen soll.

[HIGHLIGHT="XML"]<filter>
	<filter-name>StartFilter</filter-name>
	<filter-class>com.p2_0.web.application.StartFilter</filter-class>
</filter> soll, 
<filter-mapping>
	<filter-name>StartFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>[/HIGHLIGHT]

mein problem ist aber, dass wirklich alle dateien durch den filter gehen. bei servlets und meinem struts servlet 'action' ist das ja auch sinn der sache, doch leider werden auch Bilder, JavaScript und CSS-Dateien durch den filter geleitet, das ist nicht nur nicht ganz so ideal, da viele logs erstellt werden, die ich garnicht brauche, sondern wird sicher auch etwas auf die performance drücken, oder etwa nicht?
ich kann die klar auch alle im filter ausschließen, gibt es aber auch per filter-mapping die möglichkeit als url-pattern reguläre ausdrücke oder so zu nutzen oder spezielle datentypen auszuschließen? ich hab bei google nichts besonderes gefunden.


----------



## gex (29. Mrz 2009)

Hi

Ne sowas gibts leider nicht (ausser bei Caucho's Resin...). Ich hätte das auch mal gewollt ;-).

Mein Ansatz war dann den Filter mit einem param zu initialisieren, dessen Wert die exclusions enthielt,
separiert durch semikolons. Im Filter musst du dann aufgrund dieses Delimiters splitten, kannst dir ein HashSet oder 
ähnliches aufbauen, wogegen du ganz zu Beginn des Filters überprüfst, ob die URL mit einem dieser Exclusions beginnt,
falls dem so ist, einfach nur chain.doFilter(request, response); ausführen. Dann verlierst du kaum Performance.

Falls du Regex gebrauchen möchtest, kannst du den Init-Param ja noch weiter auswerten.

also 

```
<init-param>
  <param-name>exclusion</param-name>
  <param-value>/javascript;/css;..</param-value>
</init-param>
```


----------



## tagtraeumer (31. Mrz 2009)

oh danke garnicht mitbekommen, dass schon eine antwort da ist.
auf der übersicht stand immer nur mein Nick, wahrscheinlich noch im Cache gewesen.

Ich werde das auf jeden fall mal ausprobieren, nun weiss ich zumindest, dass es erstmal nicht anders geht.


----------

