Başka bir JSP dosyası ekle


161

Şu anda JSP öğrenmeye çalışıyorum. Benim sorum şu anda ben sayfanın üstbilgi ve altbilgi kullanarak aşağıdakileri kullanarak:

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

ve

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

Ama şimdi, sayfa içeriğini de ayırdım. Bir sayfada kullanıcı tıkladığında, ürün demek, yani, o yer almaktadır JSP dosyası yüklemek için vardır: includes/pages/products.jsp So, kullanıcıya bağlantı gibidir: <a href="index.jsp?p=products">Products</a>.

Bu yüzden p değerini almalı ve sayfayı buna göre görüntülemeliyim.

Şimdiye kadar yaptığım şey şu.

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

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

<% 
 }
%>

Peki, "p" değişkeninin değerini "page_name" konumuna nasıl yerleştirebilirim?

Veya kullanabileceğim başka bir yöntem var mı?

PHP'de, include()veya öğesini kullanabiliriz include_once(). Biraz bu JSP sıkışmış. :(


1
Pagename neden burada kodlanmıyor? Yine de P için kontrol ediyorsanız, o zaman distination sayfasının p.jsp olacağını biliyorsunuz, bu yüzden karmaşık bir neden var mı?
kosa

Cevabınız için teşekkürler. Bir örnekti. Aslında, sayfayı birkaç bölüme ayırdım. Örneğin, yönetici alanında bir Ürünler sayfam varsa, yeni ürün eklemek, ürün düzenlemek, ürün aramak, ürün görüntülemek vb. Alt sayfalara ayrılır. Yani, her satırın kodlanması kötü görünecektir. Diyelim, adımı sadece 10 kez görüntülemek için, bir döngü kullanarak yazdırmayı seçebilir veya 10 satırı yazabilirim. Ama bence, döngüyü seçmek daha iyi. Öyle değil mi? Bence, bu çözüm olabilir: stackoverflow.com/questions/482788/…
Akhilesh B Chandran

Yanıtlar:


231

Yaptığınız şey statik bir içerme. Statik bir ekleme derleme zamanında çözülür ve bu nedenle yalnızca yürütme zamanında bilinen bir parametre değeri kullanamaz.

İhtiyacınız olan şey dinamik bir şeydir:

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

Komut dosyaları yerine JSP EL kullanmanız gerektiğini unutmayın. Ayrıca index.jsp ile merkezi bir denetleyici uyguluyorsunuz. Bunun yerine bir sunucu uygulaması kullanmalı ve bu sunucu uygulamasından uygun JSP'ye göndermelisiniz. Ya da daha iyisi, Stripes veya Spring MVC gibi mevcut bir MVC çerçevesini kullanın.


1
Önerileriniz için teşekkürler. :) jsp: include etiketini kullanmayı denedim. Ancak çalışma zamanında bir dosya bulunamadı hatası verir. İstisna ayrıntıları: java.io.FileNotFoundException: /includes/&lt;%= p %&gt;.jsp. <%= p %>Dosya yolunda olduğu gibi kullanılmış gibi görünüyor !
Akhilesh B Chandran

7
Komut dosyası kullanmayın. JSP EL kullanın: page = "/ include / $ {param.p}". Veya page = "<% =" / include / "+ p%>" ile deneyin.
JB Nizet

3
Teşekkür ederim. Ben böyle kullandım: <jsp:include page="<%= "includes/" + p + ".jsp" %>" />ve şimdi çalışıyor :)
Akhilesh B Chandran

2
Çok iyi cevap! Bu modeli (index.jsp'deki merkezi kontrolör) çok fazla kez gördüm ve her zaman belaya yol açar.
Matthias Hryniszak

Çeviri zamanı olmamalı mı? Ve bununla hala parametreleri kullanabileceğinizi düşünüyorum?
Koray Tugay

26

Bunun gibi parametreleri kullanabilirsiniz

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

ve

about.jsp içinde parametreyi alabilirsin

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

18

Dahil Etme Yönergelerini kullanabilirsiniz

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

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

<% 
 }
%>

veya JSP Dahil Etme İşlemi

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

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

<% 
 }
%>

farklı içerir include direktifi çeviri aşamasında bir dosya içerir. JSP Dahil Etme İşlemi, sayfanın istendiği sırada bir dosya içerirken

Bir şeyleri manipüle etmek için kontrolör olarak Spring MVC Framework'ü öneriyorum. parametre yerine url kalıbı kullanın.

misal:

www.yourwebsite.com/products

onun yerine

www.yourwebsite.com/?p=products

Bu videoyu izleyin Spring MVC Framework


1
video korunuyor .. lütfen herkese paylaşın
AutoMEta

İlk örneğinizin gerçekten işe yarayıp yaramadığını kontrol edebilir misiniz? İşe yaramıyor gibi görünmüyorum.
Jus12

8

Sayfa çeviri zamanında, include direktifinde verilen dosyanın içeriği, JSP include direktifinin kullanıldığı yere olduğu gibi 'yapıştırılır'. Daha sonra kaynak JSP sayfası bir java sunucu uygulaması sınıfına dönüştürülür. Eklenen dosya statik bir kaynak veya JSP sayfası olabilir. Genellikle, JSP include yönergesi üstbilgi başlıklarını ve altbilgileri eklemek için kullanılır.

Sözdizimi için bir jsp dosyası ekleyin:

<%@ include file="relative url">

Misal

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

6

1. <a href="index.jsp?p=products">Products</a>kullanıcı Ürünler bağlantısını tıkladığında, doğrudan products.jsp'yi arayabilirsiniz.

Yani u, JSP dosyasının adını parametre değeriyle aynı tutabilir.

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

%>    

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

<% 
 }
%>

veya

2. anahtar, değer çiftleri ile harici kaynak dosyasını koruyabilirsiniz. aşağıdaki gibi

products : products.jsp

customer : customers.jsp

JSP dosyasının adını properies dosyasından programlı olarak alabilirsiniz.

bu şekilde JSP dosyasının adını kolayca değiştirebilirsiniz


Teşekkür ederim. Şu anda ilk şeyi kullanıyorum. Aslında, bunun nasıl yapılacağı konusunda sorun yaşıyorum!
Akhilesh B Chandran

org.apache.jasper.JasperException: /admin.jsp(239,44) PWC6117: File "/<%=p%>" not found. Bu senin tarafında mı çalıştı?
Akhilesh B Chandran

Bu dosya ur yolunda varsa, yol ile ilgili sorun kontrolü, sanırım ur eksik bağlam yolu (include / admin.jsp olmalıdır). yanımda entre
scenerio

1
"P" değerini yankılanmaya çalıştım. Öyle: includes/add.jsp. Daha sonra, bu kullanılan türevini içerir: <%@ include file="includes/add.jsp" %>. Sayfa içeriğini gösterir. Ama bunun yerine bu satırı kullanırsam:, <%@ include file="<%=p%>" %>istisna gösterir!
Akhilesh B Chandran

Merhaba, aynı problemim var. Hata alıyorum File "<%=p%>" not found. Gerçek değeri kullanacak olursam işe yarıyor.
Reddy SK

0

Ben kullandıktan sonra bir sebeple Henüz, anlamıyorum <%@include file="includes/footer.jsp" %>benim de index.jspgibi diğer jsp dosyalarında sonra register.jspben kullanmak zorunda kaldı <%@ include file="footer.jsp"%>. Gördüğünüz gibi tam yolu kullanmaya gerek yoktu, STS ilk yolumu sakladı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.