एक और JSP फाइल शामिल करें


161

मैं वर्तमान में JSP सीखने की कोशिश कर रहा हूँ। मेरा सवाल यह है कि, वर्तमान में मैं पेज के हेडर और फुटर को शामिल करता था:

<%@include file="includes/header.jsp" %>

तथा

<%@include file="includes/footer.jsp" %>

लेकिन अब, मैंने पृष्ठ सामग्री को भी अलग कर दिया है। तो, अगर एक पृष्ठ पर उपयोगकर्ता क्लिक करता है, उत्पादों का कहना है, यह क्षेत्र में स्थित है जो JSP फ़ाइल लोड करने के लिए दिया गया है: includes/pages/products.jsp तो, उपयोगकर्ता के लिए लिंक की तरह है: <a href="index.jsp?p=products">Products</a>

इसलिए, मुझे p मान प्राप्त करना होगा और उसके आधार पर पृष्ठ प्रदर्शित करना होगा।

इसके बाद मैंने अब तक जो किया है।

<%
 if(request.getParameter("p")!=null)
 { 
   String p = request.getParameter("p");
%>    

<%@include file="includes/page_name.jsp" %>

<% 
 }
%>

तो, मैं "पेज_नाम" की स्थिति में चर "पी" का मूल्य कैसे डालूं?

या, क्या कोई अन्य तरीका है जो मैं उपयोग कर सकता हूं?

PHP में, हम include()या का उपयोग कर सकते हैं include_once()। मैं इस JSP में थोड़ा फंस गया हूँ। :(


1
क्यों नहीं वहाँ pagename हार्डकोड? वैसे भी आप P के लिए जाँच कर रहे हैं, तो आप जानते हैं कि डिस्टिलेशन पेज p.jsp होगा, इसलिए जटिलता का कोई कारण?
कोसा

जवाब के लिए धन्यवाद। यह एक उदाहरण के लिए था। वास्तव में, मैंने पृष्ठ को कई में विभाजित किया है। उदाहरण के लिए, यदि मेरे पास व्यवस्थापक क्षेत्र में उत्पाद पृष्ठ है, तो नए उत्पाद जोड़ने के लिए, किसी उत्पाद को संपादित करने, किसी उत्पाद को खोजने, उत्पाद को देखने आदि के लिए। यह उप पृष्ठों में अलग हो गया है। इसलिए, प्रत्येक पंक्ति को हार्डकोड करना बुरा लगेगा। कहते हैं, केवल 10 बार अपना नाम प्रदर्शित करने के लिए, मैं या तो लूप का उपयोग करके प्रिंट करना चुन सकता हूं या 10 लाइनें लिख सकता हूं। लेकिन मुझे लगता है, लूप चुनना बेहतर है। है ना? मुझे लगता है, यह समाधान हो सकता है: stackoverflow.com/questions/482788/…
अखिलेश बी चंद्रन

जवाबों:


231

आप जो कर रहे हैं वह एक स्थिर शामिल है। एक स्थिर शामिल संकलन समय पर हल हो गया है, और इस प्रकार एक पैरामीटर मान का उपयोग नहीं कर सकता है, जो केवल निष्पादन समय पर जाना जाता है।

आपको जो चाहिए वह एक गतिशील शामिल है:

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

ध्यान दें कि आपको स्क्रिप्ट के बजाय JSP EL का उपयोग करना चाहिए। यह भी लगता है कि आप index.jsp के साथ एक केंद्रीय नियंत्रक लागू कर रहे हैं। आपको इसके बजाय एक सर्वलेट का उपयोग करना चाहिए, और इस सर्वलेट से उचित JSP को भेजना चाहिए। या बेहतर, स्ट्रिप या स्प्रिंग एमवीसी जैसे मौजूदा एमवीसी ढांचे का उपयोग करें।


1
आपके सुझाव के लिए धन्यवाद। :) मैंने jsp का उपयोग करने की कोशिश की है: टैग शामिल करें। लेकिन रनटाइम में, यह एक फ़ाइल देता है जिसमें त्रुटि नहीं मिली। अपवाद विवरण java.io.FileNotFoundException: /includes/&lt;%= p %&gt;.jsp:। ऐसा लगता <%= p %>है कि फ़ाइल पथ में इसका उपयोग किया गया है!
अखिलेश बी चंद्रन

7
स्क्रिप्ट का उपयोग न करें। JSP EL: पेज = "/ / / $ {param.p} का उपयोग करें"। या पेज = "<% =" / शामिल है / "+ p%>" के साथ प्रयास करें।
जेबी निज़ेट

3
धन्यवाद। मैंने इसे इस तरह इस्तेमाल किया: <jsp:include page="<%= "includes/" + p + ".jsp" %>" />और यह अब काम कर रहा है :)
अखिलेश बी चंद्रन

2
बहुत अच्छा जवाब! मैंने इस पैटर्न (index.jsp में केंद्रीय नियंत्रक) को कई बार देखा है और यह हमेशा परेशानी का कारण बनता है।
मथायस ह्रीनिस्ज़क

क्या वह अनुवाद समय नहीं होना चाहिए? और मुझे लगता है कि आप अभी भी उस के साथ मापदंडों का उपयोग कर सकते हैं?
कोरे तुगे

