setHeader e addHeader

Pessoal,

tenho uma duvida sobre setHeader e addHeader… nao consegui entender direito isso…

eu soh posso adicionar valores padroes ao cabecalho, como por exemplo : setContentType, essas coisas???

eu tentei fazer o seguinte…

        response.setHeader("nome", "fulano");
        System.out.println("Adicionei o nome");
        System.out.println("Olha o cabecalho: " + request.getHeader("nome"));
        response.addHeader("nome", "beltrano");
        System.out.println("olha de novo o cabecalho: "+ request.getHeader("nome"));

mas as duas vezes imprimiu NULL…

se eu setar qualquer valor ele nao aceita? alguem pode me explicar o real sentido do set e addHeader?

Você só pode adicionar/setar os headers que existem, se não existe você “setHeader”, se já existe e você quer adicionar mais um então “addheader”.
Na verdade se voc der o addheader e não existir não tem problema, ele da o set pra você

Rather than setting a header outright, you can add a new header, in case a header with that name already exists. Use addHeader, addDateHeader, and addIntHeader for this. If it really matters to you whether a specific header has already been set, use containsHeader to check.

Aqui tem a tabela com os possíveis:
http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-Response-Headers.html

Se você quiser definir seus próprios parâmetros então tem que usar o setAttribure() ou setParameter()

request.setAttribute("nome", "fulano"); System.out.println(request.getAttribute("nome"));

Você não se confundiu não? No seu código você está fazendo addHeader e setHeader no response e imprimindo getHeader no request. Uma coisa é colocar um header no request, outra é colocar no response, são objetos diferentes.

fkimura, eu postei essa questao porque realmente tenho duvida…tem algum exemplo ai pra eu entender melhor?

Eu só quis dizer que talvez você tenha se confundido, e o código correto seria:

request.setHeader("nome", "fulano");  
System.out.println("Adicionei o nome");  
System.out.println("Olha o cabecalho: " + request.getHeader("nome"));  
request.addHeader("nome", "beltrano");  
System.out.println("olha de novo o cabecalho: "+ request.getHeader("nome")); 

ou

response.setHeader("nome", "fulano");  
System.out.println("Adicionei o nome");  
System.out.println("Olha o cabecalho: " + response.getHeader("nome"));  
response.addHeader("nome", "beltrano");  
System.out.println("olha de novo o cabecalho: "+ response.getHeader("nome")); 

percebeu a diferença? Você estava adicionando no response e olhando no request. Voce deveria adicionar no request e olhar no request ou adicionar no response e olhar no response.
O post do Anderson pode tirar suas dúvidas.