Feedback Form

GET Method in Servlet: Handling Query Parameters Securely

GET Method in Servlet: Handling Query Parameters Securely

GET Method in Servlet क्या है?

Servlet में GET Method का use तब किया जाता है जब client (जैसे web browser) server से data को request करता है। इस method में data URL के साथ भेजा जाता है, यानी parameters query string के रूप में attach होते हैं।

उदाहरण के लिए, जब आप किसी form को submit करते हैं और URL ऐसा दिखता है:

https://example.com/login?username=Ravi&password=1234

यहाँ username और password query parameters कहलाते हैं, और इन्हें Servlet में handle करने के लिए GET Method का use किया जाता है।

GET Method कैसे काम करता है?

जब user browser से request भेजता है, तो browser data को URL में जोड़कर server को भेज देता है। Server पर Servlet उस request को receive करता है और doGet() method call होता है।

Servlet container (जैसे Tomcat) automatically request को Servlet तक पहुँचाता है और query parameters को extract करने के लिए developer HttpServletRequest object का use करता है।

Example: GET Method Servlet Code

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class GetExampleServlet extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    String name = request.getParameter("name");
    String city = request.getParameter("city");

    out.println("<h3>Welcome, " + name + " from " + city + "!</h3>");
  }
}

ऊपर दिए गए code में request.getParameter() method का use query parameters को read करने के लिए किया गया है।

Query Parameters क्या होते हैं?

Query Parameters वो data होते हैं जो URL के साथ भेजे जाते हैं। हर parameter एक key-value pair के रूप में होता है।

उदाहरण:

https://example.com/register?name=Ravi&email=ravi@gmail.com

यहाँ:

  • name → Ravi
  • email → ravi@gmail.com

Query Parameters की Limitations

  • GET method में data URL में दिखाई देता है, इसलिए यह secure नहीं होता।
  • URL length की limit होती है (लगभग 2048 characters)।
  • Sensitive information जैसे password, PIN आदि GET में नहीं भेजनी चाहिए।

Query Parameters को Securely Handle करना क्यों ज़रूरी है?

क्योंकि GET method data को URL में openly भेजता है, इसलिए hackers के लिए इस data को देखना या manipulate करना आसान होता है। अगर आप login credentials या tokens को GET से भेजेंगे, तो यह URL log, browser history, या server logs में save हो सकते हैं।

Secure Handling के लिए Best Practices

  • 1. Sensitive Data के लिए POST Method use करें: Password, Token, या Financial Data को कभी भी GET से न भेजें।
  • 2. Input Validation करें: User से आने वाले हर parameter को validate करें कि वो expected format में है या नहीं।
  • 3. URL Encoding: Special characters (जैसे &, %, +) को URLEncoder class से encode करें।
  • 4. XSS (Cross-Site Scripting) Protection: Output data को HTML escape करें ताकि scripts execute न हों।
  • 5. HTTPS का use करें: हमेशा secure connection पर data transmit करें ताकि data encrypt हो जाए।

Example: URL Encoding in Java

import java.net.URLEncoder;
String encodedParam = URLEncoder.encode("Ravi@123", "UTF-8");
System.out.println(encodedParam);

यह code string को encode करता है ताकि URL में किसी तरह का security issue न आए।

GET और POST Method में Difference

Point GET Method POST Method
Data Visibility URL में दिखाई देता है Body में भेजा जाता है (hidden)
Security कम secure ज़्यादा secure
Use Case Data fetch करना Data submit या modify करना
Data Size Limit 2048 characters तक No practical limit
Idempotent हाँ, GET repeat करने पर result same रहता है नहीं, POST result change कर सकता है

Multiple Query Parameters Handle करना

कई बार form से multiple parameters आते हैं, जैसे checkbox या dropdown list। इन्हें handle करने के लिए getParameterValues() का use होता है।

Example: Multiple Parameters Handling

String[] courses = request.getParameterValues("course");
for(String c : courses) {
  out.println("<p>Selected Course: " + c + "</p>");
}

यह code form में selected सभी courses को print करता है।

GET Method Servlet Lifecycle में कैसे फिट होता है?

Servlet container हर request पर service() method call करता है, जो request type देखकर doGet() या doPost() को invoke करता है।

Flow of Execution

  • User request भेजता है (via browser form or link)
  • Servlet container request को identify करता है
  • doGet() method execute होता है
  • Response generate होकर client को वापस जाता है

GET Method के Advantages

  • Simple और easy to use है।
  • Bookmark या share करने योग्य URL बनाता है।
  • Caching possible है — जिससे speed बढ़ती है।

GET Method के Disadvantages

  • Data URL में दिखाई देता है, इसलिए secure नहीं है।
  • URL length limit होती है।
  • Server logs में data store हो सकता है।

Secure GET Request Example

मान लीजिए आपको किसी user की profile details GET method से fetch करनी हैं — बिना किसी security issue के।

@WebServlet("/profile")
public class ProfileServlet extends HttpServlet {
  protected void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
    res.setContentType("text/html");
    PrintWriter out = res.getWriter();

    String userId = req.getParameter("id");
    if(userId != null && userId.matches("[0-9]+")) {
      // Validate userId and fetch from DB
      out.println("<h3>Profile Loaded Successfully</h3>");
    } else {
      out.println("<h3>Invalid Request!</h3>");
    }
  }
}

ऊपर code में parameter को regex से validate किया गया है ताकि injection या tampering न हो।

Real World Use Cases

  • Search Engines: जैसे Google — जहाँ query parameters search terms को represent करते हैं।
  • Filtering Pages: जैसे e-commerce sites में category filters।
  • Pagination: Page number या limit parameter के रूप में भेजे जाते हैं।
  • Tracking: Analytics और referral parameters भी GET से जाते हैं।

Important Classes और Methods

Class / Method Description
HttpServletRequest Client request data को represent करता है
getParameter(String name) Single parameter का value लौटाता है
getParameterValues(String name) Multiple values (arrays) के लिए use होता है
getQueryString() पूरी query string को return करता है

Summary Notes

  • GET Method server से data fetch करने के लिए use होता है।
  • Data URL के साथ attach होकर जाता है (query parameters)।
  • Sensitive data को GET से नहीं भेजना चाहिए।
  • Secure handling के लिए validation, encoding और HTTPS जरूरी है।
  • doGet() method हर GET request पर Servlet में call होता है।
  • GET idempotent होता है — repeat करने पर result नहीं बदलता।