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.
Curso Spring Framework - Fundamentos
Conhecer o cursoO 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”.
Curso Spring Framework - Templates com Thymeleaf
Conhecer o cursoSistema 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
.
Curso Spring Framework - Tópicos Avançados
Conhecer o cursoConclusã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.