Torne as URLs das suas aplicações web mais bonitas e fáceis de serem utilizadas através da formatação de URLs utilizando XML e expressões regulares.
As URLs são a porta de entrada de qualquer website ou sistema web, por isso é imporante que elas sejam escritas de forma a faciliar o acesso dos usuários. URLs muito longas são complicadas de serem lembradas, anotadas ou mesmo digitadas (em dispositivos móveis, por exemplo). As coisas pioram quando é necessário passar parâmetros através da URL, algo que é bastante realizado quando se deseja especificar uma opção escolhida pelo usuário ao utilizar um recurso, especificar o id de um objeto que o usuário deseja acessar, etc.
Para entendermos melhor a importância da utilização de URLs amigáveis, tomemos como exemplo a implementação de um mecanismo de busca de produtos em um website. Essa busca seria normalmente disponibilizada através de um endereço parecido com www.website.com/busca.jsp. Se quisessemos utilizar a busca avançada, a URL seria www.website.com/busca.jsp?tipo=avançada. Após utilizarmos a busca, quando clicássemos em um produto para ver os detalhes, teríamos como URL algo parecido com www.website.com/busca, www.website.com/busca/avancada e www.website.com/produtos/detalhes/123.
Como implementar URLs amigáveis em Java?
Uma solução para essa pergunta é implementar um Filtro de Servlet para interceptar uma requisição HTTP, interpretar a URL digitada (por exemplo, www.website.com/busca/avancada), convertê-la em uma nova URL (como www.website.com/busca.jsp?tipo=avancada) e direcionar o usuário para ela. Implementar esse filtro não é algo muito simples, mas poderemos utilizar em nossos trabalhos um filtro pronto, o URLRewrite Filter, disponível em http://tuckey.org/urlrewrite/.
A utilização desse filtro é bem simples. Inicialmente, deve-se fazer o download do filtro no site citado anteriormente, adicionar o arquivo urlrewrite.jar ao diretório WEB-INF/lib do projeto e acrescentar a declaração do filtro no web.xml da aplicação (Listagem 1). Nessa listagem, é declarado um filtro de servlet cujo nome é URLRewriteFilter (linha 02) e cuja classe é org.tuckey.web.filters.urlrewrite.UrlRewriteFilter (linha 03). Além disso, o filtro é mapeado para a URL “/*” (linha 07), o que significa que qualquer URL da aplicação será interceptada pelo filtro.
Listagem 1. Declaração do URLRewrie no web.xml
01. <filter>
02. <filter-name>UrlRewriteFilter</filter-name>
03. <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>