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>
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
}
}
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
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>
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
}
}
π’ 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;
}
Example: Thymeleaf View Resolver
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setPrefix("classpath:/templates/");
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML");
return resolver;
}
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>
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>
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;
}
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)
Do drop your views. :>