26

आप जैसे मापदंडों का उपयोग कर सकते हैं

<jsp:include page='about.jsp'>
    <jsp:param name="articleId" value=""/>
</jsp:include>

तथा

in.jsp में आप पैरामेटर ले सकते हैं

<%String leftAds = request.getParameter("articleId");%>

18

आप इन्डेक्टिव निर्देशों का उपयोग कर सकते हैं

<%
 if(request.getParameter("p")!=null)
 { 
   String p = request.getParameter("p");
%>    

<%@include file="<%="includes/" + p +".jsp"%>"%>

<% 
 }
%>

या JSP एक्शन शामिल करें

<%
 if(request.getParameter("p")!=null)
 { 
   String p = request.getParameter("p");
%>    

<jsp:include page="<%="includes/"+p+".jsp"%>"/>

<% 
 }
%>

अलग-अलग शामिल है निर्देश में अनुवाद चरण के दौरान एक फ़ाइल शामिल है। जब JSP शामिल करें कार्रवाई में पृष्ठ अनुरोध किए जाने के समय एक फ़ाइल शामिल होती है

मैं चीजों को हेरफेर करने के लिए आपके नियंत्रक के रूप में स्प्रिंग एमवीसी फ्रेमवर्क की सलाह देता हूं। पैरामीटर के बजाय url पैटर्न का उपयोग करें।

उदाहरण:

www.yourwebsite.com/products

के बजाय

www.yourwebsite.com/?p=products

इस वीडियो को देखें स्प्रिंग एमवीसी फ्रेमवर्क


1
वीडियो संरक्षित है .. कृपया इसे सार्वजनिक रूप से साझा करें
ऑटोएमईए

क्या आप जांच सकते हैं कि क्या आपका पहला उदाहरण वास्तव में काम करता है? मैं इसे काम करने के लिए प्राप्त करने के लिए प्रतीत नहीं कर सकता।
Jus12

8

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

एक jsp फ़ाइल को शामिल करने के लिए सिंटैक्स:

<%@ include file="relative url">

उदाहरण

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

6

1. <a href="index.jsp?p=products">Products</a>जब उपयोगकर्ता उत्पाद लिंक पर क्लिक करता है, तो आप सीधे products.jsp पर कॉल कर सकते हैं।

मेरा मतलब है कि आप JSP फाइल का नाम पैरामीटर मान के समान रख सकते हैं।

<%
 if(request.getParameter("p")!=null)
 { 
   String contextPath="includes/";
   String p = request.getParameter("p");
   p=p+".jsp";
   p=contextPath+p;

%>    

<%@include file="<%=p%>" %>

<% 
 }
%>

या

2. आप कुंजी, मूल्य जोड़े के साथ बाहरी संसाधन फ़ाइल को बनाए रख सकते हैं। नीचे की तरह

products : products.jsp

customer : customers.jsp

आप उचित रूप से उचित फ़ाइल से JSP फ़ाइल का नाम पुनः प्राप्त कर सकते हैं।

इस तरह आप आसानी से JSP फ़ाइल का नाम बदल सकते हैं


धन्यवाद। मैं इस समय पहली चीज का उपयोग कर रहा हूं। वास्तव में, मुझे यह करने में समस्या हो रही है कि यह कैसे किया जाए!
अखिलेश बी चंद्रन

org.apache.jasper.JasperException: /admin.jsp(239,44) PWC6117: File "/<%=p%>" not found। क्या आपके पक्ष में काम हुआ?
अखिलेश बी चंद्रन 10

यह पथ संबंधित समस्या की जाँच है अगर फ़ाइल उर पथ में मौजूद है, मुझे लगता है कि उर गायब संदर्भ पथ (होना चाहिए / admin.jsp शामिल होना चाहिए)। मैंने नकली
स्कोररियो को

1
मैंने "पी" के मूल्य को प्रतिध्वनित करने की कोशिश की है। यह है: includes/add.jsp। फिर इसमें शामिल करें व्युत्पन्न <%@ include file="includes/add.jsp" %>:। यह पृष्ठ सामग्री दिखाता है। लेकिन अगर मैं इसके बजाय इस लाइन का उपयोग करता हूं: <%@ include file="<%=p%>" %>यह अपवाद को दर्शाता है!
अखिलेश बी चंद्रन

नमस्ते, मैं एक ही समस्या है। त्रुटि हो रही है File "<%=p%>" not found। अगर मैं वास्तविक मूल्य का उपयोग करूंगा तो यह काम कर रहा है।
रेड्डी एसके

0

एक कारण के लिए मुझे अभी तक समझ में नहीं आया है, के बाद मैं <%@include file="includes/footer.jsp" %>अपने में इस्तेमाल किया index.jspतो अन्य jsp फ़ाइलों में जैसे register.jspमुझे उपयोग करना था <%@ include file="footer.jsp"%>। जैसा कि आप देख रहे हैं कि पूर्ण पथ का उपयोग करने की अधिक आवश्यकता नहीं थी, एसटीएस ने मेरा प्रारंभिक पथ संग्रहीत किया था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.