0

r.jspユーザーの詳細を入力できる登録ページ ( ) を作成しました。送信ボタンをクリックすると、サーブレットがヒットし、ビジネス ロジックが実行されます。成功した場合は にリダイレクトし、x.jsp失敗した場合は にリダイレクトしr.jspます。

私が抱えている問題は、障害が発生して にリダイレクトさr.jspれ、ユーザーが入力したデータが失われることです。残しておきたいと思います。

以下は、サーブレットで実行しているコードです。

if (appResponse.getMessageStatus().equalsIgnoreCase(AppConstants.SUCCESS)) {
    request.setAttribute("message", appResponse.getMessage());
    url = "/x.jsp";
} else {
    request.setAttribute("message", appResponse.getMessage());
    url = "/r.jsp";
}
RequestDispatcher dispatcher = request.getRequestDispatcher(url);
dispatcher.forward(request, response);
4

1 に答える 1

3

入力要素のリクエスト パラメータ マップから送信された値を再表示するだけです。リクエスト パラメータ マップは、によって利用可能な JSP/EL にあります${param}

<input name="foo" value="${fn:escapeXml(param.foo)}" />
<input name="bar" value="${fn:escapeXml(param.bar)}" />
<input name="baz" value="${fn:escapeXml(param.baz)}" />

XSS 攻撃を防ぐには、 JSTL が必須であることに注意してください。fn:escapeXml()省略できますが、そうするとXSS ホールができます。

<input name="foo" value="${param.foo}" />
<input name="bar" value="${param.bar}" />
<input name="baz" value="${param.baz}" />

以下も参照してください。


具体的な問題とは関係ありませんが、まったくリダイレ​​クトしていません。あなたはただ転送しています。ただし、送信が成功した場合は、F5 キーを押したときに二重送信を回避するために、実際にリダイレクトする必要があります ( PRG パターンに従って)。

以下も参照してください。

于 2013-02-22T19:15:27.283 に答える