Filters and Listeners
<filter> <!-- declares a Filter --> <description>some request filter</description> <!-- optional --> <display-name>my request filter</display-name> <!-- optional --> <filter-name>filter1</filter-name> <!-- name must be unique --> <filter-class>com.jarfiller.example.MyRequestFilter</filter-class> <init-param> <!-- for FilterConfig.getInitParameter. One per parameter. --> <description>new background color</description> <!-- optional --> <param-name>myColor</param-name> <!-- any unique name is allowed --> <param-value>green</param-value> </init-param> </filter> <filter-mapping> <!-- maps a <filter> on a URL pattern --> <filter-name>filter1</filter-name> <!-- name must match <filter>/<filter-name> --> <url-pattern>*.do</url-pattern> <!-- see URL Patterns below for syntax --> <dispatcher>REQUEST</dispatcher> <!-- filter regular requests (default), --> <dispatcher>FORWARD</dispatcher> <!-- filter forwards, --> <dispatcher>INCLUDE</dispatcher> <!-- filter includes, --> <dispatcher>ERROR</dispatcher> <!-- and filter errors --> </filter-mapping> <filter-mapping> <!-- maps a <filter> on a servlet --> <filter-name>filter1</filter-name> <!-- must match <filter>/<filter-name> --> <servlet-name>jfservlet1</servlet-name> <!-- must match <servlet>/<servlet-name> --> <!-- no dispatcher specified: REQUEST is default --> </filter-mapping>
Filter Examples
Pattern-based Filter
The following web.xml contains a filter for PNG and GIF images.
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <filter> <description>Filter to put watermarks on images</description> <filter-name>watermarkFilter1</filter-name> <filter-class>com.jarfiller.example.WatermarkFilter</filter-class> <init-param> <param-name>baseDir</param-name> <param-value>/protectedImages</param-value> </init-param> </filter> <filter-mapping> <filter-name>watermarkFilter1</filter-name> <url-pattern>*.png</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> <filter-mapping> <filter-name>watermarkFilter1</filter-name> <url-pattern>*.gif</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> </web-app>
Servlet Filter
This following web.xml contains a filter that processes the output of a servlet.
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <description>Servlet that shows a wishlist</description> <servlet-name>wishlistServlet</servlet-name> <servlet-class>com.jarfiller.example.WishlistServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>wishlistServlet</servlet-name> <url-pattern>/wishlist.do</url-pattern> </servlet-mapping> <filter> <description>Filter to add footers</description> <filter-name>footerFilter</filter-name> <filter-class>com.jarfiller.example.FooterFilter</filter-class> <init-param> <param-name>includeFooter</param-name> <param-value>/WEB-INF/footers/customFooter.html</param-value> </init-param> </filter> <filter-mapping> <filter-name>footerFilter</filter-name> <servlet-name>wishlistServlet</servlet-name> </filter-mapping> </web-app>
<listener> <!-- declares a listener --> <description>My first listener</description> <!-- optional --> <display-name>Simple Listener Example</display-name> <!-- optional --> <listener-class>com.jarfiller.example.MyListener</listener-class> </listener>
Listener Example
Setting up a listener is trivial:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <listener> <description>A listener for user sessions.</description> <listener-class>com.jarfiller.example.MySessionListener</listener-class> </listener> </web-app>

