# Listeners

Filters are new in the Sun Microsystems Java Servlet 2.3 Specification. They enable you to intercept to intercept a request before it reaches a resource. In other words, a filter gives you access to the HttpServletRequest and the HttpServletResponse objects before they are passed on to a servlet.

Filters can be very useful. For example, you can write a filter that records all incoming requests and logs the IP addresses of the computers from which the requests originate. You also can use a filter as an encryption and decryption device. Other uses include user authentication, data compression, user input validation, and so on.

You also can put a set of filters in a chain. The first filter in the chain will be called first and then pass control to the second filter, and so on. Filter chaining ensures that you can write a filter that does a specific task but adds some functionality in another filter.

When writing a filter, you basically deal with the following three interfaces in the javax.servlet package:

- javax.servlet.Filter: represents the life-cycle of the filter.
- javax.servlet.FilterConfig: represents the configuration of the filter.
- javax.servlet.FilterChain: object provided by the servlet container to the developer giving a view into the invocation chain of a filtered request for a resource.

For more information about filters, refer to the Sun Microsystems Java™ Servlet 2.3 Specification at `java.sun.com/products/servlet/download.html`.

Related concepts
Servlets
Listeners
Web application overview
Related tasks
Creating Servlets
Creating Listeners
Creating Filters