2011-10-24 16 views

उत्तर

34

jGuru: सी "#include", तरह

<%@include file="abc.jsp"%> निर्देश में कार्य करता है शामिल फ़ाइल के पाठ में खींच रहा है और यह संकलन के रूप में अगर यह सहित फ़ाइल का हिस्सा थे। शामिल फ़ाइल किसी भी प्रकार (HTML या टेक्स्ट सहित) हो सकती है।

< jsp: पेज में शामिल = "abc.jsp" > टैग एक अलग JSP फ़ाइल के रूप में फ़ाइल को संकलित करता है, और संकलित JSP में इसे करने के लिए एक कॉल एम्बेड करता है।

कुछ JSP इंजन का समर्थन अमानक टैग <!--#include file="data.inc"--> (NCSA-, या .shtml शैली) और <%@ vinclude="data.inc" %> (JRun शैली), लेकिन इन JSP कल्पना में परिभाषित नहीं कर रहे हैं और इस प्रकार पर भरोसा नहीं किया जा सकता है।

जेएसपी अकसर किये गए सवाल में यह प्रश्न भी देखें।

1

एक यह है एक स्थिर आयात (<% = @ शामिल हैं ...> "), अन्य एक गतिशील एक (jsp: शामिल हैं) है। यह आप के लिए स्पष्ट करना पड़ता वाला पथ उदाहरण के लिए प्रभावित करेगा अपने फ़ाइल शामिल है। Google पर एक छोटा सा शोध आपको और बताएगा।

51

एक बड़ा अंतर है। जैसा कि उल्लेख किया गया है, <%@ include एक स्थिर शामिल है, <jsp:include एक गतिशील शामिल है। इसे मैक्रो और ए के बीच एक अंतर के रूप में सोचें। फ़ंक्शन कॉल (यदि आप उन शर्तों से परिचित हैं)। इसे डालने का एक और तरीका, एक स्थैतिक शामिल बिल्कुल वही बात है जैसे <%@ include कथन के स्थान पर शामिल फ़ाइल ("कोड") की सटीक सामग्री की प्रतिलिपि बनाना (कौन कौन से वास्तव में जेएसपी कंपाइलर क्या करेगा।

एक गतिशील एक अनुरोध (अनुरोध डिस्पैचर का प्रयोग करके) निष्पादित करेंगे कि संकेत पेज और फिर <jsp:include बयान के स्थान पर, बुला पेज के उत्पादन में पेज से उत्पादन में शामिल कर देगा शामिल हैं।

यहां बड़ा अंतर यह है कि एक गतिशील के साथ, शामिल पृष्ठ इसके अपने पृष्ठ कॉन्टेक्स्ट में निष्पादित होगा। और चूंकि यह एक अनुरोध है, इसलिए आप पृष्ठ पर पैरामीटर भेज सकते हैं उसी तरह आप किसी भी अन्य अनुरोध के साथ पैरामीटर भेज सकते हैं। एक स्थिर, दूसरी ओर, कोड का एक टुकड़ा है जो कॉलिंग पेज के संदर्भ में निष्पादित होगा। आप स्थिर एक ही फाइल एक बार से अधिक शामिल हैं, तो उस फ़ाइल में कोड तो जैसे कुछ

<% 
int i = 0; 
%> 

बुला पृष्ठ पर कई स्थानों में मौजूद एक संकलक त्रुटि (उत्पन्न होगा के बाद से ही चर घोषित नहीं किया जा सकता होगा एक से ज्यादा बार)।

93

कोड में से एक पुन: प्रयोज्य टुकड़ा में मैं निर्देश <%@include file="reuse.html"%> का उपयोग करें और दूसरे में मैं टैग<jsp:include page="reuse.html" /> का उपयोग करें।

चलो पुन: प्रयोज्य फ़ाइल में कोड होना:

<html> 
<head> 
    <title>reusable</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
</head> 
<body> 
    <img src="candle.gif" height="100" width="50"/> <br /> 
    <p><b>As the candle burns,so do I</b></p> 
</body> 

दोनों JSP फ़ाइलें चलाने के बाद आप एक ही उत्पादन देख सकते हैं और अगर वहाँ निर्देश और के बीच कोई अंतर था लगता है टैग। लेकिन अगर आप दो JSP फ़ाइलों के उत्पन्न servlet को देखो, आप देखेंगे difference.Here जब आप directive का उपयोग आप क्या देखेंगे:

out.write("<html>\r\n"); 
out.write(" <head>\r\n"); 
out.write("  <title>reusable</title>\r\n"); 
out.write("  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n"); 
out.write(" </head>\r\n"); 
out.write(" <body>\r\n"); 
out.write("  <img src=\"candle.gif\" height=\"100\" width=\"50\"/> <br />\r\n"); 
out.write("  <p><b>As the candle burns,so do I</b></p>\r\n"); 
out.write(" </body>\r\n"); 
out.write("</html>\r\n"); 

और यह आप के लिए इस्तेमाल किया टैग के लिए क्या देखेंगे दूसरा JSP फ़ाइल में:

org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "reusable.html", out, false); 

तो अब आप जानते हैं कि शामिल निर्देश अनुवाद समय में reuse.html के स्रोत सम्मिलित करता है, लेकिन कार्रवाई टैग रनटाइम पर reuse.html की प्रतिक्रिया सम्मिलित करता है।

यदि आप इसके बारे में सोचते हैं, तो प्रत्येक एक्शन टैग (jsp:include file) के साथ एक अतिरिक्त प्रदर्शन हिट होता है। इसका मतलब है कि आप गारंटी दे सकते हैं कि आपके पास हमेशा नवीनतम सामग्री होगी, लेकिन यह प्रदर्शन लागत बढ़ाती है।

+5

क्या आप अधिक विशिष्ट हो सकते हैं जिसमें परिणाम आउटपुट शामिल है? आपने बताया कि आपका दूसरा शामिल निर्देश (@ शामिल) का उपयोग कर रहा है। फिर पहले आउटपुट परिणाम में, आपने बताया कि आपने निर्देश (@ शामिल) का उपयोग किया है, लेकिन दूसरे आउटपुट परिणाम पर, आपने यह भी कहा है कि यह दूसरे शामिल है (जो, आपके पहले स्पष्टीकरण से @include है)। – stack247

+0

बहुत अच्छी व्याख्या ... + 1 और एक अंगूठे ऊपर –

+30

यदि किसी और को इस उत्तर से उलझन में है: ' eis

27

1) का उपयोग कब करें निर्देश?

