Category: Spring Updated: Jul 20, 2026

Spring Boot Controller Tutorial: Complete Guide to Controllers in Java for Beginners

Spring Boot Controller Tutorial for Beginners
Spring Boot Controller Tutorial for Beginners

Let us learn through a conversation between a teacher and a student

Student

"What is a controller in Spring Boot and how does it handle web requests from users?"

Teacher

"A controller is a core component in Spring MVC that receives incoming HTTP requests, processes business logic, and returns the appropriate response or view."

Student

"Can we see how to write a simple controller and map different URLs step by step?"

Teacher

"Let us explore the complete guide to Spring Boot controllers for Java beginners!"

1. Introduction to Spring Boot Controllers and Architecture

Key Takeaway: Let's dive into the core concepts of "1. Introduction to Spring Boot Controllers and Architecture" cleanly and effectively.

1. Introduction to Spring Boot Controllers and Architecture
1. Introduction to Spring Boot Controllers and Architecture

Welcome to the complete Java tutorial for beginners on understanding controllers in Spring Boot. When building modern web applications using Java programming basics and Spring MVC, the controller acts as the central traffic controller of your application. It listens for client requests coming from a browser or API client, coordinates with services and data layers, and sends back the final output.

In this comprehensive guide, you will learn how to set up traditional web controllers with @Controller and RESTful API endpoints using @RestController. We will use clean Java code and proper structural organization to ensure an intuitive learning experience for every Java beginner.

Spring Boot makes registering controllers remarkably easy through component scanning and annotations. By mastering these foundational concepts, you will understand how URL paths map directly to specific executable methods in your Java source code.

2. Creating a Basic Web Controller with @Controller

2. Creating a Basic Web Controller with @Controller
2. Creating a Basic Web Controller with @Controller

The standard @Controller annotation is typically used when you want to return HTML view templates using template engines like Thymeleaf. When a client sends an HTTP GET request to a mapped URL, the controller method handles the request and returns a string representing the view name.

Below is a simple Java class demonstrating how to define a basic web controller in Spring Boot.


@org.springframework.stereotype.Controller
public class HomeController {

    @org.springframework.web.bind.annotation.GetMapping("/")
    public String homePage(org.springframework.ui.Model model) {
        model.addAttribute("message", "Welcome to Spring Boot!");
        return "index";
    }
}

The @GetMapping annotation binds HTTP GET requests sent to the root path / to the homePage method.

3. Building RESTful APIs with @RestController

3. Building RESTful APIs with @RestController
3. Building RESTful APIs with @RestController

If you are building an application that delivers data as JSON or plain text rather than rendering HTML pages, you should use @RestController. This specialized annotation combines @Controller and @ResponseBody, meaning every method automatically serializes return values directly into the HTTP response body.

Study the following Java code snippet to see how a REST controller handles data endpoints cleanly.


@org.springframework.web.bind.annotation.RestController
public class ApiController {

    @org.springframework.web.bind.annotation.GetMapping("/api/status")
    public String checkStatus() {
        return "Application is running smoothly!";
    }
}

Clients accessing /api/status will immediately receive the raw text response without needing an accompanying HTML file.

4. Mapping URL Paths and HTTP Methods with RequestMapping

Key Takeaway: Let's dive into the core concepts of "4. Mapping URL Paths and HTTP Methods with RequestMapping" cleanly and effectively.

4. Mapping URL Paths and HTTP Methods with RequestMapping
4. Mapping URL Paths and HTTP Methods with RequestMapping

To avoid repeating common URL segments across multiple methods, you can apply @RequestMapping at the class level. This establishes a base path for all handler methods inside that particular controller class.

The code example below illustrates how to organize endpoints using a shared base path configuration.


@org.springframework.web.bind.annotation.RestController
@org.springframework.web.bind.annotation.RequestMapping("/users")
public class UserController {

    @org.springframework.web.bind.annotation.GetMapping("/info")
    public String getUserInfo() {
        return "Fetching user details...";
    }

    @org.springframework.web.bind.annotation.PostMapping("/create")
    public String createUser() {
        return "New user created successfully!";
    }
}

Grouping related paths like /users/info and /users/create keeps your controller code clean, modular, and easy to maintain.

5. Capturing Path Variables and Request Parameters

5. Capturing Path Variables and Request Parameters
5. Capturing Path Variables and Request Parameters

Controllers often need to extract dynamic values from incoming requests. You can capture variables embedded directly in the URL path using @PathVariable or query parameters using @RequestParam.

Review the following controller method implementation to see how path variables are read from a dynamic request URI.


@org.springframework.web.bind.annotation.RestController
public class ItemController {

