Hay muchos artículos sobre el uso de la configuración de SpringMVC, pero no muchos se describen claramente. Aquí presentamos principalmente el uso de elementos de configuración de uso común y sus clases de análisis. Hay dos formas de procesar contenido en SpringMVC, uno es convertidor y el otro es ViewResolver. Ambos pueden manejar formatos de contenido JSON, XML y formar.
<? xml versión = "1.0" encoding = "utf-8" standalone = "no"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://www.springframework.org/schema/context" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: mvc = "http://www.springframework.org/schema/mvc" xmls: p = "http://wwww.springframework.org/schemS" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: util = "http://www.springframework.org/schema/util" xmlns: c = "http://wwww.springframework.org/schema/sc" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/context http://www.springingwork.org/schema/conteN http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd "<! Controlador, la configuración debe cargarse, ya que generalmente esta configuración está cargada por el compatimiento y no está en el mismo contexto que la clase de escucha de primavera. Si desea saber el motivo, consulte http://blog.csdn.net/strivezxq/article/details/43795081 Este artículo analiza el proceso de inicialización de primavera en detalle-> <context: Property-placeLoLder Ubicación = "classpath: App.Properties"/> <!-ScanSpath para los componentes de clases para anotados @Component, @service, @Service, @Service, @Service, @Service, @Service, @Serve y @Controller Use-Default-Filters = "False", puede establecer qué comentarios solo están escaneados. En general, la configuración de SpringMVC solo carga los siguientes dos comentarios-> <context: component-scan base-pakage = "your.base.package" use-default-Filters = "false"> <context: include-Filter type = "annotation" expresion = "org.springetwork.steretype.controller"/> <context: incluir filter type = "annotationation" " expresión = "org.springframework.web.bind.annotation.controllerAdvice"/> </context: component-scan> <!-<context: component-scan annotation-config = "true"> ya contiene la función de context: anotation-configr, por lo que es básicamente la necesidad de configurar esta configuración, activado varias anotaciones detectadas en la clasificación de anotación: spring @sidroy @AUtowired, así como a @PostConstruct, @Predestroy y @Resource (si está disponible), jax-ws @WebServiceRef (si está disponible), EJB3 @EJB (si disponible) y JPA @PersistenContextExt y @PersistenceUnit (si está disponible) org.springframework.web.servlet.resource.defaultservlethttprequesthandler en el contexto de primavera MVC. Proyectará la URL que ingresa al despachador de servidores como un inspector. Si se encuentra que es un recurso estático, la solicitud se transferirá al servlet predeterminado del servidor de aplicaciones web. Si no es una solicitud de recursos estáticos, el desplazamiento del servidor de los pies continuará procesando. El nombre de servlet predeterminado de un servidor de aplicaciones web es "predeterminado", por lo que defaultservLethttpRequestHandler puede encontrarlo. Si el nombre de servlet predeterminado de todos sus servidores de aplicaciones web no es "predeterminada", debe mostrar el atributo especificado a través del atributo de nombre de servicio predeterminado: <mvc: predeterminado-servlet-handler predeterminado-servlet-name = "El nombre de servlet predeterminado utilizado por el servidor web" /> tomcat, jetty, jboss y el nombre predeterminado de peces de vidrio predeterminado, eg: web.xml 1. <Servlet-mapping> 2. <Servlet-name> default </servlet-name> 3. <url-pattern>*. jpg </sl-Pattern> 4. </servlet-mapping> 5. <servlet-mapping> 6. <ervlet-name> default </servlet-name> 7. <url-pattern>*. js </sl-pattern> 8. </servlet-mappes> 9. <ervlet-mapping> 10. <Servlet-name> predeterminado </servlet-name> 11. <url-pattern>*. CSS </ url-Pattern> 12. </servlet-mapping> Si SpringDefault-Servlet-Name no está configurado, la configuración predeterminada se admitirá, y los servidores web comúnmente utilizados ya están admitidos-> <MVC: Servlet Servlet -handler/> <<! org.springframework.web.servlet.resource.resourcehttprequesthandler <bean id = "resourcehtprequesthandler"> <propiedad de propiedad = "ubicaciones" valor = "classpath:/meta -inf/recursos/"> </protper> </ bean> <bean> <name de la propiedad = "mapas"> <props> <props> <pps> <props> <props> Key = "/Resources/**"> ResourcehttpRequestHandler </prop> </props> </property> </bean> La siguiente implementación de la etiqueta-> <mvc: asignación de recursos = "/recursos/**" ubicación = "/recursos/"> </mvc: recursos> <!-registre "global" intereptor beans para aplicar a todas las handlermapps registradas. Cada inteceptor debe implementar el org.springframework.web.servlet.handlerinterceptor o org.springframework.web.context.request.webrequestinterceptor interface-> <mvc: interceptores> <mvc: interceptor> <mvc: mapping ruta = " /**" /> <mvc: excluir-asignación ruta = "/css/**"/> <mvc: excluir mapping ruta = "/js/**"/> <mvc: excluir mapping ruta = "/images/**"/> <bean/> </mvc: interceptor> </mvc: interceptors> <!-Enciende el soporte para el soporte de las solicitudes de mapeo a mvc @Controller Métodos también Register @Controllers Configuración de la clase de Parsing: org.springframework.web.servlet.config.annotationDivenDivenDefinitionParser Configuración Content-Segotiation-Anager puede establecer parámetros de tipo de contenido en la url, y el tipo de contenido predeterminado se puede establecer <bean id = "contentNegotiationManagerFactoryBean" P: P: FoalsePathension = "P FALSE" P: "PISE": "verdadero". p: parametername = "format" p: ignoreAcCePPTheader = "true" p: defaultContentType = "Application/Json"> <Property Name = "MediatyPes"> <Props> <Prop Key = "Json"> Application/JSON </PROP> <PR KEY = "XML"> Aplicación/XML </PRIT> </props> </props> </props> </propiedad> <MVC: Content-Negotiation-Anegotiation-Anegotiation de anotación = "ContentNegotiationManagerFactoryBean"> <mvc: mensajes-Converters> <ref bean = "StringHttpMessageConverter" /> <ref Bean = "JSONHTTPMessageConverter" /> <ref Bean = "marshallinghttpMessageConververver" />>>>>>>>>>>>> </mvc:message-converters> </mvc:annotation-driven> <!-- Content Management Factory --> <bean p:favorPathExtension="false" p:favorParameter="true" p:parameterName="format" p:ignoreAcceptHeader="true" p:defaultContentType="application/json"> <property name="mediaTypes"> <props> <prop Key = "Json"> Application/JSON </PR> <PROP KEY = "XML"> Aplicación/XML </prop> </props> </property> </bean> <!- Content Parser, puede configurar el tipo de parámetro de retorno por p: parametername = "format" y configure el tipo de contenido predeterminado de contenido a través de P: DefinteTentType. C: QualityValue = "0.5" puede establecer la prioridad del tipo de contenido. Si MVC: Método de anotación y controla de anotación (@RequestBody), la siguiente configuración no es efectiva-> <reman> <propiedad name = "ContentNegotiationManager" ref = "ContentNegotiationManagerFactoryBean"> < /Property> <Property Name = "DefaultViews"> <LaT> <Bean> <Properper Name = "ModelKey" Valor = "ResultvO" /> <<Pertimional <<Propiedad de propiedad. name = "ExtractValueFromSingleKeModel" value = "true"/> </bean> <Bean> <constructor-arg ref = "jaxb2marshaller"/> <propiedad name = "contentType" value = "application/xml"/> </bean> </list> </Property> <!-<name de la propiedad = "ignorenAcepePEPEPEPEPEHEADER" Value = "verdadero" verdadero "verdadero" Vista XML usando un jaxb marshaller-> <bean id = "jaxb2marshaller"> <propiedad name = "marshallerProperties"> <s map> <key de entrada = "jaxb.formatted.output"> <valor type = "boolean"> true </value> </entry> <inying key = "jaxb.coding" value = "utf-8"/> </> </map> </propietaria </propiedad de la propiedad </propiedad de la propiedad </propietaria </mapa> </mAple> </mAple> </propietaria </propietaria </propietaria </mapa> </mapa> </mapa> </mapa> </mapa> </mapa> </mapa> </mapa> </mapa> </mapa> </MATION> </MATION <POTERY <POTERY name = "Packagescan"> <List> <Value> com.api.domain </value> <value> com.api.web.controller.vo </value> </list> </property> </bean> <bean id = "jstlviewRresolver"> <name de propiedad = "orden" valor = "2"/> <nombre de propiedad = "Viewclass" value = "org.springframework.web.servlet.view.jstlview" /> <propiedad name = "prefix" value = " /vistas /" /> <propiedad name = "sufix" valor = "" /> <propiedad name = "requestContextattribute" value = "rc" /> < /beon> <!- c: QualityValue = "0.5" puede establecer el contenido de los tipos de contenido. El valor predeterminado es 1.0. Cuanto mayor sea la prioridad, mayor será la prioridad-> <bean id = "stringHttpMessageConverter"> <Property name = "SupportedMediatyPes"> <List> <value> Text/Plain; Charset = Utf-8 </valor> <valor> text/html; charset = utf-8 </value> </list> </spertity> </Bean> <Bean Id = "jsonhtttttttT /> <bean id = "marshallinghttpMessageConverter"> <constructor-arg ref = "jaxb2marshaller" /> <!-<propiedad name = "soportedmediatypes" value = "application /xml"> < /Property>-> <Property Name = "SupportedMediatyPes"> <Util: LIST> <Bean C: Type = "Aplicación" C: Subtyle "C: Subtyle" C: "XMM". C: QualityValue = "0.5"/> </util: List> </property> </ Bean>
SpringMVC devuelve los pasos de configuración de JSON de la siguiente manera:
1. Agregue el paquete Jackson.jar
2. Agregue el siguiente código al archivo de configuración ApplicationContext.xml
< <valor> text/html; charset = utf-8 </alue> </list> </property> </bean>
3. Agregue el siguiente código al controlador
@RequestMapping (value = "/chino/listtree", método = requestmethod.post) @ResponseBody Lista pública GetListChinese (modelo modelo) {list <serer> list = (list <CheSecategory>) CommonMgr.Find ("del usuario"); lista de devolución; }El valor de retorno puede ser tipo o tipo de mapa
Resumir
Lo anterior es todo el contenido de este artículo sobre las configuraciones comúnmente utilizadas y las clases de análisis de Spring. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a este sitio:
Explicación detallada del código para inyectar el valor del atributo usando archivos de configuración y @Value en Spring
Análisis del problema de escanear múltiples paquetes en la configuración de Spring
Explicación detallada del ciclo de vida del uso de la configuración de primavera
Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!