कई jsp वेब एप्लिकेशन के के में एक ही उत्पादन तर्क के दोहराव को रोकने के लिए तंत्र शामिल यानी प्रयोग किया जाता है।, प्रस्तुति तर्क के पुन: प्रयोज्य बढ़ावा देने के लिए शामिल निर्देश प्रयोग किया जाता है

<%@ include file="abc.jsp" %> 

जब ऊपर दिए गए निर्देश जेएसपी इंजन द्वारा प्राप्त किया जाता है, यह abc.jsp के स्रोत कोड को पुनर्प्राप्त करता है और प्रतिलिपि वर्तमान jsp में समान इनलाइन है। बाद अनुवाद को कॉपी वर्तमान पृष्ठ के लिए किया जाता है

सीधे शब्दों में कहा कि यह इंजन यानी JSP को स्थिर अनुदेश है। "Abc.jsp" की पूरी स्रोत कोड वर्तमान पृष्ठ

2) जब उपयोग करने के लिए में बनाई जाए कार्रवाई शामिल करें?

शामिल टैग वर्तमान पृष्ठ के बजाय शामिल पेज द्वारा रन टाइम पर उत्पन्न उत्पादन वर्तमान पृष्ठ प्रतिक्रिया में शामिल किया गया है

टैग कार्यक्षमता शामिल में शामिल पृष्ठ के स्रोत कोड शामिल नहीं है के समान है की सर्वलेट प्रोग्रामिंग के अनुरोध डिस्पैचर की व्यवस्था शामिल

टैग शामिल इंजन यानी JSP को रन-टाइम अनुदेश है।, बल्कि एक विधि कॉल किया जाता है वर्तमान पृष्ठ में पूरे कोड की प्रतिलिपि वर्तमान पृष्ठ

+1

ग्रेट स्पष्टीकरण! अनुवाद समय (स्थिर) निर्देश <% @ फ़ाइल = "file.jsp"%> या रनटाइम (क्रिया) Joe

1
से "abc.jsp" करने के लिए

Java Revisited

  1. निर्देश शामिल किए गए संसाधन में जेएसपी अनुवाद समय के दौरान लोड किया गया है, जबकि इसमें शामिल संसाधन शामिल है अनुरोध समय के दौरान लोड किया गया है।
  2. जेएसपी फ़ाइल फिर से संकलित होने तक निर्देश शामिल करने के मामले में शामिल संसाधन पर कोई भी परिवर्तन दिखाई नहीं देगा। कार्रवाई को शामिल करने के मामले में, शामिल संसाधन में कोई भी परिवर्तन अगले अनुरोध में दिखाई देगा।
  3. निर्देश शामिल करें स्थिर आयात है, जबकि कार्रवाई गतिशील आयात
  4. निर्देश शामिल करने के लिए निर्देश निर्दिष्ट करने के लिए फ़ाइल विशेषता का उपयोग शामिल है जिसमें एक ही उद्देश्य के लिए कार्रवाई उपयोग पृष्ठ विशेषता शामिल है।
संबंधित मुद्दे