| <?xml version="1.0" encoding="utf-8"?> | |
| <!--Arbortext, Inc., 1988-2006, v.4002--> | |
| <!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" | |
| "task.dtd"> | |
| <task id="twfltwiz" xml:lang="en-us"> | |
| <title>Creating Filters</title> | |
| <shortdesc>The filters wizard helps you to create <tm tmclass="special" tmowner="Sun Microsystems, Inc." | |
| tmtype="tm" trademark="Java">Java</tm> servlet filters | |
| by walking you through the creation process and and by providing you with output files | |
| that you can use or that you can modify for use with your Web | |
| application. The filters can run on Java EE-compliant Web servers.</shortdesc> | |
| <prolog><metadata> | |
| <keywords><indexterm>servlets<indexterm>creating</indexterm></indexterm></keywords> | |
| </metadata></prolog> | |
| <taskbody> | |
| <context> <p>To create a filter, complete the following steps: </p></context> | |
| <<steps> | |
| <step><cmd>In the Java EE perspective, expand your <xref href="ccwebprj.dita" | |
| scope="peer"><desc></desc>dynamic project</xref> in the Project Explorer view.</cmd></step> | |
| <step><cmd>Right click on the <b>Filter</b> icon, and select <menucascade> | |
| <uicontrol>New</uicontrol><uicontrol>Filter</uicontrol></menucascade> from | |
| the pop-up menu.</cmd><stepresult> The <uicontrol>Create FIlter</uicontrol> wizard | |
| appears.</stepresult></step> | |
| <step><cmd>Follow the project wizard prompts.</cmd></step> | |
| </steps> | |
| <postreq><p><b>General Information</b></p><dl><dlentry> | |
| <p><dt>Modifiers</dt></p> | |
| <dd>The <cite>Sun | |
| Microsystems <tm tmclass="special" tmowner="Sun Microsystems, Inc." tmtype="tm" | |
| trademark="Java">Java</tm> Servlet 2.3 Specification</cite> states that a | |
| Servlet class must be <b>public</b> and not <b>abstract</b>. Therefore, | |
| you cannot change these modifiers. The only one available for change is | |
| the <b>final</b> modifier.</dd> | |
| </dlentry><dlentry> | |
| <p><dt>Interfaces</dt></p> | |
| <dd>There is one obligatory interface that filter classes must | |
| implement: <b>javax.servlet.Filter</b>. This interface is | |
| provided by javax.servlet package and is used to represent the | |
| life-cycle of the filter. This interface has three methods: init, | |
| doFilter and destroy. <ul> | |
| <li>The <b>init</b> method is called by the servlet | |
| container only once, when it finishes instantiating the filter.</li> | |
| <li>The <b>doFilter</b> method is where the filtering is performed and is called every | |
| time a user requests a resource, such as a servlet, to which the filter | |
| is mapped.</li> | |
| <li>The <b>destroy</b> method is called by the servlet container to | |
| tell the filter that it will be taken out of service.</li> | |
| </ul> Although, that the javax.servlet.Filter interface is provided in the <b>Interfaces</b> | |
| field by default, you can add additional interfaces to implement by using the <b>Add</b> button.</dd> | |
| </dlentry><dlentry> | |
| <p><dt>Interface selection dialog</dt></p> | |
| <dd>This dialog appears if you select to add an interface to your | |
| filter. As you type the name of the interface that you are adding, a | |
| list of available interfaces listed in the <b>Matching items</b> list box | |
| updates dynamically to display only the interfaces that match the | |
| pattern. Choose an interface to see the qualifier, and then | |
| click <b>OK</b> when finished.</dd> | |
| </dlentry><dlentry> | |
| <p><dt>Filter Mappings</dt></p> | |
| <dd>For a filter to intercept a request to a servlet, you must: | |
| <ol> | |
| <li>declare the filter with a <b><filter></b> element in | |
| the deployment descriptor</li> | |
| <li>map the filter to the servlet using the <b><filter-mapping></b> | |
| element.</li> | |
| </ol> | |
| Sometimes you want a filter to work on multiple servlets. You can do | |
| this by mapping a filter to a URL pattern so that any request that | |
| matches that URL pattern will be filtered. All this is made | |
| automatically if you use the <b>Filter Mappings</b> field.</dd> | |
| </dlentry><dlentry> | |
| <p><dt>Method stubs</dt></p> | |
| <dd>Because each filter must implement the javax.servlet.Filter | |
| interface, the <b>Inherited abstract methods</b> option is always | |
| checked and cannot be changed.</dd> | |
| </dlentry></dl></postreq> | |
| </taskbody> | |
| </task> |