質問
私は+スイッチ機能を備えPHPと同等のものを使用して、簡単なJSPのウェブサイトを作成すると、ヘルプ/アドバイスを探しています。
の目標は、私は1つのメインページ内のページを含む複数のJSPを切り替えることができるようにしたいということです。
上記の「関数」の最も単純な形でしょうか?
解決
そこには、 <jsp:include>
のを持っています。あなたはpage
属性を指定するために EL を使用することができます。
のように見える/WEB-INF/main.jsp
ファイルを作成します。
<!doctype html>
<html lang="en">
<head>
<title>Title</title>
</head>
<body>
<jsp:include page="${page}" />
</body>
</html>
あなたは、ページコントローラサーブレットの助けを借りて${page}
値を制御することができます。ような何かます:
public class PageController extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("page", "/WEB-INF" + request.getPathInfo());
request.getRequestDispatcher("/WEB-INF/main.jsp").forward(request, response);
}
}
次のように web.xml
でこのサーブレット地図ます:
<servlet>
<servlet-name>pageController</servlet-name>
<servlet-class>com.example.PageController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>pageController</servlet-name>
<url-pattern>/page/*</url-pattern>
</servlet-mapping>
この方法では、サーブレットはhttp://example.com/context/page/foo.jsp
を通じてアクセス可能であり、このURLの例では、パス情報から/foo.jsp
を取得しますので、page
は何も知っているように、それは/WEB-INF/foo.jsp
としてELに利用可能であるように値${page}
でjsp:include
属性を設定します含める必要があります。厄介なスクリプトレットまたはswitch文の必要はありません。
/WEB-INF/foo.jsp
タグの内側に配置されているかのように <body>
であなただけのHTMLを書き留めることができます。
など部分的にしかコンテンツを(返す例/WEB-INF
用として、JSPファイルはhttp://example.com/context/foo.jsp
に配置され、これは、ユーザーがページのコントローラを経由せずにそれらを要求することができないようにURLで直接アクセスを防止するためにそうしていることに注意してください-含まれるページ)。
この情報がお役に立てば幸いです。
他のヒント
試してみてください。
<% if ( expression1 ) { %>
<%@ include file="file1.jspf" %>
<% } else if(expression2) { %>
<%@ include file="file2.jspf" %>
<% } %>
それとも、あなたはオプションを持っている場合、JSF2および/またはFaceletsのをチェックしてください。これは、はるかに強力なテンプレート機能を持っています。