Есть много статей об использовании конфигурации SpringMVC, но не многие четко описаны. Здесь мы в основном представляем использование часто используемых элементов конфигурации и его классов анализа. Есть два способа обработки контента в SpringMVC, один - конвертер, а другой - ViewResolver. Оба могут обрабатывать форматы контента JSON, XML и формы.
<? xml version = "1.0" Encoding = "utf-8" stantalone = "no"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://www.spramework.org/schema/context" http://www.spramework.org/schema "/http://www.spramework.org/schema"/http://www.spramework.org/schema. " xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: p = "http://www.spramem. xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: util = "http://www.springframework.org/schema/util" xmlns: c = "http://www.spramemema xmlns: c =" http://www.spramemema "/" http://www.spramemema ". xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.spramework.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. Контроллер, конфигурация должна быть загружена, потому что, как правило, эта конфигурация загружается диспетчерским составом и не находится в том же контексте, что и класс прослушивания пружины. Если вы хотите узнать причину, пожалуйста, см. и @controller use-default-filters = "false", вы можете установить, какие комментарии только сканируются. Generally, springMVC configuration only loads the following two comments-> <context:component-scan base-package="your.base.package" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.steretype.Controller"/> <context:include-filter type="annotation" Express = "org.springframework.web.bind.annotation.controllerAdvice"/> </context: component-scan> <!-<Контекст: компонент-сканирование аннотации-config = "true"> уже содержит функцию контекста: аннотации-конфигрирование, поэтому в основном не нужно конфигурировать эту конфигурацию, и активировать различные аноматические аноматические классы, и B-Quean-Configr. @Autowired, а также JSR 250S @PostConstruct, @Predestroy и @Resource (если таковой имеется), Jax-ws @Webserviceref (если доступно), eJB3 @EJB (если есть) и JPA @persistencecontext и @persistenceUnit (если есть доступные)-> <StextTation-con-con-con-con-con-con-con-con-con-config-con-cont org.springframework.web.servlet.resource.defaultservlethttprequesthandler в весеннем контексте MVC. Он проверит URL -адрес, входящий в диспетчер, как инспектор. Если обнаружено, что это статический ресурс, запрос будет перенесен в сервис по умолчанию сервера веб -приложений. Если это не статический запрос на ресурс, DispatcherServlet продолжит обрабатывать. Имя Сервлета по умолчанию сервера веб -приложений - «по умолчанию», поэтому Defaultservlethttprequesthandler может его найти. Если имя сервиса по умолчанию всех ваших веб-серверов приложений не является «по умолчанию», вам необходимо отобразить указанный через атрибут по умолчанию-servlet-name: <MVC: по умолчанию-servlet-handler default-servlet-name = «Имя по умолчанию, используемое веб-сервером» /> Tomcat, Jetty, Jboss и Glassfish Deffice name, Egle-M-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m-m <Servlet-name> по умолчанию </servlet-name> 3. <servlet-name>default</servlet-name> 11. <url-pattern>*.css</url-pattern> 12. </servlet-mapping> If springdefault-servlet-name is not configured, the default setting will be supported, and the commonly used web servers are already supported--> <mvc:default-servlet-handler /> <!-- Allow static resources to be placed anywhere and handle the class org.springframework.web.servlet.resource.resourcehttprequesthandler <bean id = "resourcehttprequesthandler"> <property name = "value =" classpath:/meta-inf/"> </property> </bean> <bean> <propath key = "/resources/**"> resourcehttprequesthandler </prop> </props> </property> </bean> Следующая реализация тега-> <MVC: ресурсы mapping = "/resources/**" location = "/"> </mvc: ресурсы> <!-регистр "Global" Beans, чтобы применить к зарегистрированным ручным ручным марке. Каждый Inteceptor должен реализовать c-org.springframework.web.servlet.handlerinterceptor или org.springframework.web.context.request.webrequestinterceptor-> <mvc: Interceptors> <mvc: receptor> <mvc: mapping = "/**"/> <mvc: exceptor> <mvc: mapping = "/**"/> <mvc: exceptor> <mvc: "/** /> <mvc: exclude mapping path = "/js/**"/> <mvc: exclude mapping path = "/images/**"/> <bean/> </mvc: Interceptor> </mvc: Interceptors> <!-Поворачивает поддержку запросов на картирование во все методы Spring MVC @Controler Paristers Formaters и Valdators для использования по всему общепринятизаторам по всему общеконтролирующим средствам ободряет по всему общепринятизаторам по всему общепринятию по всему общеконтролирующим. org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser Configuration content-negotiation-anager can set content type parameters in the url, and the default content type can be set <bean id="contentNegotiationManagerFactoryBean" p:favorPathExtension="false" p:favorParameter="true" p:parameterName="format" P: IgnoreAcceptheader = "true" P: defaultContentType = "application/json"> <name = "mediaTypes"> <props> <prop key = "json"> application/json </prop> <prop key = "xml"> xml </prop> </props> </props> </propots> </bean>->->->->->->->->->-> Content-negotiation-anager = "contentnegotiationmanagerfactorybean"> <mvc: converterters> <ref bean = "stringhttpmessageconverter" /> <ref bean = "jsonhttpmessageconverter" /> <ref bean = "marshallinghtpmessageconverter" /> <ref bean = "marshallinghtpmessageconverter" /> <ref bean = converterter </mvc: направление аннотаций> <!-Фабрика управления контентом-> <bean P: forepathextension = "false" p: fairparameter = "true" p: parametername = "format" p: игнорирование. key = "json"> application/json </prop> <prop key = "xml"> application/xml </prop> </props> </property> </bean> <!- Паритор содержимого, вы можете настроить тип параметра возврата от p: parametername = "format" и настроить запрошенный по умолчанию тип контента через P: defaultcontentype. C: QualityValue = "0,5" может установить приоритет типа контента. Если MVC: метод управления аннотацией и аннотации (@Requestbody), следующая конфигурация не эффективна-> <Bean> <name = "contentnegotiationmanager" ref = "contentnegotiationmanagerfactorybean"> < /properation> <name = "defaultViews"> <Beabe> <property value = "value =" result " /> <propect> <Bean> <ftypect =" value = "result" /> <propect> <Bean> <froperty = "value =" /" />" <fece> <property "=" name = "extractValueFromSinglekeyModel" value = "true"/> </bean> <bean> <constructor-arg ref = "jaxb2marshaller"/> <name = "contentType" value = "application/xml"/> </bean> </lize> </properate> <!-<Property negine = "IggenSeCeed"/"/value"/value "/value"/value "/value"/value "/value"/value "/value"/value "/value"/properate> <! </bean> <!-xml View с использованием Jaxb Marshaller-> <bean id = "Jaxb2marshaller"> <name = "marshallerproperties"> <Map> <inpit key = "jaxb.formatted.output"> <value type = "boolean"> true </vituare> </inpittive key = "jaxb.enc.enc.enc.enc.enc.enc.enc.enc.enc.enc.enc.enc.enc.enc.enc.enc.enc. </map> </property> <property name = "packageStoscan"> <sist> <dather> com.api.domain </value> <dall> com.api.web.controller.vo </value> </list> </property> </bean> <bean id = "jstleviewresolver"> <pertive = "value = value ="/"/" wome "=" viewc. value = "org.springframework.web.servlet.view.jstlview" /> <name = "prefix" value = " /" /" /> <name =" suffix "value =" " /> <name =" requestContextAtttribute "value =" rc " /> < /bean> <!- c: cafforeValue =" 0.5 ". По умолчанию 1,0. Чем выше приоритет, тем выше приоритет-> <bean id = "stringhttpmessageconverter"> <name = "name =" proctededMediatypes "> <sist> <dathle> text/plain; charset = utf-8 </value> <datter> text/html; charset = utf-8 </value> </list> </propertive> </bean> <b id = "jsonhttpmessageconverter" /> <bean id = "marshallinghttpmessageconverter"> <constructor-arg ref = "jaxb2marshaller" /> <!-<name = "Поддержка MediaTypes" value = "application /xml"> < /property>-> <property name = "Поддерживание" value = "apply /xml"> < /property>-> <froperty name = "ut. <Bean C: type = "Application" C: subtype = "xml" C: QualityValue = "0,5"/> </util: list> </property> </bean>
Springmvc возвращает шаги конфигурации JSON следующим образом:
1. Добавить пакет Jackson.jar
2. Добавьте следующий код в файл конфигурации ApplicationContext.xml
<!--Passing returns JSON --><!-- <bean> --> <bean> <property name="messageConverters"> <list > <ref bean="mappingJacksonHttpMessageConverter" /> </list> </property> </bean> <bean id="mappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <dulch> text/html; charset = utf-8 </value> </list> </property> </bean>
3. Добавьте следующий код в контроллер
@Requestmapping (value = "/cilina/listtree", method = requestMethod.post) @Responsebody public list getListChinese (модель модели) {list <user> list = (list <Chinesecategory>) commonmgr.find ("от пользователя"); вернуть список; }Возвращаемое значение может быть списком или типом карты
Суммировать
Выше приведено все содержание этой статьи о широко используемых конфигурациях и классах анализа пружины. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на этот сайт:
Подробное объяснение кода для значения атрибута инъекции с использованием файлов конфигурации и @Value по пружине
Анализ проблемы сканирования нескольких пакетов в конфигурации пружины
Подробное объяснение жизненного цикла использования конфигурации пружины
Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!