E aê pessoal. Esse é o meu 1º tópico no PL. E lá vai dúvidas e mais dúvidas.
Sei que existem vários tópicos sobre este assnto, mas nenhum me satisfez.
Estou desenvolvendo uma aplicação média em JSP e quero fazer uma coisa mais profissional. Optei por utilizar o padrão MVC.
Vejam se estou pensando corretamente:
Tenho as minhas classes de acesso a dados que fazem updates, inserts e selects. (Model)
Os meus beans que fazem o controle. Ex: Funcionário, Cliente e etc.
Onde passo como parâmetro para o Model esses objetos para o tratamento dos dados.(Control)
E a minha View que é o JSP que tem o papel de preencher os atributos dos beans.(View)
Eu estou pensando corretamente?
Se sim, como que eu faço a comunicação entre a camada Model e a Control? Eu crio métodos nos Beans que acessam o Model?
Se eu estiver errado, o que tenho que fazer para ficar certo?
Antecipadamente o meu muito obrigado a todos,
João Mariano.
Bom, espero poder ajudar um pouco…
A minha visão de MVC é que ele é um pattern para camada de apresentação…
no seu lugar eu trocaria os beans (que são utilizados na camada de négocio) para servlets… pois acredito eu, serem os mais indicados para usar com MVC…
agora, se tu pretende utilizar os beans para controle, então, sugiro que além de MVC tu procure utlizar tb outros pattern com por exemplo session façade que sao usados na comunicaçao com os sessions beans…
Estou começando também com aplicações java na web usando MVC, e estou usando Bens na camada de negócio. Mas ja vi e ouvi várias pessoas falando que na camada de negócio o mais indicado é servlet.
Alguém poderia me dizer quais as vantagens e desvantagens de se usar Servlets ou Beans na camada de negócio :?: :?: :?:
bem-vindo ao Portal Java Felipe… olha, na camada de negócios mesmo, ali no core da coisa, é beans direto… o único lugar q eu ponho servlet é no controlador, ou num portlet (coisa q eu to começando a estudar )
Bem, nos meu humildes trabalhos, o que tenho é o seguinte:
jsp -> são o front end para o cliente. Todas as páginas que o cliente enxerga são jsp. É a parte view
servlets -> fazem a ponte entre o jsp e o bean. Não são responsáveis por acesso a banco nem nada… Simplesmente “vêm” a opção do usuário, fazem o tratamento que acham que tem que ser feito (inclui-se setar atributos e parâmetros de sessões, instanciar os beans e fazer o seu tratamento, etc) e fazem o redirecionamento para outra página jsp. É a parte controler.
Beans -> Aqui entra a regra de negócios e o acesso a banco de dados. É a parte model.
Correção são muito bem vindas, já que também sou discípulo dos grandes mestres…
Bem no meu ponto de vista vc esta fazendo a coisa correta, utilzando um JSP na camada de apresentação, um JavaBeans na logica de negocio, para a camada de intergração faz um seguinte utiliza uma DAO para acessar a base
Mas se vc estiver afim de utilizar algo mais professional, faz o seguine utiliza JSP e JavaBeans, so que o Java Beans vc faz referencia a um Session Bean e este session se comunica com um Entity beans, mas ja que estamos falando de patterns utiliza Session Façade, VO…
utilizo apenas um servlet para controlar todo o fluxo?? ou construo um servlet para cada jsp?? :???:
o controlador vai receber uma mensagem do jsp do tipo (“inserir valor x na tabela y”), e a partir disso o controlador vai invocar o DAO com seu respectivo método para fazer este insert?? seria isso?? seria um servlet gigantesco entaum, no qual eu faria variaos if’s e switch’s para determinar qual a classe e metodo a ser invocado?? :???:
se o objetivo for uma consulta, o controlador recebera um parametro “consulta”, e chamar o metodo da classe DAO que retorna o resultado da consulta (HashMap, ArrayList, etc), correto?? Entaum esse DAO vai retornar esse resultado pro controlador ou diretamente pro jsp??
Podem parecer perguntas idiotas, mas gostaria de alguma ajuda quanto a isso. Já obtive muitas informações aqui no PJ. :razz:
[quote=“Battousay”]quanto a isso surgem-me alguma dúvidas:
utilizo apenas um servlet para controlar todo o fluxo?? ou construo um servlet para cada jsp?? :???:
o controlador vai receber uma mensagem do jsp do tipo (“inserir valor x na tabela y”), e a partir disso o controlador vai invocar o DAO com seu respectivo método para fazer este insert?? seria isso?? seria um servlet gigantesco entaum, no qual eu faria variaos if’s e switch’s para determinar qual a classe e metodo a ser invocado?? :???:
se o objetivo for uma consulta, o controlador recebera um parametro “consulta”, e chamar o metodo da classe DAO que retorna o resultado da consulta (HashMap, ArrayList, etc), correto?? Entaum esse DAO vai retornar esse resultado pro controlador ou diretamente pro jsp??
Podem parecer perguntas idiotas, mas gostaria de alguma ajuda quanto a isso. Já obtive muitas informações aqui no PJ. :razz:[/quote]
um servlet só vai servir de controlador
Não, o controlador vai delegar o comando pra outra classe, uma de negócio por exemplo, q ai sim vai fazer uma chamada ao dao pra enviar o x/y pro banco
tudo correto, só uma coisa, vai retornar direto pro jsp
deixa ver se entendi… no controlador eu vou receber o request do jsp, validar esses dados e mandar pra uma classe que executa a insercao/delecao/consulta. Lá no meu servlet terei que verificar qual a tabela e qual o comando a ser executado, pra a partir daí invocar minha classe de regra de negocios?? Essa classe de regra de negocios e o dao naum seriam a mesma coisa?? vejo exemplos em que o dao eh uma interface implementada por outra que executa as regras…
se possivel, poderias me citar um exemplo de como isso acontece??
o controlador não tem nd a ver com a tabela ou o teu sql… o DAO é quem faz isso… o controlador só recebe as solicitações e delega o trabalho pras tuas classes de regras de negocio… e é a classe de regra de negocio q vai chamar o dao… bah, uma dica, Core J2EE Patterns, ótimo livro…