Java EE 8 Design Patterns and Best Practices
上QQ阅读APP看书,第一时间看更新

Deciding filter mapping

Defining the mapping method is crucial to implementing the intercepting filter pattern. This is because a bad method for mapping can impact the project directly and cause rework. We have two filter mapping types—UrlPattern and servlet name.

The use of UrlPatterns is indicated when we want to filter the HTTP Requests to non-specific resources or files, but we also want to filter various unknown resources. Here are some examples of this:

  • *.jsp: This filters all requests to JSP pages. If one JSP page is added to the server, then the filter will filter the new JSP page without making any modifications.
  • /*: This filters all requests to all resources or files on the server. If one resource or file is added to the server, then the filter will filter this new resource or file without performing any modifications.
  • /user/*: This filters all requests to all resources or files on the server that have a URI beginning with /user. If one resource or file that is accessed by a URI beginning with /user is added on servlet, then the filter will filter this new resource or file without performing any modifications.

The servlet name used to map the filter indicates when you want to filter a specific servlet, independent of its urlPattern. This way of mapping allows us to modify one urlPattern of the mapped servlet without performing any modifications on the filter. Here are some examples:

  • {servlet1}: This only maps the servlet named as servlet1. If the urlPatterns of servlet1 are modified, then the filter doesn't need to be modified.
  • {servlet1,servlet2}: This maps two servlets named servlet1 and servlet2. Its behavior is similar to the previous example shown, in which only one servlet was mapped.