Aula 04 - JSP+Servlets

Embed Size (px)

Citation preview

  • 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?

    Formul rio 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) + "");

    }

    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.