"HttpSession" porq ocorre isso?

9 respostas
M

Pessoal,

Sendo esse o codigo de uma pagina jsp

<%
      javax.servlet.http.HttpSession sesion=  request.getSession();
      session.setAttribute("teste", "Java<Java");
      out.print(session.getAttribute("teste"));

%>

o que deveria ser apresentado no navegador??

a primeira vista eu diria “Java<Java” mas eu armazenando uma string q continha o sinal “<” eu vi q tudo q vem dpois do sinal é ignorado…alguem sabe pq??

e outro detalhe se tiver um espaco dpois do sinal a session armazena normalmente.

Ate mais!!!

9 Respostas

M

Muito estranho… Bem, primeiramente tu nao precisa recuperar a session, tu já pode usar diretamente o objeto session implicito do Jsp.

M

td bem esse exemplo eu fiz pra ilustrar a duvida…mas o q eh estranho eh nao armazenar o q vem dpois do sinal…

ate mais!

M

8O realmente, fiz o teste aqui e deu a mesma coisa, fiquei surpreso…

R

Olah,

me diz uma coisa… tu debugou pra ver se ele não armazena???

pq pode ser que ele armazene, porem na hora de escrever no html, dê o problema…

e ai ja seria outra historia…

tipo… manda imprimir no servlet mesmo o objeto da session com a string… ai se ele imprimir o valor inteiro, quer dizer que o problema é qd vai escrever no html…

espero ter ajudado…

[]'s

M

mas eh claro…qdo vai imprimir no html ele entende q ‘<’ esta abrindo uma tag…

:mad: :mad: :mad:

Valeu!!!

M

ahhhh claaaro, o Rodrigo tem razão, ele ta sim recuperando o valor “Java<Java”, mas acontece q qnd tu for escrever isso num html ficará algo como:

&lt;html&gt;
  ...
    Java&lt;Java
  ...
&lt;/html&gt;

Ou seja, o browser vai interpretar como uma abertura de tag :slight_smile:

C

Você tem que converter as tags:
> vira &gt e < vira &lt

[]'s
carisio

M

mais especificamente seria “&gt;” e “&lt;”

C

Ah, da uma olhada nessa página ( http://www.icmc.usp.br/ensino/material/html/especiais.html ), tem os caracteres que devem ser codificados para serem exibidos corretamente. Seria ideal se você criasse uma classe HTMLEncode que convertesse a string para ser exibida corretamente na página.

Algumas vezes é normal sua string passar por um pré processamento, imagine um chat, onde vc imprime tudo em um div. É necessário retirar as tags pois poderia avacalhar o chat.

Uma outra alternativa que o pessoal costuma usar é colocar o texto que é impresso dentro de um textarea transparente, aí também não dá problema.

[]'s
carisio

Criado 29 de junho de 2005
Ultima resposta 29 de jun. de 2005
Respostas 9
Participantes 4