2011-12-21 15 views
11

Sto utilizzando il servlet che mi reindirizza con l'aiuto diCome ottenere il precedente URL della pagina da richiesta servlet dopo dispatcher.forward (richiesta, risposta)

dispatcher.forward(request, response); 

alla fine. Ma dopo questo voglio ottenere la pagina (percorso) da cui sono stato reindirizzato per usarlo nel prossimo comando servlet (per andare alla pagina precedente). Come posso averlo? Oppure l'URL precedente non è contenuto nei parametri di richiesta e dovrei aggiungerlo io stesso? Ti sarò molto grato per il tuo aiuto.

risposta

-1

è possibile memorizzare quello url in HttpSession e recuperarlo nella prossima servlet quando è necessario.

+0

E è l'unico modo? – And

+0

tanto so che questo dovrebbe essere un bel modo. –

0

Qualsiasi metodo restituirà URL di origine quando si fa avanti (..) quindi il mio la soluzione è definire un filtro per sto re requestURL() in un attributo di richiesta per verificare in seguito. Per fare questo nella tua scrittura web.xml:

... 
<filter> 
    <filter-name>MyFilter</filter-name> 
    <filter-class>my.package.CustomFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>MyFilter</filter-name> 
    <url-pattern>*</url-pattern> 
</filter-mapping> 
... 

Poi nel CustomFilter classe:

public class CustomFilter implements Filter { 

    @Override 
    public void init(FilterConfig filterConfig) throws ServletException {} 

    @Override 
    public void destroy() {} 

    @Override 
    public void doFilter(ServletRequest req, ServletResponse rsp, 
      FilterChain chain) throws IOException, ServletException { 
     req.setAttribute("OriginURL", req.getRequestURL().toString()); 
     chain.doFilter(req, rsp); 
    } 
} 

allora si può ottenere ovunque nel codice con ServletRequest oggetto con:

request.getAttribute("OriginURL").toString(); 
Problemi correlati