আর একটি জেএসপি ফাইল অন্তর্ভুক্ত করুন


161

আমি বর্তমানে জেএসপি শেখার চেষ্টা করছি। আমার প্রশ্ন হ'ল বর্তমানে আমি পৃষ্ঠার শিরোনাম এবং পাদচরণগুলি ব্যবহার করে এটি ব্যবহার করেছি:

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

এবং

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

তবে এখন, আমি পৃষ্ঠা বিষয়বস্তু পৃথক করা হয়েছে। সুতরাং, যদি একটি পৃষ্ঠায় ব্যবহারকারীর ক্লিকের, পণ্য বলে, এটা অবস্থিত যা JSP ফাইল লোড করতে আছে: includes/pages/products.jsp সুতরাং, ব্যবহারকারী লিংক মত হল: <a href="index.jsp?p=products">Products</a>

সুতরাং, আমি পি মান পেতে এবং এটি উপর ভিত্তি করে পৃষ্ঠা প্রদর্শন করতে হবে।

আমি এখন পর্যন্ত যা করেছি তা অনুসরণ করা হচ্ছে।

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

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

<% 
 }
%>

সুতরাং, আমি কীভাবে "পৃষ্ঠা_নাম" এর স্থানে ভেরিয়েবল "পি" এর মান রাখব?

বা, আমি ব্যবহার করতে পারে যে অন্য কোন পদ্ধতি আছে?

পিএইচপি-তে, আমরা include()বা ব্যবহার করতে পারি include_once()। আমি এই জেএসপিতে কিছুটা আটকে আছি। :(


1
কেন সেখানে পৃষ্ঠার নামটি হার্ডকোড নয়? যাইহোক আপনি পি এর জন্য যাচাই করছেন, তারপরে আপনি জানেন কী দূরত্ব পৃষ্ঠাটি p.jsp হবে, তাই জটিলতার কোনও কারণ?
কোসা

জবাব দেওয়ার জন্য ধন্যবাদ এটি একটি উদাহরণ ছিল। আসলে, আমি পৃষ্ঠাটি বেশ কয়েকটিতে বিভক্ত করেছি। উদাহরণস্বরূপ, যদি অ্যাডমিন অঞ্চলে আমার কাছে পণ্য পৃষ্ঠা থাকে, নতুন পণ্য যুক্ত করতে, একটি পণ্য সম্পাদনা করতে, একটি পণ্য অনুসন্ধান করতে, কোনও পণ্য দেখা ইত্যাদি it এটি উপ পৃষ্ঠায় বিভক্ত। সুতরাং, প্রতিটি লাইন হার্ডকোডিং খারাপ লাগবে। বলুন, আমার নামটি কেবল 10 বার প্রদর্শন করতে, আমি হয় লুপ ব্যবহার করে মুদ্রণ করতে বা 10 টি লাইন লিখতে বেছে নিতে পারি। তবে আমি মনে করি, লুপটি বেছে নেওয়া আরও ভাল। তাই না? আমি মনে করি, এটির
অখিলেশ বি চন্দ্রন

উত্তর:


231

আপনি যা করছেন তা স্থির অন্তর্ভুক্ত। একটি স্থিতিশীল অন্তর্ভুক্ত সংকলন সময়ে সমাধান করা হয়, এবং এইভাবে একটি পরামিতি মান ব্যবহার করতে পারে না, যা শুধুমাত্র মৃত্যুদন্ড কার্যকর সময় জানা যায়।

আপনার যা প্রয়োজন তা একটি গতিশীল অন্তর্ভুক্ত:

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

নোট করুন যে আপনার স্ক্রিপ্টলেটগুলির চেয়ে জেএসপি ইএল ব্যবহার করা উচিত। দেখে মনে হচ্ছে আপনি সূচি.জেএসপি সহ একটি কেন্দ্রীয় নিয়ামক প্রয়োগ করছেন। পরিবর্তে এটি করার জন্য আপনার একটি সার্লেট ব্যবহার করা উচিত এবং এই সার্লেট থেকে উপযুক্ত জেএসপিতে প্রেরণ করা উচিত। বা আরও ভাল, স্ট্রিপস বা স্প্রিং এমভিসির মতো একটি বিদ্যমান এমভিসি ফ্রেমওয়ার্ক ব্যবহার করুন।


1
আপনার পরামর্শের জন্য ধন্যবাদ। :) আমি jsp ব্যবহার করার চেষ্টা করেছি: ট্যাগ অন্তর্ভুক্ত। কিন্তু রানটাইম এ এটি একটি ফাইল খুঁজে পায় যাতে ত্রুটি পাওয়া যায় নি। ব্যতিক্রম বিবরণ: java.io.FileNotFoundException: /includes/&lt;%= p %&gt;.jsp। দেখে মনে হচ্ছে <%= p %>যেমন ফাইল পাথ হয় ব্যবহার করা হয়!
অখিলেশ বি চন্দ্রন

