Feedback Form

Forward vs Include: and Actions

Forward vs Include: <jsp:forward> and <jsp:include> Actions

अगर आप JSP (Java Server Pages) पढ़ रहे हैं, तो आपको दो बहुत important actions के बारे में ज़रूर पता होना चाहिए — <jsp:forward> और <jsp:include>। दोनों का use web application में page navigation और content reusability के लिए होता है, लेकिन दोनों में फर्क काफी important है। चलिए इन्हें step by step बहुत आसान भाषा में समझते हैं।

Introduction to JSP Actions

JSP actions ऐसे special tags होते हैं जो server side पर dynamic behavior perform करते हैं। यानी ये compile time पर नहीं बल्कि run time पर काम करते हैं। JSP actions Java classes या servlets से interact करते हैं ताकि request, response, session और data flow को manage किया जा सके।

इनमें से दो commonly used actions हैं:

  • <jsp:forward> – किसी request को दूसरे resource (JSP, servlet, या HTML page) पर forward करने के लिए।
  • <jsp:include> – किसी JSP या HTML content को current page में include करने के लिए।

1. What is <jsp:forward>?

<jsp:forward> action का use तब किया जाता है जब हमें current JSP page से control किसी दूसरे resource को देना हो। इसका मतलब है कि जैसे ही forward tag execute होता है, current page का execution वहीं रुक जाता है और request अगले resource को भेज दी जाती है।

Syntax:

<jsp:forward page="relativeURL" />

Example:

<jsp:forward page="nextpage.jsp" />

ऊपर दिए गए example में, जैसे ही server को <jsp:forward> tag मिलेगा, वो तुरंत current page का processing रोक देगा और request nextpage.jsp को भेज देगा।

Working of <jsp:forward>:

  • Client से request आती है।
  • Server current JSP को process करता है।
  • जैसे ही <jsp:forward> tag आता है, server current output buffer को clear कर देता है।
  • फिर request अगले JSP या Servlet को transfer कर दी जाती है।
  • Client को केवल final forwarded page का response मिलता है।

Key Points:

  • Forward केवल once execute होता है।
  • Current page का output user को नहीं दिखता।
  • Forwarded page ही final response भेजता है।
  • यह server-side redirection होता है (client को URL change नहीं दिखता)।

Real-life Example:

मान लीजिए आप login.jsp पर user credentials verify कर रहे हैं। अगर login successful होता है, तो आप request को home.jsp पर forward कर सकते हैं:

<% if(isValidUser){ %>
  <jsp:forward page="home.jsp" />
<% } %>

इस तरह, जैसे ही login valid होगा, control सीधे home.jsp पर चला जाएगा।

2. What is <jsp:include>?

<jsp:include> action का use तब किया जाता है जब आपको किसी JSP या HTML file की content को current page में runtime पर लाना हो। यानी ये dynamic include करता है — जब page request किया जाता है तब content जोड़ा जाता है।

Syntax:

<jsp:include page="filename.jsp" />

Example:

<jsp:include page="header.jsp" />
<h2>Welcome to Home Page</h2>
<jsp:include page="footer.jsp" />

ऊपर दिए गए example में, header.jsp और footer.jsp की content dynamically include होकर main page में जुड़ जाएगी। इससे code reusability बढ़ती है और maintenance आसान हो जाता है।

Working of <jsp:include>:

  • जब page execute होता है, server include tag पर जाता है।
  • Server included page को process करता है।
  • उसका output current page में merge हो जाता है।
  • फिर final output user को दिखाया जाता है।

Key Points:

  • Include action runtime पर content जोड़ता है।
  • Included page का output main JSP के साथ merge होता है।
  • यह dynamic inclusion करता है (static नहीं)।
  • यह server-side पर execute होता है।

Real-life Example:

मान लीजिए आपकी website में हर page के top पर same navigation bar है। तो हर बार वही code लिखने की बजाय आप उसे एक अलग JSP (जैसे header.jsp) में रख सकते हैं और include कर सकते हैं।

<jsp:include page="header.jsp" />

अब अगर navigation में कोई बदलाव करना हो, तो केवल header.jsp में change करना पड़ेगा — हर page अपने आप update हो जाएगा।

