Controller: Servlets Handling Requests and Dispatching to JSP
Controller: Servlets Handling Requests and Dispatching to JSP
Controller in MVC Architecture
जब हम JSP और Servlet के साथ काम करते हैं, तो एक बहुत important concept आता है — Controller. Controller वो part होता है जो user से आने वाले request को handle करता है और फिर सही page या resource तक भेजता है। यह पूरे MVC (Model-View-Controller) pattern का core हिस्सा है।
Simple words में कहें तो Controller एक bridge
What is Servlet Controller?
Servlet ही Controller की तरह act करता है। जब user किसी web page से form submit करता है या कोई link click करता है, तो वो request Servlet के पास जाती है। Servlet उस request को पढ़ता है, जरूरत के हिसाब से data process करता है (कभी Model के साथ), और फिर result को किसी JSP page या HTML page पर forward कर देता है।
यानी Controller का काम है:
- User request को receive करना
- Business logic या Model को call करना
- Result को JSP (View) तक भेजना
Example Flow:
मान लीजिए user ने login.jsp से username और password भरा।
- Form का data Servlet को भेजा जाएगा (Controller को)
- Servlet data check करेगा (Model को call करके)
- Result के अनुसार user को success.jsp या error.jsp पर भेज देगा
Request Handling in Servlet
हर Servlet class HttpServlet को extend करती है और दो important methods use करती है:
doGet()— जब user GET request भेजता हैdoPost()— जब user POST request भेजता है
ये methods automatically call होती हैं जब user server को request भेजता है।
Example Code:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LoginController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String user = request.getParameter("username");
String pass = request.getParameter("password");
if(user.equals("admin") && pass.equals("1234")) {
RequestDispatcher rd = request.getRequestDispatcher("success.jsp");
rd.forward(request, response);
} else {
RequestDispatcher rd = request.getRequestDispatcher("error.jsp");
rd.forward(request, response);
}
}
}
ऊपर के code में Servlet request लेता है, username-password check करता है और फिर user को सही JSP page पर भेजता है। यही Controller की core responsibility है।
Using RequestDispatcher for JSP Navigation
RequestDispatcher एक ऐसा object है जो Servlet से JSP या दूसरे Servlet को control भेजने में help करता है। इसके दो main methods होते हैं:
forward(request, response)— Request को दूसरे resource तक भेजता है।include(request, response)— दूसरे resource की output को current response में जोड़ देता है।
Example:
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
rd.forward(request, response);
यह code request को welcome.jsp तक भेजता है, जहाँ final output generate होती है।
Roles and Responsibilities of Controller
Controller web application में एक traffic police की तरह होता है — हर request को सही जगह भेजता है। इसके main roles हैं:
- Client से आने वाले request को receive करना
- Request parameters को read करना
- Business logic को call करना (Model के methods)
- Result data को JSP तक भेजना
- Flow को manage करना (success या failure condition के हिसाब से)
Servlet Controller Architecture
एक proper MVC web application में structure कुछ इस तरह दिखता है:
| Component | Role |
|---|---|
| Model | Business logic, database operations |
| View | JSP pages जो UI दिखाते हैं |
| Controller | Servlets जो request को process और redirect करते हैं |
Data Flow:
- User → JSP (View)
- JSP → Servlet (Controller)
- Servlet → Model (Business logic)
- Model → Servlet → JSP (View update)
Handling Request Parameters and Attributes
Controller user के input को process करने के लिए parameters और attributes use करता है।
1. Reading Request Parameters:
String name = request.getParameter("username");
2. Setting Attributes for JSP:
request.setAttribute("msg", "Welcome " + name);
3. Forwarding Data to JSP:
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
rd.forward(request, response);
अब JSP page में हम data access कर सकते हैं:
Hello, <%= request.getAttribute("msg") %>
Session Management in Controller
User की information को multiple pages पर maintain करने के लिए HttpSession का use किया जाता है।
Example:
HttpSession session = request.getSession();
session.setAttribute("user", username);
अब किसी भी JSP में session data access कर सकते हैं:
<%= session.getAttribute("user") %>
Best Practices for Writing Controller
- हर Servlet का specific purpose होना चाहिए
- Business logic को Model classes में रखें, Servlet में नहीं
- Exception handling के लिए try-catch blocks लगाएँ
- Hard-coded values avoid करें
- Redirect और forward का सही use करें
Example of Redirect:
response.sendRedirect("login.jsp");
Redirect तब use करते हैं जब हम client को नई request भेजने को कहते हैं, जबकि forward server-side transfer होता है।
Advantages of Using Servlet as Controller
- Code separation — Presentation (JSP) और Logic (Servlet) अलग रहते हैं
- Maintainability बढ़ती है
- Reusability — एक ही Servlet multiple JSPs को handle कर सकता है
- Scalability — Application large होने पर भी manage करना आसान रहता है
Error Handling in Controller
Error handling से user experience बेहतर होता है। Servlet में try-catch block या custom error page define करके errors manage कर सकते हैं।
Example:
try {
// logic here
} catch(Exception e) {
RequestDispatcher rd = request.getRequestDispatcher("error.jsp");
rd.forward(request, response);
}
Real-Life Example: Login System Flow
एक simple Login System का flow इस तरह होता है:
- login.jsp → user data लेता है
- LoginController Servlet → data check करता है
- Database (Model) → user validate करता है
- Servlet → result को JSP तक भेजता है
Table Representation:
| Step | Component | Description |
|---|---|---|
| 1 | login.jsp | User input लेता है |
| 2 | LoginController | Request process करता है |
| 3 | Model (DAO) | Database से data verify करता है |
| 4 | Servlet | Result JSP तक भेजता है |
Forward vs Include Difference
| Method | Use Case | Behavior |
|---|---|---|
| forward() | एक page से दूसरे page पर request भेजना | Client को नया request नहीं भेजना पड़ता |
| include() | दूसरे page की output को current response में जोड़ना | दोनों outputs merge होती हैं |
Important Points for Exams
- Controller हमेशा Servlet होता है जो request को process करता है
- RequestDispatcher का use JSP navigation के लिए होता है
doGet()औरdoPost()core request methods हैं- Session Management user state maintain करने में मदद करता है
- MVC में Controller central role निभाता है
Short Notes (Exam Use)
- Controller: Servlet जो request को handle करता है और response decide करता है
- Forward: Server-side request transfer
- Redirect: Client-side new request
- Session: Multiple pages के बीच data maintain करता है
- Best Practice: Logic को Model में रखें, Presentation को JSP में