Desenvolvimento Back-end Java

Spring Boot - Trabalhando com Controllers

Veja nesse artigo como trabalhar com controllers em uma aplicação Spring Web MVC com Spring Boot.

há 7 meses 2 semanas

Formação Desenvolvedor Java
Conheça a formação em detalhes

O Spring Boot é uma poderosa framework de desenvolvimento que facilita a criação de aplicativos Java de maneira rápida e eficiente. Quando se trata de desenvolvimento web, o Spring Boot se destaca ainda mais quando combinado com o Spring Web MVC. Neste artigo, vamos explorar como trabalhar com controllers e o sistema de rotas do Spring.

Spring Framework - Fundamentos
Curso Spring Framework - Fundamentos
Conhecer o curso

O que são Controllers?

Um controller é um componente fundamental em muitos frameworks de desenvolvimento web, incluindo o Spring MVC (Model-View-Controller), que ajuda a gerenciar o fluxo de uma aplicação web e a lidar com solicitações HTTP vindas dos clientes. A principal responsabilidade de um controller é receber as solicitações do cliente, processá-las e determinar qual ação deve ser tomada em resposta a essas solicitações.

Os controllers são parte essencial da arquitetura MVC, que separa a lógica de negócios (Model), a apresentação (View) e o controle de fluxo (Controller) em uma aplicação web. Isso permite uma melhor organização do código e a reutilização de componentes, tornando o desenvolvimento mais eficiente e manutenível.

Em resumo, um controller em um framework web é responsável por receber, processar e responder a solicitações HTTP, desempenhando um papel crucial na interação entre o cliente e a aplicação web.

Criando um Controller no Spring

Em uma aplicação Spring Boot, para criar um controller, você deve anotar uma classe com @Controller ou @RestController, dependendo se deseja retornar uma visualização HTML ou dados em formato JSON.

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/exemplo")
public class ExemploController {
    @GetMapping("/pagina")
    public String paginaExemplo() {
        return "pagina";
    }
}

Neste exemplo, ExemploController é um controller que responde a requisições em /exemplo/pagina e retorna a visualização Thymeleaf chamada “pagina”.

Spring Framework - Templates com Thymeleaf
Curso Spring Framework - Templates com Thymeleaf
Conhecer o curso

Sistema de rotas do Spring

O sistema de rotas no Spring Web MVC é baseado em anotações, como @RequestMapping, @GetMapping, @PostMapping, entre outras. Essas anotações permitem definir qual método do controller será chamado quando uma URL específica for acessada.

  • @RequestMapping é uma anotação de nível de classe que define o prefixo de URL para todas as rotas de um controller.
  • @GetMapping define uma rota que responde a requisições HTTP GET.
  • @PostMapping define uma rota que responde a requisições HTTP POST.

Trabalhando com variáveis de rota

O sistema de rotas do Spring permite definirmos variáveis que podem ser capturadas pelos controllers.

@GetMapping("/produto/{id}")
public String detalhesDoProduto(@PathVariable Long id, Model model) {
    // Lógica para buscar informações do produto com o ID fornecido
    Produto produto = produtoService.findById(id);
    
    // Passa os dados do produto para a visualização
    model.addAttribute("produto", produto);
    
    return "detalhesProduto";
}

Neste exemplo, {id} é uma variável de caminho que será extraída da URL. O valor será passado como um parâmetro para o método detalhesDoProduto.

Para definir que uma rota terá uma variável, nos colocamos o nome da variável entre chaves e para que o valor dessa variável de rota seja passada para um parâmetro do método basta colocar o parâmetro com o mesmo nome da variável e anotado com @PathVariable.

Trabalhando com query strings

Query strings são parte fundamental de uma URL (Uniform Resource Locator) que permite a passagem de informações ou parâmetros de uma página web para o servidor. Elas são compostas por pares de chave-valor e são usadas principalmente para transmitir dados do cliente para o servidor em solicitações HTTP GET. Query strings aparecem na parte da URL após o caractere “?” e podem conter vários pares de chave-valor, separados por “&”.

Aqui está um exemplo de uma URL com uma query string:

https://www.exemplo.com/pagina?nome=Joao&sobrenome=Silva&idade=30

Em aplicações Spring podemos obter os valores passados por query string de maneira similar as variáveis de rota, basta que o método receba um parâmetro e esse parâmetro deve ser anotado com RequestParam.

@GetMapping("/buscar")
public String buscarProduto(@RequestParam("q") String query, Model model) {
    // Lógica para buscar produtos com base na consulta (query)
    List<Produto> produtos = produtoService.findByQuery(query);
    
    // Passa os resultados da pesquisa para a visualização
    model.addAttribute("produtos", produtos);
    
    return "resultadoBusca";
}

Neste caso, o parâmetro q na URL será mapeado para o parâmetro query do método buscarProduto.

Spring Framework - Tópicos Avançados
Curso Spring Framework - Tópicos Avançados
Conhecer o curso

Conclusão

Em resumo, dominar o uso de controllers e o sistema de rotas no Spring Boot é fundamental para desenvolvedores web que desejam criar aplicativos Java eficientes e bem organizados. Essas ferramentas oferecem uma base sólida para criar aplicativos web robustos e escaláveis, facilitando o gerenciamento das solicitações dos clientes e a entrega de conteúdo dinâmico aos usuários.

Autor(a) do artigo

Cleyson Lima
Cleyson Lima

Professor, programador, fã de One Piece e finge saber cozinhar. Cleyson é graduando em Licenciatura em Informática pelo IFPI - Campus Teresina Zona Sul, nos anos de 2019 e 2020 esteve envolvido em vários projetos coordenados pela secretaria municipal de educação da cidade de Teresina, onde o foco era introduzir alunos da rede pública no mundo da programação e robótica. Hoje é instrutor dos cursos de Spring na TreinaWeb, mas diz que seu coração sempre pertencerá ao Python.

Todos os artigos

Artigos relacionados Ver todos