3. Difference Between <jsp:forward> and <jsp:include>

अब सबसे important part आता है — इन दोनों में actual difference क्या है। नीचे दी गई table में आप इनके बीच clear difference देख सकते हैं:

Basis <jsp:forward> <jsp:include>
Purpose Request को दूसरे resource पर भेजता है। दूसरे resource का output current page में जोड़ता है।
Execution Time Forward होने पर current page का execution रुक जाता है। Include होने पर current page execute होता रहता है।
Output केवल forwarded page का output user को दिखता है। Included page और main page दोनों का output दिखता है।
Control Flow Control पूरी तरह अगले page पर चला जाता है। Control include के बाद current page पर वापस आ जाता है।
Use Case Page redirection या logical transfer के लिए। Reusable content जैसे header, footer, menu के लिए।
Buffer Behavior Forward करने से पहले buffer clear होता है। Include में buffer clear नहीं होता।
Type Request forwarding (server-side redirection) Runtime inclusion (content merge)

4. Use Cases of Forward and Include

Where to Use <jsp:forward>:

  • जब आपको request को logically दूसरे page पर भेजना हो।
  • Login validation के बाद home page दिखाना हो।
  • Error handling या redirection के लिए।

Where to Use <jsp:include>:

  • Common layout जैसे header, footer, sidebar में।
  • Dynamic content जोड़ने के लिए।
  • Website के repeated sections को reuse करने के लिए।

5. Technical Details and Performance

जब server <jsp:forward> को execute करता है, तो वह response भेजने से पहले current buffer को clear करता है। इसलिए अगर आपने पहले कुछ output generate किया है, वो user को नहीं दिखेगा। इस वजह से forward हमेशा page के beginning के पास use करना बेहतर होता है।

वहीं <jsp:include> runtime पर output को current buffer में जोड़ देता है, इसलिए performance पर बहुत असर नहीं पड़ता, लेकिन अगर included page heavy है, तो response time बढ़ सकता है।

Performance Tips:

  • Static content के लिए include directives (<%@ include file="..." %>) use करें।
  • Dynamic content के लिए <jsp:include> use करें।
  • Forward का use केवल redirection या control transfer के लिए करें।

6. Practical Example: Comparing Both

Using <jsp:forward>:

<!-- file: main.jsp -->
<h2>Main Page</h2>
<jsp:forward page="next.jsp" />
<p>This text will not display.</p>

Using <jsp:include>:

<!-- file: main.jsp -->
<h2>Main Page</h2>
<jsp:include page="next.jsp" />
<p>This text will also display.</p>

ऊपर वाले example से साफ़ समझ आता है कि forward में control पूरी तरह अगले page पर चला जाता है, जबकि include में control वापस current page पर लौट आता है।

7. Summary Table (Quick Revision)

Feature <jsp:forward> <jsp:include>
Nature Transfer Control Include Content
Output Merge No Yes
Buffer Clear Yes No
Control Return No Yes
Execution Flow Stops current JSP Continues current JSP
Best Use Redirection / Navigation Reusable Layouts

8. Important Points to Remember

  • <jsp:forward> current page का execution रोक देता है।
  • <jsp:include> runtime पर content merge करता है।
  • दोनों server-side operations हैं — client को redirect नहीं दिखता।
  • Static include (<%@ include %>) compile time पर होता है, जबकि <jsp:include> runtime पर।
  • Dynamic websites में header, footer और navigation bar के लिए include सबसे useful है।
  • Login flow, redirection और error page handling के लिए forward use करें।

9. Exam-Oriented Notes (Quick Revision)

  • Forward: Request को दूसरे JSP या servlet पर भेजता है; control वापस नहीं आता।
  • Include: दूसरे JSP की content को current page में जोड़ता है; control वापस आता है।
  • Forward का use: Page redirection और validation result दिखाने के लिए।
  • Include का use: Common UI sections जैसे header, footer के लिए।
  • Forward और Include दोनों server-side actions हैं।
  • Exam Tip: अगर question पूछे “difference between forward and include,” तो control flow, buffer behavior और output merge के आधार पर answer दें।