Este artículo presenta ejemplos de redirección de reenvío e interceptor en SpringMVC. Se comparte contigo, como sigue:
Parámetros variables Al diseñar métodos, usar数据类型... para declarar tipos de parámetros, por ejemplo: public static void function(int... numbers)
Al implementar el cuerpo del método, los parámetros variables se procesan como una matriz
Prueba de clase pública {public static void main (string [] args) {system.out.println (test.sum (1,2,3)); System.out.println (test.sum (1,2,3,4,54)); } public static int sum (int ... números) {int sum = 0; for (int i = 0; i <numbers.length; i ++) {sum+= numbers [i]; } suma de retorno; }}Nota: En cada método, solo se permite 1 parámetro variable como máximo, y si hay un parámetro variable, debe ser el último parámetro.
Reenvío y redireccionamiento
En el método de manejo de solicitudes dentro del controlador, el método predeterminado de devolver una cadena es reenviar. El valor reenviado es el nombre del componente View, como return "Iniciar sesión", que esencialmente obtendrá la página que finalmente se muestra en función del resolución View (ViewResolver). La sintaxis de la redirección de retorno: la ruta representa la redirección. El contenido en el lado derecho de la redirección: es el camino. Esta ruta generalmente usa una ruta relativa, y se hace referencia en función de la ruta en la barra de direcciones del cliente actual como estándar. Por ejemplo, la dirección actual es: http: // localhost: 8080/proyect/user/reg.do, y luego devolver "redirect: login.do", y luego redirigir a http: // localhost: 8080/proyect/user/login.do, si regresa "redirige: /Main/index.do o regreso" redirect: ../in índice. a http: // localhost: 8080/proyecto/main/index.do
adelante:
El método predeterminado, pero también puede usar return "Forward: Iniciar sesión"
La vista devuelta debe ser una vista, que se reenviará a la vista especificada después de pasar por el analizador de vista.
Redirección:
Redirect: return "Redirect: Login.do"
Devuelve una ruta al método del controlador, no una vista. Esto no pasará a través del analizador View, sino que saltará directamente.
Ejemplo
@RequestMapping (value = "/handle_reg.do", método = requestmethod.post) public String HandleReg (usuario de usuario, ModelMap Map) {try {UserService.reg (user); System.out.println ("¡Registrado con éxito!"); return "redirect: login.do"; // redirigir al método de control de login.do, login.do corresponde a reenviar a login.jsp} catch (usernameconflictException e) {system.out.println (e.getMessage ()); map.put ("errorMessage", e.getMessage ()); devolver "error"; }} @RequestMapping (value = "Login.do") public String handLelogin () {return "Login"; }Interceptador
Conceptos básicos
Usando Interceptor
Clase de interceptor personalizado
Cree una clase de Intercept (DemoInterceptor) para implementar la interfaz de HandlerInterceptor
Public Class DemoInterceptoreImlements HandlerInterceptor { /*** llamado antes de que el procesador ejecute* @param request httpservletRequest Object, que puede obtener parámetros de solicitud, etc.* @param respuesta httpServletResponse Object* @param manejador de manejador objeto controlador* @return si falso se devuelve, el flujo de procesamiento de procesamiento será interruptorado y posterior los controladores interrupcados y se producirán los controladores interruptores y se producirán los controladores interruptores y subruptores. Si se devuelve verdadero, se ejecutarán interceptores y procesadores posteriores */ Public Boolean PreHandle (HttpServletRequest Solicitud, respuesta httpServletResponse, Handler de objetos) lanza la excepción {System.out.Println ("Ejecución Prehandler de DemoInterceptor"); devolver verdadero; } / *** llamado después de ejecutar el procesador, y llame antes de saltar a la vista especificada* @param solicitud httpServletRequest Object* @param Respuesta httpServletReSponse Object* @param Respuesta HttpServletResponse Object* @Param Controlador del controlador Objeto* @param ModelandView ModelandView Object, que guarda los resultados de procesamiento y vista de información. Posthandle (HttpServletRequest Solicitud, respuesta httpServletResponse, Handler de objetos, ModelAndView ModelAndView) lanza la excepción { /*** 1. Puede diseñar su propia lógica, por ejemplo, en algunos casos, return False, return True* 2. Return True Significa que el procesador posterior y el Interceptor se ejecutan, return False, interrumpirán el flujo de procesamiento* /Flojo de procesamiento del flujo de procesamiento del flujo de procesamiento del flujo de procesamiento del flujo de procesamiento del flujo de procesamiento del flujo de procesamiento del flujo de procesamiento del flujo de procesamiento del flujo de procesamiento del flujo de procesamiento del flujo de procesamiento del procesamiento del flujo de procesamiento del flujo de procesamiento del flujo de procesamiento. System.out.println ("Handler:"+Handler); System.out.println ("Ejecución posthandler de DemoInterceptor"); // Establecer el nombre de vista, luego, después de completar la ejecución, saltará a la página index.jsp // modelandView.setViewName ("índice"); } /** * Llame * Después de completar el procesamiento de solicitud, public void AfterComppletion (HttpServletRequest Solicitud, respuesta httpServletResponse, manejador de objetos, excepción ex) lanza la excepción {System.out.println ("Ejecutación posterior a la Compilación de Demointerceptor"); }}Configurar en el archivo de configuración de SpringMVC
Configuración
Debe configurarse en el orden anterior, de lo contrario se informará un error
< <mvc: mappingpath = "/user/*"/> <!-Configure el método del controlador que el interceptor no es interceptado por el interceptor, esta es una configuración opcional, como http: // localhost: 8080/springmvc/user/index.do, esto no será interceptado-> <mvc: exclude-mappingpath =/usser/us/us/us/us.Do "/índice" <mvc: excluir mappingpath = "/user/login.do"/> <!-Configure el frijol del interceptor, especificando el nombre de clase completa-> <beanclass = "cn.tedu.spring.interceptor.demointerceptor"> </ bean> </mvc: interceptor> </mvc: intereptores>
El método de implementación
PREHANDLE PÚBLICO BOOLEAN (solicitud httpservletrequest, respuesta httpservletreSponse, manejador de objetos)
Public Void Postthandle (HTTPServletRequest Solicitud, respuesta httpservletResponse, manejador de objetos, modelandview modelandView)
Public void AfterCompletion (HTTPServletRequest Solicitud, respuesta httpservletResponse, manejador de objetos, excepción ex)
Comprobación de inicio de sesión de demostración
Interceptor personalizado (LoginInterceptor)
El proceso específico se escribe muy claramente en el método Prehandler
clase pública LoginInterceptoreMplements HandlerInterceptor { / * * llamado antes de que se ejecute el procesador (no javadoc) * 1. Obtenga la sesión * 2. Lea el valor de UID en la sesión * Si es nulo, significa que no hay inicio de sesión, luego redirige directamente a la interfaz de inicio de sesión y devuelva falso al mismo tiempo. No es necesario ejecutar el proceso posterior* Si no es nulo, significa que se ha iniciado sesión, luego devuelve directamente verdadero y continúe ejecutando el interceptor o procesador posterior*/ public boolean prehandle (httpservletrequest, httpServletResponse respuesta, manejador de objetos) Excepción {httpsession = solicitud.getSession (); // Obtener objeto de sesión uid = session.getAttribute ("uid"); // lee el objeto en la sesión // Si existe UID, entonces puede iniciar sesión y completar si (uid! = Null) {return true; // Devuelve verdadero, si el inicio de sesión es exitoso, debe ejecutar el proceso posterior} respuesta.sendedirect (request.getContextPath ()+"/user/login.do"); // redirigir a la interfaz de inicio de sesión return false; // return false, el proceso posterior no necesita ser ejecutado, y está directamente interrumpido} public void postthandle (httpservletRequest solicitud, httpServletResponse respuesta, manejador de objetos, modelandView model ModelAndView) lanza la excepción {} public void AfterComppletion (HttPservEltRequest Solicitud, HTTTSEVEnSewReseSweweSewe View de excepción, excepción, excepción de la respuesta de excepción, excepción de la excepción, excepción de la excepción de la excepción, excepción de la excepción, excepción de la excepción, excepción de la excepción, excepción de la excepción, excepción de la excepción, excepción de la excepción, excepción, excepción, excepción, excepción, excepción de la excepción). {}}Configurar interceptor en SpringMVC
Dado que aquí solo salta al centro de usuarios y necesita verificar el inicio de sesión, solo coincide con user_center.do
<
Orden de ejecución de múltiples interceptores
Ejecutar de acuerdo con el orden configurado en el archivo de configuración de SpringMVC, es decir, el orden de los interceptores configurados en <MVC: Interceptores>. Si se realiza un interceptor en la misma ruta, entonces el primer primer intertidor configurado
La diferencia entre el interceptor y el filtro (diferencia principal)
Resumir
Los interceptores se pueden usar cuando múltiples solicitudes requieren las mismas tareas o extremadamente similares.
Desarrolle bien un interceptor, luego debe configurarlo en el archivo de configuración de SpringMVC
En <MVC: Interceptores>, si se configuran varios interceptores <MVC: Interceptores>, múltiples interceptores formarán una cadena de interceptor. Si se configuran múltiples interceptores, interceptarán la misma ruta y luego se ejecutarán en el orden de los nodos configurados.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.