JSP é: Java + HTML ou HTML + Java?

Boa tarde pessoal. Tenho um professor na faculdade que é meio estranho, dá a aula de qualquer jeito, é inseguro e tal… hoje ele argumentou uma coisa que gerou assunto por uns belos minutos entre ele e eu. Em uma questão da prova a alternativa correta era: “JSP é HTML com trechos Java e Servlet é Java com trechos HTML”

Isso não está estranho? Se JSP é compilado então não é HTML com Java pois HTML não compila. Além do mais, se todo JSP vira uma Servlet no final das contas, como pode a “Servlet ser Java com HTML” e o JSP ser “HTML com Java”

Obrigado pela atenção.

Na minha visão é um Servlet que tem saída HTML. =D

Estranho ta, mas acho que voce levou muito ao pé da letra, considerando compilação e tudo mais.

Acho que ele simplesmente quis dizer que, la nos teus JSP, tu tem HTML, e pode inserir código java(NÃO FAÇA ISTO!!!), enquanto que nas classes Servlet, tu tem código java, mas insere HTML(out.write("bla )

Questãozinha de prova bem tosca, mas acho que era este o entendimento dele!

jsp não é html, porém em um arquivo .JSP, apenas o que esta dentro das tags <% %> é interpretado->executado como java, o resto (sendo html, ou texto puro) é escrito na tela

ja em um servlet, trechos html não podem ficar soltos no arquivo como no jsp, os mesmos são impressos

da pra se anular essa questão fazendo com que o jsp escreva todo o código html via <% %> arquivo da mesma maneira que o servlet faz, dando print no html

vamos dizer que seu professor explicou de uma forma pra ficar facil de entender, mas se levar ao pé da letra esta errada…

Você fez uma ótima pergunta, e eu mesmo nunca parei para pensar nisso.
A parte teórica eu domino pouco, mas o ensinamento que tive foi:

JSP é uma página HTML que vira um Servlet. Um JSP É UM servlet.
Servlet é uma classe Java comum, com o detalhe que herda HttpServlet e processa requisições HTTP.

Posso estar enganado, estou aberto ao debate e gostaria de receber correções da galera mais experiente.

[quote=marcelogro]Você fez uma ótima pergunta, e eu mesmo nunca parei para pensar nisso.
A parte teórica eu domino pouco, mas o ensinamento que tive foi:

JSP é uma página HTML que vira um Servlet. Um JSP É UM servlet.
Servlet é uma classe Java comum, com o detalhe que herda HttpServlet e processa requisições HTTP.

Posso estar enganado, estou aberto ao debate e gostaria de receber correções da galera mais experiente.[/quote]

Concordo com o ‘marcelogro’.
Pelo o que sei, JSP é um Servlet com saída HTML.

É o que eu sempre achei. A alternativa que dei na prova foi “JSP é Java com trechos HTML”. Dentre todas as alternativas escrotas e a polêmica questão, coloquei essa. Por mais que os “trechos HTML” sejam muito maior que a quantidade de Java no JSP, ainda é o Java que manipula o HTML e não o contrário… sei lá… estou aberto a discussões pra aprender melhor isso…

Acredito que, nessa questão, ele quis dar mais ênfase à forma como você escreve e não à natureza do componente, uma vez que é tudo servlet.

Numa página JSP, normalmente se escreve em HTML, usando tags personalizadas, scriptlets e chamadas a beans. Ou seja:é mais fácil escrever em HTML que em Java.

Quando você escreve um servlet, acontece o contrário. Você escreve muito mais fácil Java do que o HTML. Para gerar saída HTML, tem que usar objetos de stream… Enfim, é um porre escrever HTML a partir de Servlets.

Dessa forma, a comunidade passou a trabalhar exatamente como ele descreveu:

JSP = HTML + algum Java.
Servlet = Java + algum HTML.

Claro que você pode fugir do padrão, escrever servlet que só faz escrever HTML e nenhum outro processamento, ou usar um scriptlet gigante que toma o arquivo JSP inteiro. Mas aí, em algum destes casos, você é um “fidumaégua disgraçado” e merece sofrer um vudu reverso. rssrrssrsrr