11

フレームワークのないJavaアプリケーションがあります。これは、ビュー用の jsp ファイルとビジネス ロジック用のサーブレットで構成されます。ユーザー セッションが firstName パラメータを持つサーブレットであることを設定する必要があります。jsp ファイルで、firstName パラメーターに値があるかどうかを確認する必要があります。firstName パラメータが設定されている場合は、jsp ファイルに HTML を表示する必要があります。設定されていない場合は、jsp ファイルに別の html を表示する必要があります。

サーブレット.java:

HttpSession session = request.getSession();
session.setAttribute("firstName", customer.getFristName());
String url = "/index.jsp";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);

header.jsp:

// Between the <p> tags bellow I need to put some HTML with the following rules
// If firstName exist: Hello ${firstName} <a href="logout.jsp">Log out</a>
// Else: <a href="login.jsp">Login</a> or <a href="register.jsp">Register</a>

<p class="credentials" id="cr"></p>

これを行う最良の方法は何ですか?

アップデート:

誰かが必要な場合に備えて、JSTL で見つけたすばらしいチュートリアルを次に示し ます。

4

3 に答える 3

10
<% if (session.getAttribute("firstName") == null) { %>
    <p> some content </p>
<% } else {%>
    <p> other content </p>
<% } %>
于 2012-11-30T03:16:00.337 に答える
4

それを行う最善の方法は、jstl タグを使用することだと思います。単純な jsp アプリケーションの場合、すべての Java コードを html に追加することをお勧めしますが、より重いアプリケーションでは、html で最小限の Java コードを使用することをお勧めします (ロジックから別のビュー レイヤー) (詳細については、こちらをお読みくださいhttps://stackoverflow. com/a/3180202/2940265 )
あなたの期待のために、次のようなコードを簡単に使用できます

<c:if test="${not empty firstName}">
    <%--If you want to print content from session--%>
    <p>${firstName}</p>

    <%--If you want to include html--%>
<%@include file="/your/path/to/include/file.jsp" %>

    <%--include only get wrong if you give the incorrect file path --%>
</c:if>
<c:if test="${empty firstName}">
    <p>Jaathi mcn Jaathi</p>
</c:if>

jstl を正しく含めなかった場合、期待される出力を得ることができません。そのような事件についてはこれを参照してください https://menukablog.wordpress.com/2016/05/10/add-jstl-tab-library-to-you-project-correctly/

于 2016-10-26T05:03:40.037 に答える
1

サーブレットでは、次のように書くことができます

        HttpSession session = request.getSession(true);
        session.setAttribute("firstName", customer.getFristName())
        response.sendRedirect("index.jsp");

request.getSession(true)セッションが存在しない場合は、新しいセッションが返されます。それ以外の場合は、現在のセッションが返されます。そして、index.jspページでは次のようにできます:

<%
if(session.getAttribute("firstName")==null) {
%>
<jsp:include page="firstPage.html"></jsp:include>
<%
} else {
%>
<jsp:include page="secondPage.html"></jsp:include>
<%
}%>

ここで、firstNameが nullの場合、firstPage.htmlそれ以外の場合はページに含まれますsecondPage.html

于 2012-11-30T05:01:55.467 に答える