Saat ini saya mencoba mempelajari JSP. Pertanyaan saya adalah, saat ini saya menggunakan header dan footer halaman menggunakan:
<%@include file="includes/header.jsp" %>
dan
<%@include file="includes/footer.jsp" %>
Tapi sekarang, saya telah memisahkan konten halaman juga. Jadi, jika pengguna mengklik halaman, mengatakan produk, itu harus memuat file JSP yang terletak di: includes/pages/products.jsp
Jadi, link ke pengguna seperti: <a href="index.jsp?p=products">Products</a>
.
Jadi, saya harus mendapatkan nilai p dan menampilkan halaman berdasarkan itu.
Berikut ini adalah apa yang telah saya lakukan sejauh ini.
<%
if(request.getParameter("p")!=null)
{
String p = request.getParameter("p");
%>
<%@include file="includes/page_name.jsp" %>
<%
}
%>
Jadi, bagaimana cara menempatkan nilai variabel "p" di posisi "page_name"?
Atau, adakah metode lain yang bisa saya gunakan?
Di PHP, kita bisa menggunakan include()
atau include_once()
. Saya agak terjebak dalam JSP ini. :(
Jawaban:
Apa yang Anda lakukan adalah termasuk statis. Sertakan statis diselesaikan pada waktu kompilasi, dan karenanya mungkin tidak menggunakan nilai parameter, yang hanya diketahui pada waktu eksekusi.
Apa yang Anda butuhkan adalah dinamis termasuk:
Perhatikan bahwa Anda harus menggunakan JSP EL daripada scriptlets. Tampaknya Anda menerapkan pengontrol pusat dengan index.jsp. Anda harus menggunakan servlet sebagai gantinya, dan mengirim ke JSP yang sesuai dari servlet ini. Atau lebih baik, gunakan kerangka kerja MVC yang ada seperti Stripes atau Spring MVC.
sumber
java.io.FileNotFoundException: /includes/<%= p %>.jsp
. Sepertinya<%= p %>
digunakan seperti di jalur file!<jsp:include page="<%= "includes/" + p + ".jsp" %>" />
dan sekarang berfungsi :)Anda dapat menggunakan parameter seperti itu
dan
di about.jsp Anda dapat mengambil paramter
sumber
Anda dapat menggunakan Sertakan Petunjuk
atau JSP Include Action
yang berbeda adalah memasukkan direktif termasuk file selama fase terjemahan. sementara JSP Include Action menyertakan file pada saat halaman diminta
Saya merekomendasikan Spring MVC Framework sebagai pengontrol Anda untuk memanipulasi sesuatu. gunakan pola url sebagai ganti parameter.
contoh:
dari pada
Tonton video ini Spring MVC Framework
sumber
Pada waktu terjemahan halaman, konten file yang diberikan dalam directive include 'ditempelkan' sebagaimana adanya, di tempat JSP include directive digunakan. Kemudian halaman JSP sumber dikonversi menjadi kelas java servlet. File yang disertakan dapat berupa sumber daya statis atau halaman JSP. Secara umum, JSP termasuk direktif digunakan untuk memasukkan spanduk header dan footer.
Sintaks untuk menyertakan file jsp:
Contoh
sumber
1.
<a href="index.jsp?p=products">Products</a>
saat pengguna mengklik tautan Produk, Anda dapat langsung menghubungi products.jsp.Maksud saya, Anda dapat mempertahankan nama file JSP sama dengan Nilai parameter.
atau
2.Anda dapat memelihara file sumber daya eksternal dengan kunci, pasangan nilai. seperti di bawah ini
products : products.jsp
customer : customers.jsp
Anda secara programatik dapat mengambil nama file JSP dari file properies.
dengan cara ini Anda dapat dengan mudah mengubah nama file JSP
sumber
org.apache.jasper.JasperException: /admin.jsp(239,44) PWC6117: File "/<%=p%>" not found
. Apakah itu berhasil di pihak Anda?includes/add.jsp
. Kemudian digunakan ini dalam termasuk derivatif:<%@ include file="includes/add.jsp" %>
. Ini menunjukkan konten halaman. Tetapi jika saya menggunakan baris ini sebagai gantinya:,<%@ include file="<%=p%>" %>
ini menunjukkan pengecualian!File "<%=p%>" not found
. Jika saya akan menggunakan nilai riil itu berfungsi.Untuk suatu alasan saya belum mengerti, setelah saya gunakan
<%@include file="includes/footer.jsp" %>
diindex.jsp
file jspregister.jsp
saya yang lain seperti yang harus saya gunakan<%@ include file="footer.jsp"%>
. Seperti yang Anda lihat, tidak perlu lagi menggunakan path lengkap, STS telah menyimpan path awal saya.sumber