Anda di halaman 1dari 4

Servlets

Recapitulando Tarefa 01
Atividades da Tarefa 1: Criao da Tela de Login; Dados do formulrio submetidos a um Servlet; Autenticao do usurio com login admin e a senha admin123; o Em falha: Redireciona para o login.jsp/index.jsp; o Em sucesso: Redireciona para a Principal.jsp. Criao de uma pgina de erro para mascarar o erro 404.

Outra maneira de enviar resposta do servidor ao cliente


Na aula anterior foi visto o mtodo request.sendRedirect() para redirecionar a pgina do cliente. Desta forma informamos ao cliente que ele deveria procurar as informaes que procura em outra pgina (a passada no parmetro), sendo assim, esta no a maneira correta de enviar um retorno ao cliente. Para isso utilizado o RequestDispatcher. Para isso, criado um objeto RequestDispatcher que receber como parmetro a pgina JSP de destino.
RequestDispatcher view = request.getRequestDispatcher("index.jsp");

Agora, para despachar, basta fazer uma chamada ao mtodo forward, passando com parmetro a request e a response.
view.forward(request, response);

Com isso, o envio para outra pgina pode ser feito. Faa o teste na sua aplicao.

Setando atributos no servlet


possvel tambm setar atributos no servlet para serem resgatados pela pgina JSP. Experimente declarar uma String no Servlet que receba uma mensagem do tipo Voc est tentando logar como Fulano, onde fulano o nome que o usurio digitou no campo login. Para setar o novo atributo utilizado o mtodo setAttribute() do objeto request. Exemplo de utilizao:
String nome = "Seu nome Macgyver";

request.setAttribute("named", nome);

Note que, Seu nome Macgyver est sendo armazenado na String nome, e em seguida, setado um atributo chamado named, recebendo o objeto nome como valor. Nesta situao, a String est recebendo um valor esttico, mas voc pode setar nela o valor que est sendo passado pelo formulrio, como nome ou senha digitada, informaes da requisio do usurio.

Teste a fazer
Experimente os dois mtodos vistos anteriormente (sendRedirect() e forward()) para tentar fazer o envio para a pgina index.jsp e resgatar o valor do atributo nesta.

Resgatando o valor
Para resgatar o valor na pgina index.jsp, utilize scriptlets (<% %>) na pgina JSP. Note que, para resgatar valores de formulrios no Servlet, foi utilizado o getParameter(), se tentar resgatar o atributo atravs deste, no funcionar, pois o getParameter() resgata parmetros de requisies GET e POST. Para o valor do atributo setado, ser utilizado o mtodo getAttribute() do objeto implcito request.
request.getAttribute("named");

Pergunta
Seria possvel ao invs de utilizar o setAttibute(), passar o valor do atributo por sendRedirect()? Caso positivo, como? Como esse parmetro seria resgatado na pgina index.jsp?

Formulrio de Cdstro
Com o conhecimento adquirido at aqui, adicione um link cadastre-se na pgina de login, que vai submeter a uma pgina cadastrousuario.jsp. Nesta pgina o usurio ter um formulrio a preencher com dados de nome, email, endereo, bairro, cidade, login e senha, esse formulrio ir submeter as informaes para um servlet, que ir tratar estas informaes e devolver elas para uma pgina JSP, que vai imprimir em cada linha uma das informaes, e um texto de identificao, referente a o que aquela informao.

Recuperando informaes do cliente/requisio


possvel recuperar dados do cliente atravs da utilizao de uma chamada ao mtodo getHeaderNames() da request. Para isso se ter algo como:
Enumeration info = request.getHeaderNames(); while (info.hasMoreElements()) { String header = (String) info.nextElement(); out.print(header + "---------->"); out.print(request.getHeader(header) + "<br>"); }

Crie uma nova copia do projeto, e renomeie para aulaEnumeration, ou o nome que julgar mais apropriado.

Pegando Parametros pelo Enumeration


Utilizando o Enumeration, o mtodo getParameterNames() e o que mais for necessrio, altere o seu servlet para captar as informaes da pgina de cadastro de usurios agora utilizando Enumeration.

Desfio 1
Utilizando sesses, controle o acesso, atravs da URL pginas restritas.

Desfio 2
MD5
Utilize e adapte a classe que gera o hash MD5, do arquivo md5.txt disponvel no Mussum para gerar o hash das senhas dos usurios e validar o usurio a partir do hash, sendo assim o teste no ser mais realizado a partir da senha admin123, e sim a partir do hash dela. Note que possvel utilizar outros algoritmos de hash para fazer a validao, basta trocar o valor de MessageDigest.getInstance("MD5"). possvel, por exemplo, mudar para SHA1, outro algoritmo popular para gerao de hashs.

Desfio 3
Conforme visto em aula, seguindo MVC, no se deve misturar lgica(at ento o servlet .java) com visualizao (jsp), e utilizando o cdigo elaborado, embora j se esteja

tratando alguns destes problemas, em algumas situaes este problema ainda est acontecendo. Identifique estes problemas na sua aplicao. Pense em alguma possvel soluo para este problema.

Desfio 4
Substitua sua implementao MD5 por uma de melhor desempenho. Baixe a biblioteca FastMD5 (http://www.twmacinta.com/myjava/fast_md5.php), e faa com que esta funcione no lugar da implementao atual.

Finalizando
Coloque seu projeto em uma pasta chamada Aula 04 do seu dropbox.

Anda mungkin juga menyukai