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

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

JSP e variáveis declaradas

Nós já vimos que arquivos JSP são traduzidos para Servlets antes de serem executados. Esse processo de tradução já foi inclusive ilustrado. Pois bem, agora surge o questionamento do porquê de se criar um JSP e não um Servlet, já que no final o JSP vai acabar virando um Servlet mesmo. A resposta para essa pergunta será dada a seguir.

Existe um consenso de que é muito mais fácil e legível trabalhar com o arquivo JSP do que com o Servlet gerado. Você concorda? É claro que o código gerado não está muito fácil de ser lido porque ele foi gerado automaticamente. Um ser humano teria condições de gerar um código muito mais legível, mas, mesmo assim, ainda seria mais fácil trabalhar direto com o arquivo JSP. Para confirmar isso, é só olharmos o código do arquivo JSP e o trecho de código das linhas 39 a 49 da Listagem 2. O que é mais legível, o código JSP ou esse trecho de código no Servlet? Espero que possamos concordar que o arquivo JSP é mais fácil de ser trabalhado pelo programador e por um possível projetista web!

Sobre a tradução dos JSPs nos Servlets, é importante você notar a existência do método _jspService() (linha 15) no Servlet gerado. Esse método é responsável pela geração da página de resposta. Note que o Servlet gerado não implementa os métodos doGet() e doPost() e herda de HttpJspBase (linha 10) ao invés de herdar da classe HttpServlet. Entretanto, o método _jspService() possui os parâmetros request e response, da mesma forma que ocorre com os métodos doGet() e doPost(). Além disso, observe também o trecho de código das linhas 20 a 26 da Listagem 2. Esse bloco de código inclui a declaração de diversas variáveis locais ao método _jspService(), as quais são inicializadas mais adiante no código (linhas 32 a 37):

  • session
    • Referência ao objeto sessão do usuário, se a mesma tiver sido criada.
  • application
    • Referência ao objeto do tipo ServletContext, o qual dá acesso ao contexto do Servlet.
  • config
    • Referência ao objeto do tipo ServletConfig, o qual dá acesso a informações de configuração do Servlet.
  • out
    • Referência ao objeto de escrita na página de resposta a ser gerada

Ok, mas por que saber disso tudo? Simples, tanto os parâmetros do método como essas variáveis locais podem ser acessadas pelo código JSP. Por exemplo, podemos criar uma página JSP para indicar se o usuário possui uma sessão aberta. Para isso, criaremos o arquivo de nome info-sessao.jsp mostrado na Listagem 3. Esse arquivo, como mostrado na linha 8, usa o valor da variável session para acessar a sessão aberta para o usuário e nos mostrar o identificador único gerado para representar a sessão do usuário.

Mas cuidado ao usar arquivos JSP, pois os objetos sessão são sempre criados se não existirem. O comportamento é semelhante ao método getSession() de HttpServletRequest que não possui parâmetros.

Importante!

Ao usar arquivos JSP, os objetos sessão são criados se não existirem.

Listagem 3 - Arquivos JSP com informação sobre o ID da sessão

Versão 5.3 - Todos os Direitos reservados