diferença entre <%! e <%

7 respostas
J

Li em um livro que eu posso definir métodos e variáveis, dentro de um arquivo jsp, da seguinte forma:

<%! String nome = "Julio" %>

mas qual é a diferença entre declarar uma variável desta forma, e declarar da seguinte forma:

<% String nome = "Julio" %>

há alguma diferença entre as duas formas?

grato

Julio Romano

7 Respostas

S

Simples qundo vc usa o <%! boolean b = true; %>
vc est´declarando fora do metodo _jspService() e quando vc coloca apenas
<% boolean b = true; %> vc coloca dentro do _jspService().

S

Pois é, na primeira forma ela será um atributo do servlet, enquanto na segunda será uma variável local.

J

não entendi mto bem…
estou iniciando em jsp e isto não está mto claro pra mim…
poderiam me dar exemplos de o que usar e quando usar?

grato

Julio Romano

S

Vamos pelo principio que um JSP se torna um Servlet, entaum… no servlet:

public String nomeUsuario = "Shadow";


public void doGet&#40;HttpServletRequest request, HttpServletResponse response&#41;
&#123;

 String nomeUsuario = "Duke";

try
&#123;
response.getWriter&#40;&#41;.println&#40;nomeUsuario + "&lt;br&gt;"&#41;;
response.getWriter&#40;&#41;.println&#40;this.nomeUsuario + "&lt;br&gt;"&#41;;
&#125;
catch&#40;Exception e&#41;
&#123;&#125;&#125;

Agora em um Jsp:

&lt;%! public String nomeUsuario = "Shadow";%&gt;


&lt;% String nomeUsuario = "Duke";%&gt;

&lt;%= this.nomeUsuario %&gt;
&lt;br&gt;
&lt;%= nomeUsuario %&gt;

creio q assim da pra entender mais!!

S

Você não deve usar essa primeira forma.
Servlets não devem ter atributos, pois eles não são instanciados mais de uma vez: são criadas threads.
E as threads compartilham os mesmos atributos. Se uma alterar aquela string, a mudança vai se refletir na outra também.

J

então, se eu definir:

&lt;%! String nome = "Julio"; %&gt;

A variável nome, terá o valor Julio, a todos os usuários que acessarem minha página jsp?

S

Sim.

Criado 15 de julho de 2006
Ultima resposta 16 de jul. de 2006
Respostas 7
Participantes 3