Es gibt viele Artikel über die Verwendung der SpringMVC -Konfiguration, aber nicht viele werden klar beschrieben. Hier stellen wir hauptsächlich die Verwendung häufig verwendeter Konfigurationselemente und ihre Parsing -Klassen vor. Es gibt zwei Möglichkeiten, Inhalte in SpringMVC zu verarbeiten, einer ist Konverter und der andere ist ViewResolver. Beide können mit JSON-, XML- und Formatformaten inhaltlich handhaben.
<? xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: mvc = "http://www.spingframework.org/schema/mvc" xmlns: p = "http://wwwww.sprung" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: util = "http://www.spingframework.org/schema XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/context http://www.spingframework.org/schema/context/sping/sping-context- http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/sschema/util/util/util/util/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/aop http://www.springframe.org/schema/aop/aop/aop/aop/spring- Controller muss die Konfiguration geladen werden, da diese Konfiguration im Allgemeinen vom DispatchServlet geladen wird und nicht im selben Kontext wie der Frühlingshörklasse ist. Wenn Sie den Grund wissen möchten, lesen Sie bitte http://blog.csdn.net/strivezxq/article/details/43795081 Dieser Artikel analysiert den Spring-Initialisierungsprozess im Detail-> <context: Property-PlacePlace-Standort @Controller Use-Default-filters = "false" können Sie festlegen, welche Kommentare nur gescannt sind. Im Allgemeinen lädt die SpringMVC-Konfiguration nur die folgenden zwei Kommentare-> <Kontext: Komponenten-scan-Basis-Package = "Your.base expression="org.springframework.web.bind.annotation.ControllerAdvice"/> </context:component-scan> <!-- <context:component-scan annotation-config = "true">It already contains the function of context:annotation-configr, so there is basically no need to configure this configuration, activate various annotations detected in the bean class: Spring's @Required and @Autowired, as well as JSR 250's @PostConstruct, @PreDestroy and @Resource (if available), JAX-WS's @WebServiceRef (if available), EJB3's @EJB (if available), and JPA's @PersistenceContext and @PersistenceUnit (if available) --> <context:annotation-config /> <!-Es wird im Spring MVC-Kontext eine org.springframework.web.servlet.resource.DefaultServletttpRequestHandler definieren. Es wird die URL wie ein Inspektor in den DispatcherServlet untersuchen. Wenn festgestellt wird, dass es sich um eine statische Ressource handelt, wird die Anforderung an den Standardservet des Webanwendungsservers übertragen. Wenn es sich nicht um eine statische Ressourcenanforderung handelt, wird der DispatcherServlet weiter verarbeitet. Der Standard -Servlet -Name eines Webanwendungsservers ist "Standard", sodass defaultServlethttpRequestHandler es finden kann. Wenn der Standard-Servlet-Name aller Ihrer Webanwendungsserver nicht "Standard" ist, müssen Sie die angegebene über das Attribut "Standard-Service-name" angezeigt: <MVC: Standard-Service-Handler-Standard-Service-NAME-NAME = "Der Standard-Servlet-Name, der vom Webserver verwendet wird. <servlet-name> Standard </Servlet-name> 3. <URL-Muster>*. JPG </url-puftern> 4. <servlet-name> Standard </Servlet-name> 11. org.springFramework.web.servlet.resource.resourcehttprequestHandler <bean id = "ressourcehttpRequestHandler"> <Eigenschaft name = "Standorte" value = "classPath:/meta-inf/"> </"Property> </bean> <Dean> Eigenschaftsname =" key = "/ressourcen/**"> ressourcencehttprequestHandler </prop> </props> </property> </bean> Die folgende Tag-Implementierung-> <mvc: ressourcen maping = "/ressourcen/**" location = "/" ressourcen/"> </mvc: ressourcen> <! Jeder Intenzeptor muss den org.springFramework.web.servlet.HandlerInterceptor oder org.springFramework.web.Context.Request.WebRequestInterceTor Interface-> <mvc: Interceptors> <mvc: Interceptor> <mvc: mapcing path = " /**" /<mvc: exkluides mvc: mapcing path = " /**" implementieren. path="/css/**" /> <mvc:exclude-mapping path="/js/**" /> <mvc:exclude-mapping path="/images/**" /> <bean /> </mvc:interceptor> </mvc:interceptors> <!-- Turns on support for mapping requests to Spring MVC @Controller methods Also registers default Formatters and Validators for use In allen @Controllers-Konfigurations-Parsen-Klasse: org.springframework.web.servlet.config.annotationDrivenbeandeFinitionParser-Konfiguration Inhalts-Negotiation-Anager kann Inhaltstypparameter in der URL festlegen, und der Standard-Inhaltstyp kann <Bean id = contentnegotiationStyiationStyper-factoryBeanBean "P: GaVaSexaDesasion =" FalseNegotiationManagerFactoryBean "p:" p: "p:" p. " p:favorParameter="true" p:parameterName="format" p:ignoreAcceptHeader="true" p:defaultContentType="application/json"> <property name="mediaTypes"> <props> <prop key="json">application/json</prop> <prop key="xml">application/xml</prop> </props> </props> < /property> < /bean>-> <mvc: Annotationsgetriebene Inhaltsnegelation-anager = "contentNegotiationManagerFactoryBean"> <mvc: message-converters> <ref bean = "StringHttpMessageConverter" /> <refanhttpMessagEConverter " /> <ref bean =" jsonhttpMesspmessagr. Bean = "MarshallinghttpMessageConverter"/> </mvc: Nachrichtenkonverter> </mvc: Annotationsgetrieben> <!-Content Management Factory-> <Bean p: favorpathextsion = "false" p: favorparameter = "true" p: parametername = "format" p: ignoreaccecceccecceccecceccecceer = "true" true "trueName P: defaultContentType = "application/json"> <Eigenschaftsname = "mediatypes"> <props> <prop key = "json"> application/json </prop> <prop key = "xml"> application/xml </prop> </props> </Eigenschaft> </bean> <!- Inhaltsparser. angeforderter Inhaltstyp über P: StandardContentType. C: qualityValue = "0,5" kann die Priorität des Inhaltstyps festlegen. Wenn MVC: Annotations- und Annotationsmethode (@RequestBody), ist die folgende Konfiguration nicht effektiv-> <bean> <Eigenschaft name = "contentNegotiationManager" ref = "contentNegotiationManagerFactoryBean"> < /Property> <Property name = "DefaultViews"> <liste> <Nean> modellKey = "modelKey". name = "extractValueFromsinglekeymodel" value = "true"/> </bean> <bean> <constructor-arg ref = "jaxb2Marshaller"/> <Eigenschaft name = "contentType" value = "application/xml"/> </bean> </list> </property> <!-<!-<!-<!-<!-<!-<! </bean> <!-- XML view using a JAXB marshaller --> <bean id="jaxb2Marshaller"> <property name="marshallerProperties"> <map> <entry key="jaxb.formatted.output"> <value type="boolean">true</value> </entry> <entry key="jaxb.encoding" value="UTF-8" /> </map> </Property> <Eigenschaft name = "packagestoscan"> <list> <wert> com.api.domain </value> <wert> com.api.web.controller.vo </value> </list> </Property> </bean> <bean id = "jstlviewresolver"> </ordnungsname ". value = "org.springFramework.web.servlet.view.jstlview" /> <Eigenschaft name = "prefix" value = " /views /" /> <Eigenschaft name = "suffix" value = "" /> <Eigenschaft name = "requestContextAttribute" value = "rc" /> < /> < /> < /ued. Der Standard ist 1.0. Je höher die Priorität ist, desto höher ist die Priorität-> <bean id = "StringhttpMessageConverter"> <Eigenschaft name = "SupportedMediTypes"> <list> <wert> text/plain; charSet = utf-8 </value> <value> text/html; charSet = utf-8 </value> </list> </list> </achite> </achbild> id = "jsonhttpMessageConverter" /> <bean id = "marshallinghttpMessageConverter"> <constructor-arg ref = "jaxb2marshaller" /> <!-<! C: type = "application" c: subtyp = "xml" c: qualityValue = "0,5"/> </util: list> </property> </bean>
SpringMVC gibt JSON -Konfigurationsschritte wie folgt zurück:
1. Fügen Sie das Paket jackson.jar hinzu
2. Fügen Sie der Konfigurationsdatei applicationContext.xml den folgenden Code hinzu
<!-Passing Returns JSON-> <!-<Bean>-> <bean> <Property name = "MessageConverters"> <list> <ref bean = "mapingjacksonHttpMessageConverter"/> </listtpesagesconverter "> <Bean id =" actioningjacksonhtpmessPmessaStpmessaStpmessAtpmessAtpmessAtpmessagemess ">; <wert> text/html; charSet = utf-8 </value> </list> </property> </bean>
3. Fügen Sie dem Controller den folgenden Code hinzu
@RequestMapping (value = "/chinesische/listree", method = requestMethod.post) @ResponseBody Public List getListchinese (Modellmodell) {list <Unter> list = (list <GaineSecategory>) CommonMgr.find ("von Benutzer"); Rückgabeliste; }Der Rückgabewert kann List oder Kartentyp sein
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels zu den häufig verwendeten Konfigurationen und Analyseklassen von Frühlingsfrüchten. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf diese Seite verweisen:
Detaillierte Erklärung des Code
Analyse des Problems beim Scannen mehrerer Pakete in der Federkonfiguration
Detaillierte Erläuterung des Lebenszyklus der Frühlingskonfigurationsverwendung
Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!