web-dev-qa-db-ja.com

別のJSPファイルを含める

私は現在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に少し立ち往生しています。 :(

150

あなたがしているのは静的インクルードです。静的インクルードはコンパイル時に解決されるため、実行時にのみ認識されるパラメータ値を使用することはできません。

必要なものは動的なものです。

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

スクリプトレットではなくJSP ELを使用してください。また、index.jspを使って中央コントローラを実装しているようです。代わりにサーブレットを使用して、このサーブレットから適切なJSPにディスパッチする必要があります。あるいは、StripesやSpring MVCなどの既存のMVCフレームワークを使用してください。

220
JB Nizet

あなたはそのようなパラメータを使用することができます

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

そして

about.jspであなたはパラメータを取ることができます

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

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フレームワーク

16

ページ変換時には、includeディレクティブで指定されたファイルの内容は、JSPのincludeディレクティブが使用されている場所にそのまま「貼り付け」られます。その後、ソースJSPページはJavaサーブレットクラスに変換されます。インクルードファイルは静的リソースまたはJSPページです。一般に、JSPのincludeディレクティブは、ヘッダーバナーとフッターを含めるために使用されます。

Jspファイルをインクルードするための構文:

<%@ include file="relative url">

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

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ファイルの名前を簡単に変更できます。

5