Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida

Gostaria de uma explicação melhor sobre oque é Controller essas camadas do MVC e o por que os pacotes tem essa nomenclatura br.com.etc.... ?

2 respostas

Bom dia Rodolfo. No caso dos pacotes é apenas padrão, você poderia colocar qualquer nome que funcionaria desde que o spring fizesse o scan.

Assim, quando fazemos uma requisição, esta bate na servlet do spring e ele redireciona para suas Controllers, então essas classes tem seus métodos mapeados para receberem requisição do cliente

solução!

O MVC é um modelo de projeto que não é utilizado somente pelo Java, mas por todas as outras linguages web. Esse modelo propoe nós dividirmos nossa arquitetura em camadas, separando a responsabilidade de cada um, facilitando a reescrita e tornando a manutenção mais fácil.

M - Model: Nossa camada responsável por receber as informações que são enviadas para o Controller e processar através das nossas regras de negócios, cálculos, validações e acesso a banco de dados.

V - View: É a camada responsável por apresentar os resultados, ou seja, a página que o usuário nosso irá visualizar. Na camada de View existem diversos frameworks e bibliotecas em Java que podem nos auxiliar, como Thymeleaf, JSP, Velocity entre outros.

C - Controller: Camada responsável por receber as requisições e fazer os dispatches, que são os redirecionamentos para as classes responsáveis para executar a determinada tarefa. No Controller recebemos informações enviadas pela camada de View, como um preenchimento de um formulário, então redireciona para a determinada classe ou método responsável por processar essa informação e após isso, o Controller também é responsável por responder ao cliente, como retornando uma página JSP.

O mapeamento feito para uma requisição chegue em nossa camada de Controller sempre será através de uma URL, por exemplo, no Spring:

@RequestMapping("/listaTarefas")
public String lista(Model model) {
    JdbcTarefaDao dao = new JdbcTarefaDao();
    List<Tarefa> tarefas = dao.lista();
    model.addAttribute("tarefas", tarefas);
    return "tarefa/lista";
}

Nesse trecho de código do Spring podemos ver as três camadas. Primeiro a camada de Controller, onde o usuário irá digitar no browser /listaTarefas e será mapeado para este método, depois será chamado o nosso DAO, camada Model, para recuperar as nossas tarefas cadastradas e passar para a nossa camada View, onde irá exibir para o usuário.

Em relação aos pacotes, por boa prática sempre definimos o nome do pacote o domínio invertido do nosso sistema, por exemplo, vou fazer um sistema da Caelum, então meu pacote base será br.com.caelum, o domínio ao contrário. Os pacotes não são nada mais do que estruturas para separar o nosso código para uma melhor visualização e manutenção e a cada "." que colocamos estamos entrando em uma estrutura de diretório nova.

Espero ter ajudado.