[resolvido]duvida sobre delimitador <% %> em JSP

2 respostas
E

Pessoal estou aprendendo sobre JSP, e em um dos exercicios aqui apareceu esse codigo:

<table border="1"> 
 <tr> 
  <th>Termo da Progressão aritmetica</th> 
  <th>Valor</th> 
 </tr> 
 <% 
  for (int i = 1; i <= 10; i++) { 
   int valorDoTermo = primeiroTermo + (i - 1) * razao; 
 %> 
 <tr> 
  <td align="center"><%=i%>º</td> 
  <td align="center"><%=valorDoTermo%></td> 
 </tr> 
 <% 
  } 
 %> 
</table>

Fiquei intrigado, como é possivel não fechar as chaves do for, deixando o loop pela metade voltando, as tags HTML e depois abrindo novamente o <% para terminar aquele mesmo loop? :shock:

Achava que quando vc compila uma pagina JSP, ele separava os codigos Java entre as tags <% %> como "mini-scripts" inteiros e apenas guardava o resultado

Poderiam dizer porque isso compila?

Obrigado!

Editado: Obrigado romarcio e InsaneChess!

2 Respostas

romarcio

Dentro das <% %> só deve ir código Java, por isso no for fica estranho, mas é assim mesmo. Esse código se chama scriplets. Se você ja mexeu com PHP é meio parecido com quando você trabalha com HTML e PHP no mesmo código, chamado de “código espaguete”.

InsaneChess

Funciona mais ou menos assim…

Todo JSP é um Servlet. Blz? (Isso não sou eu que falo, é pela própria especificação)
Sim, é verdade…o container transforma ele em um servlet dinamicamente…em uma classe…com o conteúdo da página dentro do método get ou post, não lembro qual dos dois agora.

Se você começar a pensar assim, vai entender que quando ele transforma o conteudo da página para o conteudo do método, vai ficar algo assim:

get(HttpServletRequest request, HttpServletResponse response){ html= writer.out("<html>") html= writer.out("hello world") Seu primeiro scriplet = foreach(blablabla) { html= writer.out("mais html") html= writer.out("mais ainda") Seu próximo comando scriplet = } html= writer.out("</html>") }

Obs: O código dentro do get de um JSP contém bem mais coisa…porém espero que você tenha intendido a idéia do que o container “Faz por trás” pra você.
Sabe aqueles parametros que você inicia no web.xml para um servlet?
Você também pode iniciar do mesmo modo para JSP’s já que eles também são servlets…

Espero que tenha intendido.
E uma dica, aprenda para emergência e depois esqueça…por boas práticas não se deve mais usar Scriplets a um bom tempo.
Aprenda a usar para conhecimento também express language e tag libs junto ao jsp.
Depois se possível procure trabalhar com jsf 2.0 e xhtmls ao invés de jsp com scriptlets. blz?

Abraço!

Criado 6 de fevereiro de 2012
Ultima resposta 6 de fev. de 2012
Respostas 2
Participantes 3