7
স্ক্রিলেটলেট ব্যবহার করবেন না। JSP EL: পৃষ্ঠা = "/ অন্তর্ভুক্ত / $ {param.p}" ব্যবহার করুন। অথবা পৃষ্ঠা = "<% =" / অন্তর্ভুক্ত / "+ পি%>" দিয়ে চেষ্টা করুন।
জেবি নিজেট

3
ধন্যবাদ. আমি এটি এটির মতো ব্যবহার করেছি: <jsp:include page="<%= "includes/" + p + ".jsp" %>" />এবং এটি এখন কাজ করছে :)
অখিলেশ বি চন্দ্রন

2
খুব ভাল উত্তর! আমি এই প্যাটার্নটি দেখেছি (index.jsp এ কেন্দ্রীয় নিয়ামক) এবং এটি সর্বদা সমস্যার দিকে পরিচালিত করে।
ম্যাথিয়াস হরিণিজাক

অনুবাদ সময় হবে না? এবং আমি মনে করি আপনি এখনও এটি দিয়ে পরামিতি ব্যবহার করতে পারেন?
Koray Tugay

26

আপনি যেমন পরামিতি ব্যবহার করতে পারেন

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

এবং

About.jsp এ আপনি প্যারামটারটি নিতে পারেন

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

18

আপনি অন্তর্ভুক্ত নির্দেশিকা ব্যবহার করতে পারেন

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

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

<% 
 }
%>

বা জেএসপি অন্তর্ভুক্ত পদক্ষেপ

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

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

<% 
 }
%>

বিভিন্ন অন্তর্ভুক্ত নির্দেশিকা অনুবাদ পর্যায়ে একটি ফাইল অন্তর্ভুক্ত। যখন জেএসপি অন্তর্ভুক্ত অ্যাকশনটিতে পৃষ্ঠার অনুরোধ করা হয় তখন একটি ফাইল অন্তর্ভুক্ত থাকে

আমি জিনিসগুলিতে হস্তক্ষেপ করতে আপনার নিয়ামক হিসাবে স্প্রিং এমভিসি ফ্রেমওয়ার্ককে সুপারিশ করি। প্যারামিটারের পরিবর্তে url প্যাটার্ন ব্যবহার করুন।

উদাহরণ:

www.yourwebsite.com/products

পরিবর্তে

www.yourwebsite.com/?p=products

এই ভিডিওটি দেখুন স্প্রিং এমভিসি ফ্রেমওয়ার্ক


1
ভিডিওটি সুরক্ষিত আছে .. দয়া করে জনসাধারণের সাথে ভাগ করুন
অটোমেটা

আপনার প্রথম উদাহরণটি আসলে কাজ করে কিনা তা পরীক্ষা করতে পারেন? আমি এটি কাজ করতে পারে বলে মনে হচ্ছে না।
Jus12

8

