0

別の JSP ファイルを含む JSP ファイルがあります。それらの両方で、特別な変数が必要です。これは、他の JSP を含む JSP のコードの一部です。

<%String logged = request.getParameter("logged");
out.print(
 "<h3> Auftragliste </h3>" + "Eingeloggt als: "
+ logged
+ "<br /><hr /><br />");
%>

<!-- DAS IST DIE EIGENTLICHE AUFTRAGLISTE, INNERHALB DES DIVS -->
<div id="AutoUpdte">
    <jsp:include page="AuftragListe.jsp" />
</div>

この「ログに記録された」リクエストは正常に機能します。含まれている JSP の一部を次に示します。

+ "<form method='POST' "
        + "name='Auftrag"
        + i
        + "' action='Annehmen'>"
        + "<input type='hidden' name='ID' value='"
        + auftraege.get(i).ID
        + "' />"
        + "<input type='hidden' name='von' value='"
        + auftraege.get(i).von
        + "' />"
        + "<input type='hidden' name='nach' value='"
        + auftraege.get(i).nach
        + "' />"
        + "<input type='hidden' name='object' value='"
        + auftraege.get(i).object
        + "' />"
        + "<input type='hidden' name='reward' value='"
        + auftraege.get(i).reward
        + "' />"
        + "<input type='hidden' name='logged' value='"
        + logged
        + "'>"
        + "<center>"
        + "<input class='auftragannehmen' type='submit' value=''/> "
        + "</center>"
        + "</form>"

この JSP では、上で行ったように変数「logged」を要求します。しかし、ボタンをクリックしてフォームが開始されると、次のステップで「ログに記録された」変数にアクセスできません。

私の間違いはどこですか?

ありがとうございました!

編集:含まれているJSPは間違いなく変数にアクセスできません。しかし、どうやってこの変数にアクセスできるのでしょうか?

4

2 に答える 2

0

リクエスト属性を使用して「ログに記録された」値を渡します

request.setAttribute("myLogged",logged);

次のように、含まれている JSP ファイルの属性値を読み取ります。

String logged = request.getAttribute("myLogged");

あるいは単に

 ${myLogged}
于 2012-07-07T02:16:47.090 に答える
0

通常、リクエストは、リクエストを処理するすべてのサーブレットおよび JSP からアクセス可能でなければならない属性を格納するために使用されます。ただし、ここでは、変数はリクエスト パラメータの値であるため、不要です。request.getParameter("logged")親 JSP と同じように使用してください。

とはいえ、あなたは JSP を使用するポイントを完全に見逃しているようです。それは、Java コードと醜い文字列連結 (サーブレットから直接実行できる) を使用して HTML マークアップを生成することを避けることです。JSTL と JSP EL を学び、JSP で疫病のようなスクリプトレットを回避します。たとえば、最初のスクリプトレットは次のように書き直す必要があります。

<h3> Auftragliste </h3>
Eingeloggt als: <c:out value="${param.logged}"/>
<br /><hr /><br />

here を使用すると<c:out>、パラメーターが適切に HTML エスケープされるため、あらゆる種類の XSS 攻撃が回避されることに注意してください。

于 2012-07-05T17:07:21.653 に答える