MVC (3 camdas)

15 respostas
R

Olá Pessoal,

Estou desenvolvendo uma aplicação, mas que é feito tudo no JSP (operações no BD, etc… ), tudo não mão.
Então queria ver se conseguia transformá-la para 3 camadas.
Li materiais de MVC, mas não estou conseguindo entender muito bem, mas o princípio básico do MVC - Model (Regras de Negócio) Viewer (cliente, a tela, JSP, HTML, etc) Controller (esse cara responde a solicitações do cliente e manda solicitações ao Model), acho que é isso.
Então gostaria de saber se alguém tem um exemplo prático ou um tutorial que faça um acesso a banco de dados e etc.
Espero ter explicado corretamente minha necessidade.
Sem mais, agradeço desde já a colaboração de todos.

Rodrigo Sehnem.

15 Respostas

allanmarques

Seguinte,
a Caelum tem uma apostila muito boa do curso FJ-21 (Web). Tem um capítulo que
fala sobre MVC e há a construção de um framework MVC desde o começo (muito
bom p/ fins didáticos).
Sugiro que vc baixe essa apostila no site da Caelum e dê uma lida.

[]s

R

olá allanmarques,

vou baixar e estudar ela…

muito obrigado

Weslley

[color=blue]O Desenvolvimento em camadas é o mais utilizado atualmente, o objetivo disso é separar as regras de negócio (costumo chamar de lógica da aplicação) das demais partes, como persistencia de objetos e a parte visual…

A Vantagem disso é a facilidade na manutenção futura, caso ocorra…

o allanmarque lhe deu uma boa indicação…

Não sei se lhe abri um pouco mais a mente…

Sds…

M a t t o s
[/color]

pcalcado

MVC != Camadas

http://www.fragmental.com.br/wiki/index.php?title=MVC_e_Camadas

vinny767

Basicamente, o JSP não deve ter código java.
A Lógica do seu negocio deve estar em classes java. O JSP serve apenas como uma camada de visualizacao.

Imagina, por exemplo, um webdesigner mexendo nos seus JSP cheios de código Java que ele nao entende?
Imagina se você precisar alterar uma querie, por exemplo, sem saber onde ela está? Você terá que abrir cada JSP, cada classe para tentar localiza-la.

Cara, a arquitetura mvc é fundamental. Procure estuda-la, pois não é dificil. E isso lhe abrirá muitas portas, pode ter certeza.

tnaires

Isso não é pré-requisito. No MVC, a view deve conter apenas lógica de apresentação, seja via código Java, tags ou o que for. Não adianta nada sua JSP estar cheia de tags que executam lógica de negócio. Nesse caso, temos um exemplo de JSPs sem código Java, mas que não é MVC.

vinny767

Realmente não é um pre-requisito, mas sim uma boa pratica.
Você está certissimo. Mas existem formas muito mais elegantes de se evitar o código java na camada View, como por exemplo, usando JSTL e EL.
Quando eu digo que não se deve usar, é em relação a uma boa pratica. Eu mesmo, algumas vezes, uso pequenos trechos de codigo nas minhas JSPs.
Mas não acho muito legal. Assim como não é muito legal colocar codigo Html dentro de Servlets. Mas poder, pode!

Abraço

Weslley

[color=blue]Eu uso codigo na JSP pra fazer validações um poucos mais específicas, que são relacionadas a camada de visualização…

Não vejo perda de conceito…

Sds…[/color]

vinny767

Você pode implementar até um CRUD em seus JSPs…
O que estou tentando dizer, é que existe um conceito de boa pratica de programação que diz que deve ser evitado esse tipo de coisa.
Em relação a validação, você pode usar também. Eu, particularmente, custumo usar javascript para validar os dados da minha JSP (validações simples do lado do cliente).
Já para testar as regras de negocio, utilizo classes Java mesmo (padrão Data Logic Object, ou DLO).
Essa validação também poderia ser feita dentro do JSP, porem, não é recomendável (devido a dificuldade de manutencao do codigo, reutilização, dentre outros aspectos).
Cada um pode fazer o que quiser. Eu não acho uma boa pratica voce entupuir a sua visualizacao com codigo, mas cada um faz do jeito que quiser.

tnaires

É sim altamente recomendável que sua lógica de apresentação seja implementada via tags. Mas eu nunca trabalhei em um projeto onde houvesse de fato divisão entre desenvolvedores e webdesigners ( não estou dizendo que não há a tal divisão ), pois sempre os desenvolvedores acabavam desenvolvendo as páginas e o design.

Então, se na view só tiver lógica de apresentação pra mim, tá valendo. Mesmo que seja em código Java. Até porque, se sua JSP tiver realmente apenas apresentação, o código não é tão extenso.

vinny767

Isso aí…

R

Galera é o seguinte…

Gostei muito da dica de vocês, mas tenho uma dúvida final sobre o nosso fórum.

A minha dúvida é de como eu faço para mostrar meu resultado da minha classe.

Exemplo

1 - Cliente preenche o formulário e salva;

2 - Controller encaminha para meu DAO e retorna um objeto da minha classe;

3 - Como meu controller monta minha página JSP novamente?
PrintWriter out = response.getWriter();

out.println("<html>");
out.println("Monta JSP");
out.println("</html>");

É mais ou menos isso???

Só falta esse passo para entendimento geral…

Não sei se fi claro o bastante, mas se necessário reporto meu código para que vocês entendam melhor.

valeu pessoal

Rodrigo Sehnem.

tnaires

rsehnem:
A minha dúvida é de como eu faço para mostrar meu resultado da minha classe.

Exemplo

1 - Cliente preenche o formulário e salva;

2 - Controller encaminha para meu DAO e retorna um objeto da minha classe;

3 - Como meu controller monta minha página JSP novamente?
PrintWriter out = response.getWriter();

out.println("<html>");
out.println("Monta JSP");
out.println("</html>");

É mais ou menos isso???

Só falta esse passo para entendimento geral…


Não não não… Nunca construa sua página no servlet.

Seu servlet, após realizar os procedimentos necessários, deve redirecionar a requisição para uma página JSP ( por exemplo, uma tela mostrando os dados cadastrados ou de erro caso uma exceção tenha ocorrido ). Nesse caso, use o método forward ou o sendRedirect. Aqui tem um resumo da diferença entre os dois:

http://www.javapractices.com/topic/TopicAction.do?Id=181

R

Entendi, mas tenho meu JSP e os dados estão na minha classe “pessoa”, como faço um sendRedirect(“pagina.jsp”) passando os dados da classe pessoa?
No JSP vou usar a classe pessoa?
Como monto meu JSP com a classe pessoa?
Vou ter que usar código java para montar ele?

Rodrigo Sehnem

tnaires

São muitos conceitos para explicar em poucos posts. Recomendo que você dê uma estudada no modelo MVC usando Servlets + JSP. O site Coreservlets tem dois links com materiais excelentes sobre o tema:

:arrow: Servlets + JSP - iniciante e intermediário

:arrow: Servlets + JSP - avançado

Abraços

Criado 1 de agosto de 2008
Ultima resposta 6 de ago. de 2008
Respostas 15
Participantes 6