Verificar se o cookie existe

12 respostas
F

Olá,

Por favor, poderia ajudar nesse caso.

No controller do login, estou gravando um determinado cookie

/*como faço a validação do cookie*/
/*só quero gravar o cookie se ele não existir*/

String countryId = Long.toString(country.getId());
			Cookie cookieCountryId = new Cookie("countryId", countryId); 
			cookieCountryId.setMaxAge(60*60*24*360);  
	        response.addCookie(cookieCountryId); 
	        System.out.println("cookieCountryId.getValue(): "+cookieCountryId.getValue());

12 Respostas

H

Oq você procurou no google? Oq vocÊ encontrou que não entendeu?

L
request.getCookies()

ou algo do tipo

F

OK!

fiz isso…

Cookie[] lista = request.getCookies();   

			if(lista.length == 0 ){
				System.out.println("if..............."+lista.length);
				
				String countryId = Long.toString(country.getId());
				Cookie cookieCountryId = new Cookie("countryId", countryId); 
				cookieCountryId.setMaxAge(60*60*24*360);  
		        response.addCookie(cookieCountryId); 
		        System.out.println("cookieCountryId.getValue(): "+cookieCountryId.getValue());
			}else{
				System.out.println("else..............."+lista.length);
			}

…mesmo zerando o cookie do meu pc, e fazendo o primeiro login, sempre lista.length = 2

a primeira vez tinha q ser 0, para gravar

L

não é assim, vc tem que ver se tem o cookie “countryId”… o browser sempre manda cookies… e tem o cookie de sessão do usuário

F

OK!

Como verifico se tem cookie “countryId” ?

L

dica: olhe dentro do Cookie :wink:

F

…não sei se essa é a melhor forma, mas resolveu meu problema

Cookie cookie []=request.getCookies();  
		      Boolean achou=false;  
		      for(int i=0;i<cookie.length;i++){  
		        if(cookie[i].getName().equals("countryId")){  
		          achou=true;  
		        }   
		      }
		      //System.out.println("achou: "+achou);
		      if(achou == false){
		    	//System.out.println("gravou......................... ");
		    	String countryId = Long.toString(country.getId());
		    	cookieController.saveCookie(countryId);
		      }
package com.siter.site.controller;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;

import br.com.caelum.vraptor.Resource;

@Resource
public class CookieController {
	

	private HttpServletResponse response;

	
	public CookieController(HttpServletResponse response) {

		this.response = response;

	}
	
	
	public void saveCookie(String countryId) {
		Cookie cookieCountryId = new Cookie("countryId", countryId); 
		cookieCountryId.setMaxAge(60*60*24*360);  
        response.addCookie(cookieCountryId); 
	}

}
L

é algo nessa linha mesmo… =) não tem como deixar tão melhor

F

Olá,

Por acaso sabe como colocar domínio para os cookies?

É que tenho sub domínios ex:

pt.xxx.com.br
en.xxx.com.br
de.xxx.com.br
it.com.br

At,

L
cookie.setDomain("xxx.com.br")

antes de jogar no response… daí ele vai valer pros subdominios tb

F

OK!

Mas uma coisa.

Quando zero os cookies do pc e compilo o projeto, da error de Caused by: java.lang.NullPointerException

Cookie cookie []=request.getCookies();  
	      Boolean achou=false;  
	      for(int i=0;i<cookie.length;i++){  //nessa linha aparece error Caused by: java.lang.NullPointerException
	        if(cookie[i].getName().equals("countryId")){  
	          achou=true;  
	        }   
	      }

Sabe como posso resolver isso?

At,

L

Você sabe o que significa uma NullPointerException?

isso é java básico, se vc não sabe deveria estudar mais sobre isso, senão você sempre vai travar em coisas básicas.

o que pode estar null nessa linha que vc falou?

Criado 1 de outubro de 2012
Ultima resposta 2 de out. de 2012
Respostas 12
Participantes 3