Los interceptores a menudo se usan en MVC de primavera. Al configurar rutas que necesitan ser interceptadas, a menudo se usa el <MVC: Mapeo/> Sub-etiqueta. Tiene un atributo de ruta, que se utiliza para especificar las rutas que necesitan ser interceptadas. Por ejemplo:
<mvc: interceptor> <mvc: maping ruta = "/**"/> <bean/> </mvc: interceptor> </mvc: interceptor>
Según la configuración anterior, este interceptor intercepta todas las solicitudes.
La coincidencia de rutas en Spring MVC es mucho más flexible que la Web.xml estándar. La política predeterminada implementa org.springframework.util.antpathmatcher. Tal como su nombre lo sugiere, el patrón de ruta usa la ruta de estilo Apache Ant. Hay tres métodos de coincidencia de comodines para rutas de estilo de hormiga apache (en la lista de la tabla a continuación). Estos pueden combinar muchos patrones de ruta flexibles.
Tabla Ant Frunk Comportscard personajes
Comodín | Descripción |
| ? | Coincidir con cualquier personaje |
| * | Match 0 o cualquier número de caracteres |
| ** | Coincidir con 0 o más directorios |
Tabla Ejemplo de patrones de ruta de estilo hormiga
| Camino | Descripción |
| /app/*.x | Coincide con todos los archivos .x en la ruta de la aplicación |
| /App/P? Ttern | Partidos /App /Pattern y /App /Pxttern, pero no /App /Pttern |
| /**/ejemplo | Coincidencias /app /ejemplo, /app /foo /ejemplo y /ejemplo |
| /App/**/Dir/File. | Partidos /app/dir/file.jsp, /app/foo/dir/file.html, /app/foo/bar/dir/file.pdf, y /app/dir/file.java |
| /**/*.jsp | Coincide con cualquier archivo .jsp |
A mano
Una aplicación web básicamente depende de la asignación entre la URL y el procesador de solicitudes, y lo mismo es cierto para Spring MVC, pero Spring MVC es como todo lo que hace Spring (traductor: flexible, puede configurar todo tipo de cosas, pero también crea mucha complejidad). Ciertamente, no solo hay una forma de mapear la relación entre la URL y el controlador, y de hecho, le permite crear reglas e implementaciones de mapeo usted mismo, en lugar de depender de los mapeos de URL.
Spring proporciona procesamiento de mapeo de URL, y el orden y el método de los patrones de ruta de procesamiento no se limitan a ninguna interfaz. Implementación predeterminada de Spring MVC org.springframework.web.servlet.handler. ResumenRlHandlermapping coincidirá con una ruta con el patrón de ruta más largo.
Por ejemplo: dada una solicitud es /app/dir/file.jsp y ahora hay dos patrones de coincidencia de rutas /**/*.jsp y /app/dir/*.jsp, entonces, ¿qué patrón coincidirá con URL? El último patrón /app/dir/*.jsp se correspondirá con el principio de los personajes más largos, que tiene más caracteres que /**/*.jsp. Tenga en cuenta que este principio no se especifica en ninguna interfaz de alto nivel, pero es un detalle de implementación.
BeanNameUrlHandlermapping
La implementación de la estrategia de mapeo predeterminada es la clase org.springframework.web.servlet.handler.beanNameUrlHandlermapping. Esta clase requiere que cualquier frijol que sea posible para manejar la solicitud debe tener un nombre o alias que comience con el carácter de barra invertida (/). Este nombre o alias puede ser cualquier nombre que cumpla con el principio de coincidencia de ruta de URL.
Listado de un controlador mapeado por un nombre de frijol
código XML
<bean name = "/home"> <Propert Name = "FlightService" ref = "FlightService"/> </ Bean>
■ Nota: no puede usar el atributo de identificación para especificar ninguna ruta de URL, porque (/) caracteres están prohibidos en las especificaciones XML para especificar la ID del XML, pero puede tener atributos de ID y nombre en una definición de frijol.
Es muy fácil de usar y tiene algunas desventajas. No puede aludir a un prototipo de frijol. En otras palabras, cuando se usa BeanNameUrlHandlermapping, todas las clases de procesamiento de solicitudes solo pueden ser solteros. En términos generales, los controladores se establecen según singletons, por lo que este no es un problema muy grave. Además, introduciré controladores en los siguientes capítulos, y solo habrá pocos tipos de controladores que necesiten ser prototipos.
■ Nota: Prototype Bean es un frijol no singleton. Cada vez que se llama al método getBean () de ApplicationContext, se devolverá una nueva instancia de Bean.
Otro problema con BeanNameUrlHandlermapping es que el interceptor se aplica en su aplicación. Debido a que el mapa solicitado y el mapa de imitación de frijoles están unidos y no están separados, es imposible crear relaciones complejas entre el controlador y el interceptor. Si tiene requisitos de mapeo de solicitudes complejos, puede usar SimpleUrlHandLermapping en lugar de BeanNameUrlHandlermapping. SimpleUrlHandlermapping es otra opción para BeanNameUrlHandlermapping. SimpleUrlHandlermapping apunta directamente a las dos debilidades principales de BeanNameUrlHandlermapping. Puede asignar procesadores de solicitud de tipo prototipo, y le permite crear rutas de mapeo complejas y flexibles entre manejadores e interceptores. El algoritmo de mapeo utiliza los mismos componentes básicos que BeanNameUrlHandlermapping, por lo que este patrón aún debe asignar URL para solicitar manejadores (solicitar controladores), simplemente puede declararlo en el ApplicationContext y usar SimpleUrlHandlermapping. El desplazamiento del servidor se encontrará de acuerdo con el tipo y no creará el mapeador predeterminado (beanNameUrlHandlermapping). Esto significa que si desea usar ambos, debe declararlo todo en el aplicaciones de AplicationContext.
■ La solicitud de desplazamiento de compatibilidad se encargará de las solicitudes de la cadena (traductor: solicitudes de proceso en secuencia, puede consultar la cadena de modo de responsabilidad en filtros y gofs), lo que permite que los asignaciones se procesen de acuerdo con sus requisitos. El procesador de mapeo (asignaciones de controladores) implementa la interfaz OrderedR.
Lo anterior es todo el contenido de este artículo sobre la explicación detallada del principio de coincidencia de la ruta MVC de primavera, espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!