Usando Cookies em java com Servlet e Spring MVC

Postado em por Wolmir Cezer Garbin em Java | 109 Visualizações
Última atualização em:

Os cookies são arquivos de internet que armazenam temporariamente um determinado valor necessário ao web site em uso.

Geralmente possuem formato de texto e não ocupam praticamente nenhum espaço no disco rígido do computador. Não há limite para quais informações os cookies podem armazenar. Em java temos uma forma prática de criar e obter valores dos cookies, é o que veremos neste artigo.

Criando Cookie no Servlet

Para criar um cookie em um servlet é de certa forma simples.

Indiferente da tecnologia que estiver utilizando sempre vai precisar do request(requisição) e do response(resposta).

O request será utilizado para capturar o valor do cookie e o response para criar o cookie.

Veja o exemplo:

package br.com.receitasdecodigo.servlet;
 
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class ServletDemo extends HttpServlet{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException{
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
        Cookie cookie = new Cookie("cookie-name","cookie-value");
        cookie.setMaxAge(60*60*24); //24 hour
        response.addCookie(cookie);
        pw.println("Cookies created");
    }
}

No web.xml basta apenas configurar o servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>servletdemo</display-name>
     
    <servlet>
        <servlet-name>ServletName</servlet-name>
        <servlet-class>br.com.receitasdecodigo.servlet.ServletDemo</servlet-class>
    </servlet>
     
    <servlet-mapping>
        <servlet-name>ServletName</servlet-name>
        <url-pattern>/servlet-demo</url-pattern>
    </servlet-mapping>
</web-app>

Criando Cookie com Spring MVC

No spring mvc o processo também é tranquilo, considerando que já tenha o projeto configurado, basta apenas acessar um controller na ação que deseja adicionar o cookie criar da seguinte forma.

package br.com.receitasdecodigo.controller;
import java.util.Locale;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
 
@Controller
public class DemoController {
    @RequestMapping(value = "/create-cookie", method = RequestMethod.GET)
    public String createCookie(Model model, HttpServletRequest request, HttpServletResponse response) {
        Cookie cookie = new Cookie("cookie-name","cookie-value");
        cookie.setMaxAge(60*60*24); //24 hour
        response.addCookie(cookie);
        return "redirect:/";
    }
}

Obter os cookie gravados e seu respectivo valor

Assim como é possível gravar cookies no browser do usuário, existe uma forma para obter novamente estes valores para que seja possível realizar uma ação com este valor no backend.

Para acessar o cookie considere utilizar o método tanto para servlet como para o Spring MVC, já que não existe diferença em relação a este tratamento, apenas na forma como obtemos o servlet.

private Cookie getCookie(HttpServletRequest request, String cookieName) {
    Cookie[] cookies = request.getCookies();
    if (cookies != null) {
        for (Cookie cookie : cookies) {
            if (cookie.getName().equals( cookieName ))
            return cookie;
        }
    }
}

No servlet pode obter o valor do Cookie seguinte forma:

public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException{
    Cookie c = getCookie(request, "cookie-name");
    c.getValue();
}

No Spring MVC pode obter o valor do Cookie seguinte forma:

public String getCookie(Model model, HttpServletRequest request, HttpServletResponse response) {
    Cookie c = getCookie(request, "cookie-name");
    c.getValue();
}

É fácil trabalhar com cookie no java, tanto usando Servlet ou utilizando Spring MVC. Ainda existem outros parametros que podem ser informados no momento da criação do cookie, não trataremos isso neste artigo, mas caso surgir alguma dúvida posta nos comentários que te ajudamos a resolver.

Wolmir Cezer Garbin

Wolmir Cezer Garbin


Sou formado em Desenvolvimento de Sistemas para Internet pela faculdade Mater Dei e Pós graduado em Desenvolvimento de sistemas em Java pela UTFPR. Trabalho a mais de 9 anos com desenvolvimento em Java, Android e Web utilizando as principais tecnologias do mercado. Atuo como professor na faculdade Mater Dei, programador na Garbo Software e criador do Receitas de Código.

Ver mais

Posts relacionados


Code Conference

Esta é uma conferência de código realizada na cidade de Pato Branco para dissiminar tendências e informações sobre programação e novas tecnológias

Veja mais sobre o Code Conference

Publique seu post no Receitas de Código

Agora você pode publicar seu post no Receitas de Código e compartilhar seu conhecimento com muitas pessoas!

Quero publicar