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

arrow_back Aula 04 - Trabalhando com sessões

Usando a sessão em outras partes do sistema II

Vamos agora alterar o sistema de cadastro desenvolvido na aula passada, na qual tínhamos usado a abordagem de repasse de parâmetros, para considerar sua implementação através do uso de sessões. Pois bem, para você não apagar o código já criado, ou seja, mantenha o projeto aula03 como está e simplesmente copie os códigos necessários assim que solicitado. Vamos criar um novo Servlet no projeto atual (da aula 04) e chamá-lo de ServletTela1CadastroSessao. Copie o arquivo cadastro.html da aula passada para o projeto dessa aula e altere o formulário web da página cadastro.html para apontar para esse novo Servlet:

<form action="ServletTela1CadastroSessao">

Depois, copie a implementação dos métodos doGet() e doPost() do ServletTela1Cadastro (da aula passada) para o ServletTela1CadastroSessao (dessa aula). A página gerada pelo ServletTela1CadastroSessao precisa ter um formulário que aponte para ServletTela2CadastroSessao, um novo Servlet que também precisa ser criado. Além disso, precisaremos receber os dados que vêm da primeira tela (dados pessoais) e colocá-los em algum lugar temporário no servidor. E qual é esse lugar? O objeto sessão!

Porém, para estruturar melhor os dados a serem recebidos, é melhor criar uma classe para agrupá-los, como mostrado a seguir, na Listagem 5.

Listagem 5 - Código-fonte da classe DadosPessoais

Cada parâmetro da requisição será armazenado em um atributo da classe DadosPessoais. Por exemplo, o nome do usuário será armazenado no atributo nome da classe DadosPessoais. A mesma coisa acontece para os demais parâmetros da requisição a serem armazenados na sessão do usuário.

Sendo assim, o nosso ServletTela1CadastroSessao será implementado de acordo com o código mostrado na Listagem 6. Note na linha 45 que o formulário agora referencia o ServletTela2CadastroSessao ao invés do antigo ServletTela1Cadastro. Note também a verificação de que o usuário está autenticado no sistema (linhas 31 e 32). Essa verificação deve ser feita por todos os Servlets que implementem operações as quais exijam que o usuário esteja autenticado.

Listagem 6 - Código-fonte do ServletTela1CadastroSessao

Finalmente, o código da linha 34 a 42 é responsável por pegar os dados da requisição, agrupá-los no objeto do tipo DadosPessoais e armazená-lo na sessão do usuário. Basicamente, isso é feito por comandos como o da linha 36, onde o valor do parâmetro da requisição (retorno do método getParameter(“sobrenome”)) é utilizado para setar o atributo do objeto DadosPessoais (método setSobrenome()). No final de tudo, é necessário armazenar o objeto DadosPessoais na sessão (linha 42).

Para o ServletTela2CadastroSessao (sucessor do antigo ServletTela2Cadastro), precisaremos criá-lo para receber os dados da segunda tela de cadastro (dados profissionais), recuperar os dados pessoas da sessão do usuário e, finalmente, montar a tela de confirmação de cadastro. Vamos ver como fica seu código? Ele está mostrado na Listagem 7.

Note o uso do bloco de código das linhas 30 a 32, responsáveis por verificar se o usuário está autenticado no sistema, bem como o código da linha 36 a 38, responsável por verificar se o objeto DadosPessoais foi criado e colocado na sessão do usuário. Se o objeto não tiver sido criado e colocado na sessão, o que isso quer dizer? Bom, muito provavelmente o usuário se autenticou no sistema, mas digitou diretamente a URL da segunda tela, pulando o preenchimento da primeira tela.

Por fim, note que o bloco de código da linha 39 a 51 pegam os dados do objeto DadosPessoais, enquanto o bloco de código da linha 52 a 63 pegam dados do objeto request, ou seja, digitados e enviados pela tela anterior do sistema.

Listagem 7 - Servlet responsável por montar a segunda tela de cadastro

Versão 5.3 - Todos os Direitos reservados