Cursos / Informática para Internet / Desenvolvimento Web I / Aula

arrow_back Aula 05 - Introdução e Recursos JavaServer Pages

Ciclo de vida do JSP II

O primeiro ponto que devemos notar é a forma de tradução do JSP para o Servlet. Essa tradução, representada principalmente pelo bloco de linhas de código 39 a 49 da Listagem 2, basicamente segue o raciocínio demonstrado abaixo.

  • Todo o conteúdo da página de resposta será escrito através de uma variável de nome out. Apesar de seu tipo ser JspWriter, ela se comporta de forma semelhante à classe PrintWriter que estávamos acostumados a usar ao escrevermos Servlets.
  • Conteúdos estáticos do arquivo aleatorio.jsp, como a linha que contém o marcador , serão traduzidos pelo comando out.write(), passando o conteúdo estático como parâmetro. Esse exemplo é visto na linha 39, cujo código gerado é o out.write("\r\n");.
  • Conteúdos dinâmicos, representados por marcadores e diretivas JSP, são traduzidos de forma a gerar o código Servlet equivalente, ou seja, do código que iríamos escrever se precisássemos escrever esse Servlet manualmente. Veja alguns exemplos:
    • A diretiva <%@ page ... %> diz que o conteúdo da página de resposta é texto HTML, através do trecho (contentType="text/html; charset=ISO-8859-1"). É muito importante você especificar o charset como está vendo no exemplo (nesse caso o ISO-8859-1) pois isso garante que o cliente (Navegador geralmente) vai exibir corretamente os textos do seu site com os acentos e caracteres especiais. Esse conteúdo poderia também ser de outro tipo, como texto XML. No caso do HTML, essa instrução é traduzida para o comando da linha 29 (response.setContentType("text/html");).
    • A linha 9 da Listagem 1 (toda vez que é acessada: <%= Math.random() %>) contém tanto código estático (texto) como conteúdo dinâmico (expressão JSP que resultará em um número aleatório).
      • Nesse caso, a primeira parte, que é estática, será traduzida usando o comando out.write("toda vez que é acessada: "); (linha 45). Basicamente o texto é transformado em uma String (texto entre aspas duplas) e escrito na saída pelo comando write.
      • Já a parte do conteúdo dinâmico é traduzida colocando-se o resultado da expressão Java como parâmetro do comando write. No caso, a expressão <%= Math.random() %> é traduzida por comando out.write( Math.random() ); (linha 46).

Com isso, vimos que é possível traduzir as instruções contidas no arquivo JSP em um Servlet. Isso é feito de forma automática e de forma transparente, então você não precisa se preocupar em entender exatamente como essa tradução é feita. O importante é você saber que ela existe e ter uma noção de como ela funciona!

Dito isso, você pode se perguntar: esse processo de tradução não pode impactar o desempenho do sistema? E a resposta é sim! O primeiro acesso a um arquivo JSP é sempre mais lento, pois exige a tradução do arquivo em um Servlet e a compilação do código Java gerado. Entretanto, a partir do segundo acesso, não há impacto no desempenho quando comparado à implementação através de Servlets puros.

Versão 5.3 - Todos os Direitos reservados