    @org.springframework.web.bind.annotation.GetMapping("/items/{id}")
    public String getItemById(@org.springframework.web.bind.annotation.PathVariable("id") Long id) {
        return "Requested item identifier: " + id;
    }
}

Using path variables enables REST endpoints to target specific database records based on clean URL structures.

6. Handling POST Requests and Form Submissions

6. Handling POST Requests and Form Submissions
6. Handling POST Requests and Form Submissions

In addition to fetching data via GET, controllers process data sent from clients via HTTP POST requests. By combining @PostMapping and @RequestBody or @ModelAttribute, you can accept payloads or form submissions safely.

Here is an example of a controller method configured to handle an incoming POST request containing user message text.


@org.springframework.web.bind.annotation.RestController
public class MessageController {

    @org.springframework.web.bind.annotation.PostMapping("/message")
    public String receiveMessage(@org.springframework.web.bind.annotation.RequestBody String content) {
        return "Received content: " + content;
    }
}

Spring automatically converts JSON payloads into corresponding Java representations or handles data binding transparently.

7. Troubleshooting Controller Mapping and Routing Errors

Key Takeaway: Let's dive into the core concepts of "7. Troubleshooting Controller Mapping and Routing Errors" cleanly and effectively.

7. Troubleshooting Controller Mapping and Routing Errors
7. Troubleshooting Controller Mapping and Routing Errors

Beginners frequently encounter errors such as 404 Not Found or 405 Method Not Allowed exceptions when configuring controllers. A 404 error usually indicates that the URL path specified in your browser does not match any active mapping annotation in your project code.

Double-checking annotation spellings, ensuring your controller class is located in a package scanned by Spring Boot configuration, and verifying HTTP methods match between client and server solves most routing bugs immediately.

Maintaining clear endpoint definitions ensures that your web application maintains high structural integrity and predictable behavior during execution.

Summary

Summary
Summary

In this comprehensive tutorial, we explored the core fundamentals of Spring Boot controllers, covering everything from traditional HTML view rendering using standard web annotations to lightweight RESTful API development. We examined how request mapping handles incoming browser traffic, how path variables and request parameters capture dynamic inputs, and how POST payloads are securely processed in the backend. By mastering these architectural concepts and applying clean coding patterns, Java beginners can efficiently build and troubleshoot robust web applications.


public class ControllerSummaryHelper {
    public static void displayCompletionMessage() {
        System.out.println("Spring Boot Controller architecture successfully reviewed!");
    }
}
Review Conversation Between the Teacher and Student

Student

"Now I have a clear understanding of how @Controller handles views and @RestController manages direct JSON data responses!"

Teacher

"Well said! Recognizing the distinction between rendering templates and returning raw payloads is a major milestone for any developer."

Student

"And grouping endpoints with class-level request mapping keeps everything organized and maintainable."

Teacher

"Exactly right. Continue practicing these foundational principles, and you will develop professional applications with total confidence!"

Back to Category
Latest Articles
New1
Spring
Spring Boot and Java Version Compatibility Guide: Spring Boot 3.5 3.4 3.3 with Java 21 and Java 17
New
New2
Spring
Complete Guide to Spring Data JPA getReferenceById for Beginners
New
New3
Spring
Complete Guide to Spring Data JPA findAll for Beginners
New
New4
Spring
Spring Data JPA JpaRepository Tutorial for Beginners: Complete Guide to Database Access in Spring Boot
New
Popular Articles
No.1
Java&Spring記事人気No1
Spring
Complete Guide to Spring @GeneratedValue for Java Beginners – Understand Primary Key Generation in JPA
No.2
Java&Spring記事人気No2
Spring
Complete Guide to Spring @PreAuthorize for Java Beginners – Secure Your Application with Method-Level Security
No.3
Java&Spring記事人気No3
Spring
Spring Boot GetMapping Tutorial: Complete Guide to GetMapping in Java for Beginners
No.4
Java&Spring記事人気No4
Spring
Spring @Valid Annotation Tutorial for Beginners: Input Validation in Spring Boot
No.5
Java&Spring記事人気No5
Spring
Mastering the @PostMapping Annotation in Java Spring: A Complete Guide for Beginners
No.6
Java&Spring記事人気No6
Spring
Spring Data JPA Like Query Guide: findByFirstnameLike for Java Beginners
No.7
Java&Spring記事人気No7
Spring
Mastering the @Id Annotation in Java Spring: A Complete Guide for Beginners
No.8
Java&Spring記事人気No8
Spring
Spring Data JPA Query Tutorial for Beginners: How to Search Data in Spring Boot