2013-03-10 19 views
6

Ho il seguente codice nel metodo doFilter(), dove ottengo il bean con scope dell'applicazione.HttpServletResponse.sendError() non reindirizza alla pagina di errore

if (request.getServletContext().getAttribute("resource")==null) { 
     response.sendError(503); 
     return; 
    } 

Ho mappato il codice 503 alla pagina di errore specifica in web.xml. E ottengo davvero il contenuto della pagina di errore nel browser, se si verifica un errore. Ma l'indirizzo nella barra degli indirizzi non cambia per l'indirizzo della pagina di errore: un indirizzo del servlet richiesto lascia lì. È giusto comportarsi? Vorrei informare in modo esplicito sul reindirizzamento alla pagina di errore. È possibile solo con sendRedirect()?

+2

Perché si desidera modificare l'URL? Perché vuoi che le tue pagine di errore siano pubblicamente accessibili? L'approccio canonico è di tenerli nella cartella '/ WEB-INF' e lasciare che il contenitore lo raggiunga. Il reindirizzamento romperebbe completamente il codice di stato e ingannerebbe i browser e i motori di ricerca sull'accaduto restituendo un 3nn/2nn. Basta ** non ** reindirizzare alla pagina di errore! – BalusC

risposta

3

Questo è il comportamento corretto. Quando si utilizza sendError() risponderà alla richiesta corrente con una pagina di errore. Se si desidera invece che l'URL venga modificato sull'URL della pagina di errore, sarà necessario utilizzare sendRedirect() per rispondere con un reindirizzamento.

Problemi correlati