Entendendo MVC

Pessoal,

Procurei por vários posts sobre padrões de projeto, DAO, VO, DTO, e vários xO da vida, e
tentando entender exatamente como isso ia ficar dentro do MVC. Gostaria que me corrigissem
o que eu entendi.
Num caso de uso simples, numa webapp, o usuário digitar uma data num campo, se ouver msg com essa dara listar numa página
e caso não haja retorne para uma página de erro qualquer.

  1. submit com a data

  2. Começar a fazer a validação (data inválida)

  3. Dados do banco (usuário, senha, host…)

  4. Abrir conexão com o banco

  5. Montar a consulta

  6. Executar consulta no banco

  7. Aonde guardar a resposta do banco (ResultSet)

  8. Dependendo do resultado da resposta redirecionar o usuário para erro.jsp ou menu.jsp

O item 1 vai ser uma página simples, associada a um controlador.
Tendo uma pequena validação de campo vazio e talvez já uma validação de data invalida.

O item 2 deve ser feita no controlador ou na hora da consulta? Acredito que na hora da consulta (DAO), já que a consulta
talvez seja chamada outro dia quem sabe por outro método.

O item 3 eu acho interessante ficar num arquivo fora dos códigos fontes, caso haja uma migração de BD
ou troca de senha de usuário não tenha que recompilar.
Apesar de ter o nome do usuário e senha num arquivo texto comum ser um pouco exposto.

O item 4 deveria ser uma classe singleton?
Eu já ouvi dizer que numa webapp cada usuário ter um objeto de conexão ser uma coisa boa, mas na minha empresa tem dois
Bancos distintos em máquinas distintas, e acho que não é uma boa.
Qual o melhor maneira de passar o objeto de conexão para os DAOS?

O item 5 e 6 estão dentro do DAO. Eu devo fazer um DAO para cada tabela e para cada join que eu tenho na minha aplicação?

No item 7, eu devo pegar o resultSet, dentro do DAO ainda, e construir um ArrayList de VO, e retornar para quem o chamou.

Dentro do controlador, eu faço a decisão do item 8.

Isso tudo que envolve DAO, VO é considerado que parte do sistema? Meu layer de modelagem?

Caso alguém tenha algo bem simples desse jeito e puder me mostrar, envie para ovictorpinto[arroba]gmail.com

O famigerado modelo mvc … em web o verdadeiro mvc só existe com ajax.
O que é realmente usado em páginas jsp é o mvc2 que consiste e colocar o modelo e o controlado separado do view e só.

O modelo padrão funciona assim : A view apresenta a informação e captura os gestos dos usuário (cliques, pressão de teclas) enviando eventos para o controlador. O controlador decide o que ha a fazer e chama o modelo quando necessário. O modelo pode mudar independentemente do usuário e necesse caso envia um evento ao controlador que atualiza o view.

Aqui que vc descreveu não tem nada a ver com isto.

A página JSP deve ser apenas o HTML normal com codigo que Lê informações de um objecto. Se for usar a JSTL terá que usar beans, se não qq objeto serve. Os objectos são colocados no request / session pelo controlador que é um servlet. Sempre que houver o submit de um form o submit vai para o servlet. O servlet process aa lógica inerente e crias os TO com as respectivas informações. Depois passa a bola ao JSP que se limita a "desenhar as informações de forma agradável ao ser humano"
Isto é o modelo mvc2

Dentro do servlet está a logica interessante. Ele é a porta de entrada do seu sistema. Aqui vc faz o que quiser. Se vc quer ter classes DAO ou qq outras é dentro do servlet que vc vai usá-las.
Trabalhar com o servlet pode ser duro e chato, então normalmente vc cria classe utilitárias para o ajudarem nisso. Básiamene essa é a ideia de frameworks como o Struts ou o VRaptor. Mas em algum ponto vc terá que codificar a logica que vc quer colocar no programa e ai o que é necessário ?

  1. Validação dos dados enviados pelos formulários. Mesmo que vc faça uma validação no javascript sempre faça uma validação antes de usar os dados. Em caso de problema avise o usuário
  2. Tem que usar algum tipo de mecanismo que traduza TO para tabelas e vise-versa. Existem vários por ai como o Hibernate e o recente JPA que é o mais recomendado por simplifica muito.