質問

私は+スイッチ機能を備え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文の必要はありません。

それはHTMLの/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のをチェックしてください。これは、はるかに強力なテンプレート機能を持っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top