Tabla de contenido
Solicitud de reenvío y solicitud de problemas de ruta de redirección
-
solicitud de reenvío
Reenvío de solicitudes : el cliente envía una solicitud y, después de ser procesada por el servidor, reenvía una página web frontal u otro Servlet, que es esencialmente la misma solicitud y compartirá los datos en el dominio de la solicitud.
Características:
- La barra de direcciones del navegador no cambia.
- No importa cuántas veces se haya reenviado, es la misma solicitud
- Comparten datos en el dominio de solicitud
- Se puede reenviar al directorio WEB-INF
- Sin acceso directo a archivos externos
La dirección predeterminada en el Servlet del servidor Tomcat: http://ip:8080/nombre del proyecto
La ruta comienza con una barra inclinada para representar una ruta absoluta; de lo contrario, es una ruta relativa
La primera barra en la ruta representa: http://ip:8080/nombre del proyecto
caso:
html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Título</title> </head> <body> <form action="/web02/servlet1 " method="get"> 账号: <input type="text" name="username"><br> 密码: <input type="password" name="password"><br> 兴趣爱好<input type=" radio" name="hobby" value="美女">美女<input type="radio" name="hobby" value="帅哥">帅哥<br> <input type="enviar"> </formulario> < / cuerpo> </html>
servlet:
public class servlet1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //Obtener el parámetro solicitado String nombre de usuario = req.getParameter("username"); String contraseña = req.get Parámetro(" contraseña "); System.out.println(nombre de usuario+"\t"+contraseña); //Solicitud de sello 1 (establecer variables globales) req.setAttribute("clave","completar"); //Reenvío de solicitud: no se puede completar Salto externo, puede acceder a recursos internos, //req.getRequestDispatcher("/servlet2").forward(req,resp); req.getRequestDispatcher("http://www.baidu.com").forward(req,resp) ); // Solicitar redirección. Se pueden implementar saltos externos. //resp.sendRedirect("http://www.baidu.com"); } }
Error de reenvío de solicitud para acceder a recursos externos:
Estado HTTP 404 - /web02/http://www.baidu.com
tipo Informe de estado
mensaje /web02/http://www.baidu.com
descripción El recurso solicitado no está disponible.
Apache Tomcat/8.0.50
-
solicitar redirección
Solicitar redirección: el cliente envía una solicitud al servidor y luego el servidor devuelve una nueva dirección al cliente para solicitar la nueva dirección. Esencialmente dos solicitudes diferentes.
Características:
- La barra de direcciones del navegador cambiará
- Esencialmente dos solicitudes diferentes
- No comparta datos en los campos de solicitud
- No se puede acceder a los recursos en WEB-INF
- Puede acceder a recursos fuera del proyecto
caso:
El código de front-end es el mismo que el anterior.
clase pública servlet1 extiende HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); 8"); / /Obtenga la cadena de parámetros solicitada username = req.getParameter("username"); String password = req.getParameter("password"); System.out.println(username+"\t"+password); //Sello de solicitud 1 ( establecer variable global) req.setAttribute("key","complete"); //saltar a servlet2 // req.getRequestDispatcher("WEB-INF/form.jsp").forward(req,resp); // req.getRequestDispatcher("http://www.baidu.com").forward(req,resp); // resp.sendRedirect("WEB-INF/table.jsp"); resp.sendRedirect("http://www.baidu.com"); } }
El acceso a WEB-INF informa de un error y el acceso al sitio web de Baidu puede ser exitoso.
-
Solicitud de reenvío y solicitud de problemas de ruta de redirección
- Ruta absoluta: comienza con /
El / de redirección de solicitud significa: http://ip del servidor: puerto/
respuesta.sendRedirect("/servlet2");
la dirección es: http://localhost:8080/servlet2
El / para el reenvío de solicitudes significa: http://ip del servidor:puerto/nombre del proyecto
request.getRequestDispatcher("/servlet2").forward(solicitud, respuesta);
la dirección es: http://localhost:8080/nombre del proyecto/ servlet2
camino relativo:
Solicitud de redirección: respuesta.sendRedirect("servlet2")
Genere una ruta relativa: http://localhost:8080/nombre del proyecto/servlet2
Reenvío de solicitudes: generar una URL completa en el caso de una ruta relativa es lo mismo que redirigir