3

Web コンテナー認証によって保護された Web サービスを使用する Java EE プロジェクトがあります。(HTTP-basic) (このコンテキストでは、Web サービスはサーブレットであると言えます) A は、サーブレットの応答ヘッダーを変更したいと考えています。ユーザー認証が失敗した場合に応答オブジェクトにアクセスしたいので、サーブレットフィルターを使用するのは良い解決策ではありません。(この場合、サーブレット フィルターはコンテナーによって呼び出されないため、実行されません)

その理由は、HTTP ステータス コード 401 と 403 を変更したいからです。これは、クライアントが Web Start によって配布され、javaws がクライアント アプリケーションの要求ヘッダーを変更できないようにするためです。

ServletRequestListenerリスナーがありますが、リクエストではなくレスポンスオブジェクトにアクセスしたいので、私には適していません。

ありがとう。

4

1 に答える 1

1

entendanswerをコピーするだけです

web.xmlの場合:

<error-page>
    <error-code>401</error-code>
    <location>/error.jsp</location>
</error-page>

error.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <%
        int status = response.getStatus();
        if (status == 401) {
            response.setStatus(403);
        }
        %>
    </body>
</html>
于 2013-02-06T20:18:41.283 に答える