পৃষ্ঠা অনুবাদ করার সময়, অন্তর্ভুক্ত নির্দেশিকায় অন্তর্ভুক্ত ফাইলের বিষয়বস্তুটি যেমনটি জেএসপি অন্তর্ভুক্ত থাকে সেখানে নির্দেশিকা ব্যবহৃত হয় এমন জায়গায় 'আটকানো' হয়। তারপরে উত্স জেএসপি পৃষ্ঠাটি জাভা সার্ভলেট শ্রেণিতে রূপান্তরিত হয়। অন্তর্ভুক্ত ফাইলটি একটি স্ট্যাটিক সংস্থান বা জেএসপি পৃষ্ঠা হতে পারে। সাধারণত, জেএসপি অন্তর্ভুক্ত নির্দেশকে হেডার ব্যানার এবং পাদচরণ অন্তর্ভুক্ত করতে ব্যবহৃত হয়।

একটি জেএসপি ফাইল অন্তর্ভুক্ত করার জন্য সিনট্যাক্স:

<%@ include file="relative url">

উদাহরণ

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

6

১. <a href="index.jsp?p=products">Products</a>ব্যবহারকারী যখন পণ্যের লিঙ্কে ক্লিক করেন, আপনি সরাসরি product.jsp কল করতে পারেন।

আমি বলতে চাইছি আপনি জেএসপি ফাইলের নাম প্যারামিটার মান হিসাবে বজায় রাখতে পারবেন।

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

%>    

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

<% 
 }
%>

অথবা

2. আপনি কী, মান জোড়া দিয়ে বাহ্যিক সংস্থান ফাইল রক্ষণ করতে পারেন maintain নীচের মত

products : products.jsp

customer : customers.jsp

আপনি যথাযথ ফাইল থেকে জেএসপি ফাইলের নামটি পুনঃনির্মাণ করতে পারেন।

এইভাবে আপনি সহজেই জেএসপি ফাইলের নাম পরিবর্তন করতে পারবেন


ধন্যবাদ. আমি এই মুহুর্তে প্রথম জিনিসটি ব্যবহার করছি। আসলে, আমি কীভাবে এটি করতে সমস্যা করছি!
অখিলেশ বি চন্দ্রন

org.apache.jasper.JasperException: /admin.jsp(239,44) PWC6117: File "/<%=p%>" not found। এটা কি আপনার পক্ষে কাজ করেছিল?
অখিলেশ বি চন্দ্রন

এই পথ সংক্রান্ত সমস্যা চেক হলে ফাইল উর পথে বিদ্যমান, আমি উর অনুপস্থিত প্রসঙ্গ পথ অনুমান (হওয়া উচিত অন্তর্ভুক্ত / admin.jsp) .আমি কৃত্রিম নি Entre scenerio আমার পাশে
Balaswamy Vaddeman

1
আমি "পি" এর মান প্রতিধ্বনিত করার চেষ্টা করেছি। এটি হল: includes/add.jsp। তারপর এই ব্যবহৃত ব্যুৎপন্ন মধ্যে রয়েছে: <%@ include file="includes/add.jsp" %>। এটি পৃষ্ঠা বিষয়বস্তু দেখায়। তবে আমি যদি পরিবর্তে এই লাইনটি ব্যবহার <%@ include file="<%=p%>" %>করি:, এটি ব্যতিক্রম দেখায়!
অখিলেশ বি চন্দ্রন

হাই, আমারও একই সমস্যা আছে। ত্রুটি পাওয়া যাচ্ছে File "<%=p%>" not found। আমি যদি সত্যিকারের মানটি ব্যবহার করি তবে এটি কাজ করছে।
রেড্ডি এসকে

0

একটি কারণে আমি এখনও বুঝতে পারি না, আমি <%@include file="includes/footer.jsp" %>আমার index.jspতখনকার মতো অন্যান্য জেএসপি ফাইলগুলিতে register.jspব্যবহার করার পরে <%@ include file="footer.jsp"%>। আপনি যেহেতু দেখেন যে পুরো পথটি ব্যবহার করার দরকার নেই, এসটিএস আমার প্রাথমিক পাথটি সংরক্ষণ করেছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.