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.... ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.... ?
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
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.