Servlet (S/N)?

Seria errado criar uma aplicação em JSP sem a utilização de Servlets? Pois pelo que sei uma página JSP após passar por um processo de codificação e compilação se torna um Servlet, tanto é verdade que dá acesso à objetos implícitos como out,request,response…



Essa dúvida surgiu quando questionando meu professor sobre isso ele me disse que eu deveria usar servlets somente em último caso, o que fosse possível fazer com JSP e javaBeans deveria ser feito sem a utilização de Servlets.





Grato

Volnei Granado Munhoz :wink:

Achei meio estranha essa resposta do seu professor.



Afinal, orientação a objetos diz que cada classe deve ter uma funcionalidade bem clara e específica.



Mesmo supondo então que você vai fazer vários JSPs, não faz sentido você obrigar seu application server a ficar traduzindo o JSP para Servlet, que vai inclusive encher de código "desnecessário", ao invés de você mesmo criar seu servlet.



E agora os dois motivos principais de você não ficar utilizando JSP para tudo:



1) Os próprios Code Conventions de JSP falam para você evitar ficar colocando código neles. Veja no link http://developer.java.sun.com/developer/technicalArticles/javaserverpages/code_convention/



2) Um dos design patterns mais importantes e amplamente utilizados do Java é o MVC. Ele diz para você separar a camada de visualização da lógica de negócio. Desta forma, o JSP ficaria apenas com a parte visual, e servlets ficariam com toda a parte de lógica, onde é necessário mais código.

Para fazer uma aplicação padrão de carrinho de compras utilizando JSP precisaria:



Mostrar uma tela de consulta;

Conectar-se ao BD;

Executar a consulta dos produtos;

Armazenar o resultado da consulta;

Mostrar os resultados da consulta;

Armazenar os itens selecionados;



Qual componente seria o mais adequado para cada tarefa? :-[



Grato

Volnei Granado Munhoz :wink:

[ Esta mensagem foi editada por: Volnei em 02-03-2003 02:38 ]

Mostrar uma tela de consulta -> JSP

Conectar-se ao BD -> Servlet

Executar a consulta dos produtos -> Servlet

Armazenar o resultado da consulta -> Bean

Mostrar os resultados da consulta -> JSP

Armazenar os itens selecionados -> bom, o que você está chamando de armazenar? Se for no banco, servlet, caso contrário, bean



Ou seja, qualquer tela, feira em JSP. Qualquer "código", feito em servlet, e qualquer informação que tenha que ser passada de um lugar para o outro, bean

E a validação da entrada de dados (tipo validação de CPF), seria nos Servlets o JavaBeans?



Bani desculpe-me por tanta pergunta que para você pode parecer "básico" na verdade até eu sei que essas não são das mais complicadas mais é que estou começando com JSP e queria ter uma boa base. :-] Muito Obrigado!





Volnei Granado Munhoz :wink:

Tudo que é "processamento" ficaria em classes/servlets.

Pra você ter uma idéia de como funciona a arquitetura MVC, é mais ou menos assim:



Você mostra a página pro usuário em um arquivo JSP (camada view). Aí vamos supor que a página tem um formulário ou algo assim, para ter interação com o usuário. Aí no formulário você coloca na ACTION o endereço do servlet controller e pode também passar alguns parâmetros pela URL tipo informando de qual formulário se trata. Aí esse servlet controller vai pega essas informações e repassar para o local apropriado do model, que pode ser uma classe Java comum ou um servlet. Aí essa classe vai fazer tudo que tem que fazer (validação, persistência de dados, etc) e passar uma resposta de volta para o controller, que por sua vez vai chamar o próximo JSP que será mostrado ao usuário.

Você poderia me indicar algum livro em português que cobre esse assunto que discutimos acima ?



Obrigado mais uma vez



Volnei Granado Munhoz :wink:

Infelizmente o único livro em português que eu li a respeito eu NÃO indico.

Pior livro técnico que eu já li.

Aliás, até já indico para NÃO COMPRAR: é o Tutorial do J2EE.