2

PHP の include+switch 関数と同等のものを使用して単純な JSP Web サイトを作成するためのヘルプ/アドバイスを探しています。

目標は、1 つのメイン ページで複数の JSP インクルード ページを切り替えられるようにすることです。

上記の「関数」の最も単純な形式は何でしょうか?

4

2 に答える 2

5

そこに<jsp:include>for があります。ELを使用してpage属性を指定できます。

/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、pathinfo から取得し、page属性に値を設定/WEB-INF/foo.jspして EL で使用できる${page}ようにし、jsp:include含める必要があるものを認識できるようにします。面倒なスクリプトレットや switch ステートメントは必要ありません。

では、HTMLタグ/WEB-INF/foo.jsp内に配置されているかのように、HTML を書き留めることができます。<body>

JSP ファイルは に配置されていることに注意してください/WEB-INF。これは、URL による直接アクセスを防止するために行われます。これにより、ユーザーはページ コントローラーを介さずにそれらを要求することができなくなります。たとえばhttp://example.com/context/foo.jsp、部分的なコンテンツ (to-be-同梱ページ)。

お役に立てれば。

于 2009-12-19T00:12:42.580 に答える
1

試す

<%  if ( expression1 ) { %>
    <%@ include file="file1.jspf" %>
<% } else if(expression2) { %>
    <%@ include file="file2.jspf" %>
<% } %>

または、オプションがある場合は、JSF2 および/または Facelets をチェックしてください。はるかに強力なテンプレート機能があります。

于 2009-12-19T00:05:27.740 に答える