Feedback Form

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 कुछ इस तरह दिखता है:

ComponentRole
ModelBusiness logic, database operations
ViewJSP pages जो UI दिखाते हैं
ControllerServlets जो 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:

StepComponentDescription
1login.jspUser input लेता है
2LoginControllerRequest process करता है
3Model (DAO)Database से data verify करता है
4ServletResult JSP तक भेजता है

Forward vs Include Difference

MethodUse CaseBehavior
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 में