Uma Servlet x Uma duzia de Servlets

16 respostas
Guilherme_Silveira

Opa, eu tava pensando sobre a influencia de manter uma unica (ou poucas) servlets mestres que dividem seu trabalho e o impacto de manter diferentes servlets cada uma com sua funcao diferente tanto na memoria quanto na velocidade.

Sei que este eh um tema que ja foi discutido em varios lugares mas nunca ouvi ninguem falar algo que grande forca que indique que eh melhor usar um em tal caso e outro em outro…

Guilherme

16 Respostas

Paulo_Silveira

Oi Guilherme

Hoje em dia, todo mundo é a favor de usar uma única servlet. Quando você utiliza uma Servlet, o seu código dentro do método do"Service" fica MUITO procedural, parece script!

Então muita gente usa alguma ferramenta MVC, tipo o STRUTS do apache…

http://jakarta.apache.org/struts

Eu também evito ao máximo ter mais da uma Servlet.

M

Olá Pessoal

Estou começando com Servlets e JSP agora e gostaria de estar por dentro deste assunto “Uma Servlet x Uma duzia de Servlets”, alguém poderia me dar um exemplo utilizando várias Servlets para fazer uma determinada tarefa e o mesmo utilizando uma servlet apenas?

[]'s

Marcos

Paulo_Silveira

Oi Marcos

Seria meio complicado eu te colocar uma aplciacao inteira aqui.

Entao vou fazer a minha propaganda, dizendo porque usar uma unica servlet:

Servlets, para muitos, é o ponto mais forte do J2EE, mais que EJB, devido a sua simplicidade e utilidade. Porem, quando voce faz uma servlet, voce ja deve ter percebido que o codigo da servlet perde bastante no quesito de orientacao a objetos. A coisa fica realmente com uma cara de programa procedural, ou pior, como se fosse um script! Utilizando apenas uma servlet (ou poucas), voce pode fazer com que essa servlet principal seja apenas uma controladora (o C do MVC), e que esta dispare chamadas para outras classes e objetos, afim de manter uma orientacao a objeto e perder essa caracterisitca tao procedural de uma servlet!

Se voce quer dar uma olhada mesmo no codigo de uma aplciacao que usa uma soh servlet, da uma olhada no codigo fonte do GUJ. Ele usa uma ferramenta que chama MAMUTE, que nos fizemso, que eh uma unica servlet e dispara chamadas para outras classes de acordo com a URL dada.

Qualquer cosia, grita!

M

Valeu pela resposta, deixa ver se entendi o que você quis dizer.

Imagine que tenho um vários JSP´s que serviram para mostrar o conteudo de tabelas etc…
Como JSP será a camada de Apresentacao - > M , seria interessante eu a chamar a partir de um controlador -> C no caso um servlet.

Tipos

http://localhost:8080/servlet/mostraRelatorio?url=relatorioProdutos.jsp
http://localhost:8080/servlet/mostraRelatorio?url=relatorioClientes.jsp
http://localhost:8080/servlet/mostraRelatorio?url=relatorioFornecedores.jsp

Lógico que isto tudo poderia ser otimizado, mas basicamente seria isto mesmo?

[]´s

Paulo_Silveira

Sim! Essa é a idéia. Não recomendaria jsp, mas você entendeu o conceito!

M

Valeu pelas respostas,

Muito obrigado.

Leonardo

Pessoal nâo querendo abusar, mas… o que vocês acham de um tutorial ou artigo sobre o MVC ?

Paulo_Silveira

pode ter certeza

isso e Velocity

ja esta em andamento…

Adler_Medrado

Porque nao se recomenda o JSP?
[/quote]

Paulo_Silveira

porque no JSP voce pode fazer, por exemplo, uma conexao ao banco de dados, e ao mesmo tempo colcoar HTML.

em java, e aplciacoes portaveis, voce deve manter uma GRANDE e TOTAL distancia entre os modulos de visualizacao, controle e dados. MVC (model view controller)

Senao, quando um designer abre o seu jsp, ele ve umas coisas MALUCAS, e fica IRADO! Ou ao contrario, o programador que nao sabe NADA de html, abre um java que ta CHEIO de SQL e HTML.

Leonardo

por M podemos entender sempre um banco de dados ?

por V podemos entender JSP, XML, XSLT, HTML, etc… ?

o C podemos entender Servlets e JavaBeans ?

Paulo_Silveira

matou a charada!

Rafael_Steil

Essa URL ajuda tmb:

http://jakarta.apache.org/velocity/casestudy1.html

Rafael

A

Olá, Pessoal!

Estou com uma dúvida na resposta do colega Leonardo. O ‘M’ é uma classe que interagem com o banco de dados ou é o próprio banco de dados?

Ex: Uma tela de cadastro.

  1. View -> Formulário onde o usuário insere os dados para o cadastro.
  2. Controler -> Um Servlet que valida as informações fornecidas pelo usuário.
  3. Model -> Uma classe que interage com o banco de dados?

O raciocínio está correto?

Desde já agradeço!
Abraço a todos!

rodrigoallemand

Está quase correto.
Não encare o “M” como UMA classe, e sim qualquer dominio de dados e negocio do seu sistema.
No seu sistema terá uma hora em que uma regra de negocio deve ser definida, seja ela um simples IF. Isso já faz parte do modelo do seu sistema.

Com isso, para o seu exemplo estar correto, vc deveria escrever:

apalmeira:
Ex: Uma tela de cadastro.

  1. View -> Formulário onde o usuário insere os dados para o cadastro.
  2. Controler -> Um Servlet que valida as informações fornecidas pelo usuário.
  3. Model -> Uma ou mais classes que interagem com o banco de dados ou executem regras de negocio?
L

Paulo Silveira:
Oi Marcos

Seria meio complicado eu te colocar uma aplciacao inteira aqui.

Entao vou fazer a minha propaganda, dizendo porque usar uma unica servlet:

Servlets, para muitos, é o ponto mais forte do J2EE, mais que EJB, devido a sua simplicidade e utilidade. Porem, quando voce faz uma servlet, voce ja deve ter percebido que o codigo da servlet perde bastante no quesito de orientacao a objetos. A coisa fica realmente com uma cara de programa procedural, ou pior, como se fosse um script! Utilizando apenas uma servlet (ou poucas), voce pode fazer com que essa servlet principal seja apenas uma controladora (o C do MVC), e que esta dispare chamadas para outras classes e objetos, afim de manter uma orientacao a objeto e perder essa caracterisitca tao procedural de uma servlet!

Se voce quer dar uma olhada mesmo no codigo de uma aplciacao que usa uma soh servlet, da uma olhada no codigo fonte do GUJ. Ele usa uma ferramenta que chama MAMUTE, que nos fizemso, que eh uma unica servlet e dispara chamadas para outras classes de acordo com a URL dada.

Qualquer cosia, grita!

Olá! Sou novo em Java para Web e no GUJ. Paulo, Fiquei interessado no assunto deste post para aprender mais sobre formas de utilizar uma Servlet, como eu faço para ver esse códiga da Servlet que você citou?

Obrigado!

Criado 21 de agosto de 2002
Ultima resposta 28 de mai. de 2009
Respostas 16
Participantes 9