Redirección de solicitudes de servlet

Solicitar redireccionamiento

  • Hay dos esquemas para la redirección de solicitudes, pero se recomienda encarecidamente el segundo esquema, y ​​el código es conciso.

  • Características de la redirección de solicitudes:

    1. La redirección de solicitudes realizará dos solicitudes.
    2. La redirección de solicitudes no compartirá datos en el campo Solicitud. Porque cada vez que se solicite, se encapsulará por separado.
    3. La redirección de solicitudes no puede acceder a los recursos en WEB-INF, la redirección de solicitudes sí puede.
    4. La redirección de solicitudes puede acceder a recursos fuera del proyecto, como Baidu. Y no se puede acceder al reenvío de solicitudes (es decir, no puede ser saliente)

Opcion uno:

//设置响应码 302 表示重定向
resp.setStatus(302);
//设置响应头,并设置重定向的地址
resp.setHeader("Location","http://localhost:8080/06-servlet/response2");
P.ej:
public class Response1 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	System.out.println("曾到此一游,Response1");

		// 设置响应状态码 302 表示重定向,(已搬迁)
    	resp.setStatus(302);
    	// 设置响应头说明新的地址在哪
    	resp.setHeader("Location","http://localhost:8080/06-servlet/response2");*

	}
}


public class Response2 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	resp.setContentType("text/html; Charset=UTF-8");
    	resp.getWriter().write("已请求重定向到response2,这是response2处理的业务代码");
	}
}

Configuración en web.xml:

<servlet>
    <servlet-name>Response1</servlet-name>
    <servlet-class>com.servlet.Response1</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Response1</servlet-name>
    <url-pattern>/response1</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>Response2</servlet-name>
    <servlet-class>com.servlet.Response2</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Response2</servlet-name>
    <url-pattern>/response2</url-pattern>
</servlet-mapping>

Inserte la descripción de la imagen aquí

Opción dos (muy recomendable):

//请求重定向
resp.sendRedirect("http://www.baidu.com");

P.ej:

public class Response1 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("曾到此一游,Response1");

    //请求重定向
    resp.sendRedirect("http://www.baidu.com");
	}
}

Configuración en web.xml:

<servlet>
    <servlet-name>Response1</servlet-name>
    <servlet-class>com.servlet.Response1</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Response1</servlet-name>
    <url-pattern>/response1</url-pattern>
</servlet-mapping>

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_45796486/article/details/114222181
Recomendado
Clasificación