Spring Boot - Trabalhando com Controllers \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 13 Horas 

 51 Min 

 16 Seg 

   Tempo restante da oferta: 13 51 16 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Spring Boot - Trabalhando com Controllers  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

# Spring Boot - Trabalhando com Controllers

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

 [ Cleyson Lima ](https://www.treinaweb.com.br/blog/autor/cleyson-lima) 3 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/spring-framework.png)  

O [Spring Boot](https://www.treinaweb.com.br/blog/o-que-e-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](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/spring-boot.svg)   Curso Spring Framework - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/spring-framework-fundamentos)

## 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](https://www.treinaweb.com.br/blog/o-que-e-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.

```java
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](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/spring-boot.svg)   Curso Spring Framework - Templates com Thymeleaf Conhecer o curso ](https://www.treinaweb.com.br/curso/spring-framewok-templates-com-thymeleaf)

## 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.

```java
@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 “&amp;”.

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

```arduino
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`.

```java
@GetMapping("/buscar")
public String buscarProduto(@RequestParam("q") String query, Model model) {
    // Lógica para buscar produtos com base na consulta (query)
    List 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`**.

[  ![C Avançado](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/c.svg)   Curso C Avançado Conhecer o curso ](https://www.treinaweb.com.br/curso/c-avancado)

## 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.

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/06/sessao-mentoria.jpg) ](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?forma=cartao)

- [ #Spring ](https://www.treinaweb.com.br/blog/tag/spring)
- [ #Spring Boot ](https://www.treinaweb.com.br/blog/tag/spring-boot)
- [ #spring mvc ](https://www.treinaweb.com.br/blog/tag/spring-mvc)
- [ #controllers ](https://www.treinaweb.com.br/blog/tag/controllers)

Autor

 ![Cleyson Lima](//secure.gravatar.com/avatar/db30efb102ffa5d5204cebe12060b111?d=mm)

## 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](https://www.treinaweb.com.br/blog/autor/cleyson-lima)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/10/30133314/swagger-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     7 anos atrás

    ##  [ Documentando uma API Spring Boot com o Swagger ](https://www.treinaweb.com.br/blog/documentando-uma-api-spring-boot-com-o-swagger) 

     Porque documentar uma aplicação API Spring Boot com o Swagger? Quando se trabalha em equipe, uma má documentação pode dificultar (e muito) o trabalho dos demais desenvolvedores. Mas com o Swagger, via SpringFox, é possível documentar uma API Spring Boot com poucas linhas de código.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/spring-framework-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     3 anos atrás

    ##  [ Trabalhando com Scheduled Tasks no Spring Boot ](https://www.treinaweb.com.br/blog/trabalhando-com-scheduled-tasks-no-spring-boot) 

     Descubra o poder das Scheduled Tasks no Spring Boot. Aprenda a criar, configurar e aprimorar tarefas agendadas em Java com o Spring Framework.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/08/DEPLOY-SPRING-DIGITAL-OCEAN-400x280.jpg)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     3 anos atrás

    ##  [ Deploy de uma aplicação Spring Boot na DigitalOcean ](https://www.treinaweb.com.br/blog/deploy-de-uma-aplicacao-spring-boot-na-digitalocean) 

     Aprenda nesse artigo como realizar o Deploy de uma aplicação Spring Boot em uma VPS da DigitalOcena, usando ferramentas como o Nginx.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/10/configurando-ambiente-de-desenvolvimento-spring-boot-no-macos-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     5 anos atrás

    ##  [ Configurando ambiente de desenvolvimento Spring Boot no MacOS ](https://www.treinaweb.com.br/blog/configurando-ambiente-de-desenvolvimento-spring-boot-no-macos) 

     Aprenda como instalar e configurar o ambiente de desenvolvimento Spring Boot no MacOS

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/10/configurando-ambiente-de-desenvolvimento-spring-boot-no-linux-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     5 anos atrás

    ##  [ Configurando ambiente de desenvolvimento Spring Boot no Linux ](https://www.treinaweb.com.br/blog/configurando-ambiente-de-desenvolvimento-spring-boot-no-linux) 

     Aprenda como instalar e configurar o ambiente de desenvolvimento Spring Boot no Linux

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/09/configurando-ambiente-de-desenvolvimento-spring-boot-no-windows-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     5 anos atrás

    ##  [ Configurando ambiente de desenvolvimento Spring Boot no Windows ](https://www.treinaweb.com.br/blog/configurando-ambiente-de-desenvolvimento-spring-boot-no-windows) 

     Aprenda como instalar e configurar o ambiente de desenvolvimento Spring Boot no Windows

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/08/deploy-de-uma-aplicacao-spring-boot-no-heroku-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     5 anos atrás

    ##  [ Deploy de uma aplicação Spring Boot no Heroku ](https://www.treinaweb.com.br/blog/deploy-de-uma-aplicacao-spring-boot-no-heroku) 

     Neste artigo veremos como podemos realizar o deploy de uma aplicação Spring Boot na nuvem com o Heroku.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/02/o-que-e-o-spring-boot-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     6 anos atrás

    ##  [ O que é o Spring Boot? ](https://www.treinaweb.com.br/blog/o-que-e-o-spring-boot) 

     Neste artigo veremos o que é o Spring Boot e como ele pode nos auxiliar no desenvolvimento de aplicações Spring.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/07/05112250/SPRING-BOOT-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     7 anos atrás

    ##  [ Criando uma API REST com o Spring Boot ](https://www.treinaweb.com.br/blog/criando-uma-api-rest-com-o-spring-boot) 

     Todos os passos da criação de uma API REST com o framework Spring Boot do Java, no Visual Studio Code.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/03/THYMELEAF-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     6 anos atrás

    ##  [ Thymeleaf, veja como enviar e exibir dados em seus templates ](https://www.treinaweb.com.br/blog/thymeleaf-veja-como-enviar-e-exibir-dados-em-seus-templates) 

     Neste artigo veremos como enviar informações de aplicação Spring Boot para serem exibidas em templates do Thyemeleaf.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/01/criando-uma-api-com-spring-data-jpa-e-spring-web-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     5 anos atrás

    ##  [ Criando uma API com Spring Data JPA e Spring Web ](https://www.treinaweb.com.br/blog/criando-uma-api-com-spring-data-jpa-e-spring-web) 

     Neste artigo vamos aprender como criar uma API com persistência de dados utilizando o Spring Web MVC e o Spring Data JPA.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/spring-framework-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     6 anos atrás

    ##  [ O que é Spring Framework? ](https://www.treinaweb.com.br/blog/o-que-e-spring-framework) 

     Confira neste artigo o Spring framework: um ecossistema de desenvolvimento para facilitar a criação de aplicações Java.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **13h 51min 16s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
