wake-up-neo.net

Wie leite ich in einem Servlet-Filter um?

Ich versuche eine Methode zu finden, um meine Anfrage vom Filter zur Anmeldeseite umzuleiten, aber ich weiß nicht, wie ich von Servlet umleiten soll. Ich habe gesucht, aber was ich finde, ist sendRedirect() Methode. Ich kann diese Methode auf meinem Antwortobjekt im Filter nicht finden. Was ist die ursache Wie kann ich das lösen?

49
wasimbhalli

In Filter lautet die Antwort ServletResponse und nicht HttpServletResponse. Führen Sie daher die Umwandlung zu HttpServletResponse durch.

HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendRedirect("/login.jsp");

Wenn Sie einen Kontextpfad verwenden:

httpResponse.sendRedirect(req.getContextPath() + "/login.jsp");

Vergessen Sie auch nicht, am Ende return; Aufzurufen.

73
Dead Programmer

Ich versuche eine Methode zu finden, um meine Anfrage vom Filter zur Anmeldeseite umzuleiten

nicht

Du rufst nur an

chain.doFilter(request, response);

vom Filter und der normale Durchfluss wird fortgesetzt.

Ich kann nicht vom Servlet umleiten

Sie können verwenden

response.sendRedirect(url);

von Servlet umleiten

8
Jigar Joshi

Wenn Sie auch Hash behalten und Parameter abrufen möchten, können Sie so etwas tun (füllen Sie redirectMap bei filter init):

String uri = request.getRequestURI();

String[] uriParts = uri.split("[#?]");
String path = uriParts[0];
String rest = uri.substring(uriParts[0].length());

if(redirectMap.containsKey(path)) {
    response.sendRedirect(redirectMap.get(path) + rest);
} else {
    chain.doFilter(request, response);
}
6
user1079877

Versuche und überprüfe dein ServletResponse response ist ein instanceof HttpServletResponse wie so:

if (response instanceof HttpServletResponse) {
    response.sendRedirect(....);
}
1
Buhake Sindi

Ihr Antwortobjekt wird als ServletResponse deklariert. Um die Methode sendRedirect() zu verwenden, müssen Sie sie in HttpServletResponse umwandeln. Dies ist eine erweiterte Schnittstelle, die Methoden für das HTTP-Protokoll hinzufügt.

0
jan.vdbergh