私は現在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" %>
<%
}
%>
それでは、変数 "p"の値を "page_name"の位置に配置するにはどうすればよいでしょうか。
または、他に使用できる方法はありますか?
PHPでは、include()
またはinclude_once()
を使うことができます。私はこのJSPに少し立ち往生しています。 :(
あなたがしているのは静的インクルードです。静的インクルードはコンパイル時に解決されるため、実行時にのみ認識されるパラメータ値を使用することはできません。
必要なものは動的なものです。
<jsp:include page="..." />
スクリプトレットではなくJSP ELを使用してください。また、index.jspを使って中央コントローラを実装しているようです。代わりにサーブレットを使用して、このサーブレットから適切なJSPにディスパッチする必要があります。あるいは、StripesやSpring MVCなどの既存のMVCフレームワークを使用してください。
あなたはそのようなパラメータを使用することができます
<jsp:include page='about.jsp'>
<jsp:param name="articleId" value=""/>
</jsp:include>
そして
about.jspであなたはパラメータを取ることができます
<%String leftAds = request.getParameter("articleId");%>
Include Directivesを使用できます。
<%
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"%>"/>
<%
}
%>
違いはincludeディレクティブが翻訳段階でファイルをインクルードすることです。ページが要求された時点でJSP Include Actionがファイルをインクルードしている間
私は物事を操作するためのあなたのコントローラーとしてSpring MVCフレームワークをお勧めします。パラメータの代わりにURLパターンを使用してください。
例:
www.yourwebsite.com/products
の代わりに
www.yourwebsite.com/?p=products
このビデオを見る Spring MVCフレームワーク
ページ変換時には、includeディレクティブで指定されたファイルの内容は、JSPのincludeディレクティブが使用されている場所にそのまま「貼り付け」られます。その後、ソースJSPページはJavaサーブレットクラスに変換されます。インクルードファイルは静的リソースまたはJSPページです。一般に、JSPのincludeディレクティブは、ヘッダーバナーとフッターを含めるために使用されます。
Jspファイルをインクルードするための構文:
<%@ include file="relative url">
例
<%@include file="page_name.jsp" %>
1 .<a href="index.jsp?p=products">Products</a>
ユーザーがProductsリンクをクリックすると、直接products.jspを呼び出すことができます。
JSPファイルの名前をパラメータValueと同じにすることができます。
<%
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ファイルの名前を簡単に変更できます。