DEV Community

Cover image for Template Processing in Spring Boot: Under the Hood – A Deep Dive! πŸš€
Harshit Singh
Harshit Singh

Posted on

Template Processing in Spring Boot: Under the Hood – A Deep Dive! πŸš€

1. Introduction – Kya Hai Ye Template Processing? πŸ€” Jab bhi hum Spring Boot ke saath koi web application banate hain, toh humein pages (views) render karne hote hain. Ab pages sirf backend ka response nahi hote, balki unme HTML, CSS, JS hota hai jo frontend ko properly render karta hai.
Spring Boot alag-alag templating engines ka support deta hai jaise:

  • JSP (Java Server Pages) – Purana lekin solid πŸ’ͺ
  • Thymeleaf – Modern, readable aur kaafi flexible πŸ†
  • FreeMarker, Velocity – Kabhi use karne ka mann kare toh yeh bhi options hain! πŸ˜† 2. Processing Flow – Pura Magic Kaisa Hota Hai? 🎩✨ Jab bhi hum kisi controller se koi page return karte hain (return "index";), toh uske peeche ek template processing cycle chalu ho jaati hai.Step 1: Request Aati Hai πŸš€ User ne browser se koi URL request ki jaise:
<http://localhost:8080/home>

Enter fullscreen mode Exit fullscreen mode

Spring Boot backend pe ek controller milega jo isko handle karega:

@Controller
public class HomeController {

    @GetMapping("/home")
    public String homePage(Model model) {
        model.addAttribute("message", "Welcome to Spring Boot Templates!");
        return "index"; // Yeh template engine ko dikhayega
    }
}

Enter fullscreen mode Exit fullscreen mode

Step 2: Resolver Decide Karega Kaunsa Template Load Karna Hai πŸ› οΈ Spring Boot ek ViewResolver ka use karta hai jo decide karta hai ki ye index file kaha se laani hai.

  • Agar JSP use ho raha hai, toh InternalResourceViewResolver active hoga.
  • Agar Thymeleaf use ho raha hai, toh ThymeleafViewResolver active hoga.

Example:

# Agar Thymeleaf use kar rahe hain
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

# Agar JSP use kar rahe hain
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

Enter fullscreen mode Exit fullscreen mode

Step 3: Template Engine File Read Karega πŸ“–

  • Resolver jo bhi index naam ka template file milega, usko uthayega.
  • Usme jo ${message} aisa kuch likha hoga, usko backend se jo model mein message attribute bheja gaya hai usse replace karega.
  • Phir final processed HTML browser ko bhej diya jayega. Example Thymeleaf index.html file:
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Thymeleaf Example</title>
</head>
<body>
    <h1>Message from Backend: <span th:text="${message}"></span></h1>
</body>
</html>

Enter fullscreen mode Exit fullscreen mode

3. Internal Classes & Annotations – Spring Boot Ka Backend Parda Kholte Hain πŸ” Spring Boot ke andar kaafi classes, annotations aur resolvers kaam karte hain. Chaliye inke kaam samajhte hain:

🟒 @Controller vs @RestController – Difference?**

  • @Controller : View return karta hai (JSP/Thymeleaf)
  • @RestController : Directly JSON return karta hai.

Example:

@Controller
public class PageController {
    @GetMapping("/about")
    public String aboutPage() {
        return "about"; // This will look for "about.html" in templates
    }
}

Enter fullscreen mode Exit fullscreen mode

🟒 ViewResolver Classes – Internal Processing** Spring Boot ViewResolvers ko use karke pata lagata hai ki konse template engine se kaam karna hai:

Template Engine View Resolver Class
JSP InternalResourceViewResolver
Thymeleaf ThymeleafViewResolver
FreeMarker FreeMarkerViewResolver
Velocity VelocityViewResolver

Example: Internal Resource View Resolver (JSP ke liye)

@Bean
public InternalResourceViewResolver jspViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/views/");
    resolver.setSuffix(".jsp");
    return resolver;
}

Enter fullscreen mode Exit fullscreen mode

Example: Thymeleaf View Resolver

@Bean
public SpringResourceTemplateResolver templateResolver() {
    SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
    resolver.setPrefix("classpath:/templates/");
    resolver.setSuffix(".html");
    resolver.setTemplateMode("HTML");
    return resolver;
}

Enter fullscreen mode Exit fullscreen mode

4. Thymeleaf ke Extra Superpowers πŸ¦Έβ€β™‚οΈ Thymeleaf JSP se better hai kyunki:
βœ… Pure HTML Compatible – JSP ki tarah compilation nahi chahiye.
βœ… Dynamic Expressions – {} aur th:text jese expressions support karta hai.
βœ… Fragment Support – Reusable templates ka support hai.
Example of Thymeleaf Expressions:

<p th:text="${user.name}">Default User</p>
<p th:if="${age > 18}">You are an adult</p>
<p th:each="name : ${names}">Hello, <span th:text="${name}"></span></p>

Enter fullscreen mode Exit fullscreen mode

5. Static Files (CSS, JS) ka Handling – Yeh Kaise Load Hota Hai? 🎨 Spring Boot ka static content src/main/resources/static/** folder se load hota hai.
Example:

  • CSS : src/main/resources/static/css/style.css
  • JS : src/main/resources/static/js/script.js

HTML file mein:

<link rel="stylesheet" href="/css/style.css">
<script src="/js/script.js"></script>

Enter fullscreen mode Exit fullscreen mode

Spring Boot yeh files bina kisi processing ke serve kar deta hai.6. Can We Customize Template Processing? – Bilkul! πŸ”§ Yes! Hum Custom View Resolvers bhi bana sakte hain. Example:

@Bean
public ViewResolver customViewResolver() {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/custom-views/");
    resolver.setSuffix(".html");
    return resolver;
}

Enter fullscreen mode Exit fullscreen mode

Ab Spring Boot templates src/main/resources/custom-views/ se load karega! πŸ”₯


7. Kab Kaunsa Template Engine Use Karein? πŸ€·β€β™‚οΈ | Scenario | Best Template Engine |
| --- | --- |
| Simple HTML Rendering | Thymeleaf |
| Server-Side Dynamic Pages (Legacy Apps) | JSP |
| JSON APIs (No UI) | RestController + Frontend (React, Angular) |
| High Performance UI Rendering | React, Vue, Angular (No templates needed) |


8. Conclusion – Kya Seekha Aaj? πŸŽ“

  • Spring Boot alag-alag template engines ko process karta hai.
  • ViewResolvers templates ko locate karte hain.
  • Thymeleaf best option hai JSP se zyada readable hone ke wajah se.
  • Static files Static files /static/ folder se serve hoti hain.
  • Hum Custom Resolvers bana sakte hain apne specific use-cases ke liye.

Agar aapko ye guide samajh aayi ho ya nahi bhi aayi , toh bhi ek bar code likh ke dekhna . Samajh aajayegi! πŸ˜†
Happy Coding! πŸš€

Top comments (1)

Collapse
 
wittedtech-by-harshit profile image
Harshit Singh

Do drop your views. :>