Webサイトを作成するにあたって、各ページごとに、すべてのコンテンツを作成するのは大変です。
メニュー、ユーザー情報の表示、ランキングの表示など、主要な部品(ウィジェット)を分割しておくことで、各ページで再利用ができます。
また、ユーザーエクスペリエンスの観点からも、各ページで同じように見せることは重要です。
JSPを分割する
JSPは、サーバーサイドで別のJSPを含める(インクルードする)ことができます。
任意の場所で、以下のように、インクルードするJSPファイル名を指定するだけで、簡単にできます。
1 | <jsp:include page="インクルードするJSPファイル名.jsp" /> |
JSPインクルードのサンプル
oya.jsp(インクルードする親JSP)
1 2 3 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 親のJSP |
1 2 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 子のJSP |
実行結果
1 2 | 親のJSP 子のJSP |
インクルードするJSPに値を渡す
親のJSPから、子のJSPに値を渡すことができます。
これにより、動的に作成した親のJSPと連携して、子のJSPを作成することができます。
1 | <jsp:param name="パラメータ名" value="パラメータ値" /> |
インクルードするJSPに値を渡すサンプル
oya.jsp(インクルードする親JSP)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 親のJSP<br> <jsp:include page="ko.jsp"> <jsp:param name="param1" value="value1" /> <jsp:param name="param2" value="value2" /> </jsp:include> </body> </html> |
1 2 3 4 5 6 7 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 子のJSP<br> 1つめ:<%= request.getParameter("param1") %><br> 2つめ:<%= request.getParameter("param2") %> |
実行結果
1 2 3 4 | 親のJSP 子のJSP 1つめ:value1 2つめ:value2 |