Listado completo de tutoriales

107 - Redireccionamiento a otro sitio o página desde un servlet


Problema:

Confeccionar un formulario html que solicite el ingreso de un sitio web. Cuando se presione un botón redireccione a dicha web.

Crearemos un proyecto llamado proyectoservlet5 y dentro del mismo un archivo HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="get" action="Redireccionamiento">
Ingrese la dirección de la página que quiere visitar(Ej. www.google.com):
<input type="text" name="direccion" size="60">
<br>
<input type="submit" value="Ir">
</form>
</body>
</html>
Como vemos cuando se presiona el botón submit se envían los datos al servlet llamado Redireccionamiento:

<form method="get" action="Redireccionamiento">

Creamos ahora un servlet llamado Redireccionamiento:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Redireccionamiento
 */
@WebServlet("/Redireccionamiento")
public class Redireccionamiento extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Redireccionamiento() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String dire=request.getParameter("direccion");
        response.sendRedirect("http://"+dire);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}

Para redireccionar el objeto request de la clase HttpServletRequest tiene un método llamado sendRedirect que le pasamos como parámetro un String con la dirección del sitio que debe devolver el servlet (en lugar del servlet propiamente dicho)

La dirección del sitio a redireccionar la extraemos con el método getParameter como hemos visto:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String dire=request.getParameter("direccion");
        response.sendRedirect("http://"+dire);
    }

Retornar