Usando Cookies em java com Servlet e Spring MVC

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

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Java - TUTORIAL

Última atualização em: | 9579 Visualizações

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.


Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Apoiadores

Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!