2011-12-21 19 views
11

estoy usando el servlet que me vuelve a dirigir con la ayuda deCómo obtener el URL de la página anterior, desde la solicitud de servlet después dispatcher.forward (petición y respuesta)

dispatcher.forward(request, response); 

al final. Pero después de esto quiero obtener la página (ruta) desde la que me redireccionaron para usarla en el siguiente comando de servlet (para ir a la página anterior). ¿Cómo podría obtenerlo? O la URL anterior no está incluida en los parámetros de solicitud y debo agregarla yo mismo? Estaría muy agradecido por su ayuda.

Respuesta

-1

puede almacenar ese url en HttpSession y recuperarlo en el próximo servlet cuando lo necesite.

+0

Y ¿es la única manera? – And

+0

tanto que sé que eso es lo que debería ser una buena manera. –

0

Cualquier método devolverá URL de origen cuando lo hace hacia adelante (..) por lo que mi solución es definir un filtro para sto re el requestURL() en un atributo de solicitud para verificar más tarde. Para hacer esto en su escritura 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> 
... 

Luego, en CustomFilter clase:

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); 
    } 
} 

entonces se puede obtener en todas partes en su código con objeto ServletRequest con:

request.getAttribute("OriginURL").toString(); 
Cuestiones relacionadas