sábado, 26 de março de 2011

Criando e Pegando Cookies com JSP e Servlet

Cookies
Cookies são pacotes que contem informações geradas pelo servidor.Esses pacotes, alem de enviados juntamente ás respostas fornecidas para uma solicitação, também permanecem  armazenados pelo browser do usuário que realizou tal solicitação.Dessa forma, os Cookies permitem que o servidor recupere os valores já definidos.

Usando a IDE Eclipse para criar uma pagina Web que crie os Cookies apartir de um formulário.Primeiro precisamos criar um simples formulário em um arquivo JSP no pacote webContente do seu projeto.O nome do formulário eu deixei como (form1) o method como (post) pois é um formulário e por padrão dever ser via (post) e  a action deixei como (do) pois a Servlet foi mapeada com esse nome.

Segue abaixo o código fonte.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cookie</title>
</head>
<body>


<form name="form1" method="post" action="do"><BR>
<BR>
<table align="center">
    <tr bgcolor="GREEN">
        <td colspan="2" align="center"><font face="verdana" size="2"><b>Criando
        Cookies</b></font></td>
       
    <tr>
        <td>Nome:</td>
        <td><input type="text" name="nome" size="60"></td>
        <td>
    <tr>
        <td>Telefone:</td>
        <td><input type="text" name="telefone" size="20"></td>
        <td>
    <tr>
    <tr>
        <td>Endereco:</td>
        <td><input type="text" name="endereco" size="60"></td>
        <td>
    <tr>
        <tr>
        <td>Bairro:</td>
        <td><input type="text" name="bairro" size="30"></td>
        <td>
    <tr>
        <tr>
        <td>Cidade:</td>
        <td><input type="text" name="cidade" size="30"></td>
        <td>
    <tr>
        <td colspan="2" align="center"><input type="submit" value="Enviar"></td>
        <td>
</table>
</form>


</body>
</html>

Salve esse codigo como index.jsp 

Com esse codigo a pagina JSP  ficará dessa forma.

Agora precisamos criar uma nova  pagina jsp que ira pegar e exibir os Cookies com as informações do formulário.
Eu usei Scriptlet na pagina JSP, onde eu crio um Array de Cookie e atribui para ele  os Cookies com o (request.getCookies) que devolve um Array de Cookies .
Segue abaixo o código fonte que você deve salvar na pasta webContente do seu projeto.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>PegaCookie</title>
</head>

<h1> Cookies</h1>
<body>

<%
Cookie[] cookies = request.getCookies();

    for(Cookie cookie: cookies){
       
        out.println("<b>nomeCookie:</b> "+cookie.getName());   
        out.println("<b>Valor:</b> " + cookie.getValue());
        out.println("<br>");
    }

%>

</body>
</html>

Salve esse codigo como pegarCookies.jsp .

Agora precisamos criar a Servlet com o nome CriaCookie e a deixar mapeada como (do).Na minha Servlet eu usei o método (getParameter) da Classe HttpServletRequest para pegar os valores que estão no formulário após o usuário clicar no botao (Enviar) da pagina (index.jsp).Em seguida criei os objetos Cookie e instancie esses objetos com o nome do campo do  formulário da pagina (índex.jsp)  e com o valor daquele campo, depois adicionei cada objeto Cookie criado no objeto response da Classe HttpServletResponse.Em seguida redirecionei para a pagina (pegarCookies.jsp) que pega os Cookies e os exibe na pagina (pegarCookies.jsp) conforme código fonte exibido acima.
Segue abaixo o código fonte da Servlet.


import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class FactoryCookie
 */
public class CriaCookie extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public CriaCookie() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        // Pego os valores do formularios
        String nome = request.getParameter("nome");
        String telefone = request.getParameter("telefone");
        String endereco = request.getParameter("endereco");
        String bairro = request.getParameter("bairro");
        String cidade = request.getParameter("cidade");

        // Cria  o objeto Cookie
        Cookie cookieNome = new Cookie("Nome", nome);
        Cookie cookieTel = new Cookie("Telefone", telefone);
        Cookie cookieEndereco = new Cookie("Endereco", endereco);// Coloquei endereco ao inves de Endereço, pois Endereço é argumento reservado
        Cookie cookieBairro = new Cookie("Bairro", bairro);
        Cookie cookieCidade = new Cookie("Cidade", cidade);
       
       
        //Adiciona os Cookies no reponse
        response.addCookie(cookieNome);
        response.addCookie(cookieTel);
        response.addCookie(cookieEndereco);
        response.addCookie(cookieBairro);       
        response.addCookie(cookieCidade);
        
       
        //redireciona para a pagina pegarCookies.jap
        response.sendRedirect("pegarCookies.jsp");

    }

}

 
Preenchendo os campos do formulário, assim que você clicar no botão Enviar será redirecionado para a próxima pagina preenchida com as informações do formulário que estavam armazenados no Cookies do seu Browser.Segue abaixo a imagem da primeira pagina após execução do programa.
 
Abaixo segue a imagem da pagina pegarCookies.jsp com as informações que estavam nos Cookies do seu Browser.



 

Fonte:Apostila J2EE – Java Server Page + Servlet  da Escola Impacta Tecnologia.


Um comentário: