Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo redirigir en Spring MVC

Cómo redirigir en Spring MVC

Los métodos de solicitud SpringMvc se dividen en reenvío y redirección, que se procesan en la capa del controlador utilizando las palabras clave reenviar y redireccionar.

El siguiente código implementa estos dos métodos de solicitud diferentes:

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.stereotype .Controller ; importar org.springframework.ui.Model; importar org.springframework.web.bind.annotation.RequestMapping; importar org.springframework.web.bind.annotation.RequestParam; ;

@Controllerpublic class HelloController {

/**

* Formulario de reenvío

* @param nombre

* @param model

* @return

*/

@RequestMapping("/helloForward") public String helloForward(@RequestParam(value= "nombre ", require=false, defaultValue="World2017") Nombre de cadena, Modelo modelo) {

model.addAttribute("name", name); return "hello";

}

@RequestMapping("/hola") public String hola() {

return "hola";

}

/* *

* Utilice la clase RedirectAttributes

* @param nombre

* @param redirigirAttributes

* @return

*/

@RequestMapping("/helloRedirect") public String helloRedirect(@RequestParam(value="name", require=false) Nombre de cadena, RedirectAttributes redirigirAttributes) {

redirigirAttributes.addFlashAttribute("nombre", nombre);

return "redirect:/hola";

}

@RequestMapping("/hola2") public String hola2(Modelo modelo, solicitud HttpServletRequest) {

HttpSession session = request.getSession();

model.a

ddAttribute("nombre", session.getAttribute("nombre")); return "hola";

}

/**

* Práctica convencional, Coloque los parámetros en la sesión antes de la redirección. En el controlador después de la redirección, saque los parámetros de la sesión y colóquelos en ModelAndView

* @param name

* @param request.

* @return

*/

@RequestMapping("/helloRedirect2") public String helloRedirect2(@RequestParam(value="nombre", requerido=false ) Nombre de cadena, solicitud HttpServletRequest) {

request.getSession().setAttribute("nombre", nombre);

return "redirect:/hello2";

}

}

El enlace URL solicitado cambia cuando se usa la redirección para la redirección y en el controlador, si es como recompensa?model.addAttribute("name", name ) no se puede obtener después de la redirección, por lo que la redirección requiere otra forma de transferir parámetros. El programa anterior introduce dos formas de transferir parámetros en la redirección:

① Coloque los parámetros en la sesión antes de la redirección. de la sesión y colóquelos en ModelAndView en el controlador después de la redirección

② Utilice la clase RedirectAttributes. Este método de implementación es relativamente simple.

Resumamos la diferencia entre reenviar request.getRequestDispatcher().forward() y redireccionar respuesta.sendRedirect() en servlet:

① El reenvío es una solicitud y una respuesta. son dos solicitudes y dos respuestas

②. Reenvío: servlet y jsp*** comparten una solicitud. Redirección: las dos solicitudes son independientes, por lo que cualquier setAttribute() en la solicitud anterior no se puede obtener en las siguientes. solicitudes

③. Reenvío: la barra de direcciones no cambiará, redirección: la barra de direcciones cambiará.