您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Spring常用配置及解析類的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
springMVC配置用法的文章很多,但具體描述清楚的不多,這里主要介紹下常用的配置項(xiàng)的用法,以及它的解析類,springMVC處理內(nèi)容有兩種方式,一種是converter,另一種是ViewResolver,兩種都能處理json,xml以及form內(nèi)容格式。
<?xml version="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" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xmlns:c="http://www.springframework.org/schema/c" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 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.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"> <!-- 如果controller里要用到配置,才需要加載配置,因?yàn)橐话氵@個(gè)配置由DispatchServlet來(lái)加載,和spring監(jiān)聽類不在一個(gè)上下文里,想要知道原因請(qǐng)看 http://blog.csdn.net/strivezxq/article/details/43795081 這篇文章詳細(xì)解析了spring初始化過(guò)程 --> <context:property-placeholder location="classpath:app.properties" /> <!--Scans the classpath for annotated components @Component, @Repository, @Service, and @Controller 通過(guò)use-default-filters="false",可以設(shè)置只掃描哪些注釋,一般springMVC配置只加載下面兩種注釋 --> <context:component-scan base-package="your.base.package" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/> </context:component-scan> <!-- <context:component-scan annotation-config = "true">已經(jīng)包含了context:annotation-configr的功能,所以這個(gè)配置基本沒(méi)必要配置,激活在bean類中被檢測(cè)到的各種注釋: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 /> <!--會(huì)在Spring MVC上下文中定義一個(gè) org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler, 它會(huì)像一個(gè)檢查員,對(duì)進(jìn)入DispatcherServlet的URL進(jìn)行篩查,如果發(fā)現(xiàn)是靜態(tài)資源的請(qǐng)求,就將該請(qǐng)求轉(zhuǎn)由Web應(yīng)用服務(wù)器默認(rèn)的 Servlet處理,如果不是靜態(tài)資源的請(qǐng)求,才由DispatcherServlet繼續(xù)處理。 一般Web應(yīng)用服務(wù)器默認(rèn)的Servlet名稱是"default",因此DefaultServletHttpRequestHandler可以 找到它。如果你所有的Web應(yīng)用服務(wù)器的默認(rèn)Servlet名稱不是"default",則需要通過(guò)default-servlet-name屬性顯示指 定: <mvc:default-servlet-handler default-servlet-name="所使用的Web服務(wù)器默認(rèn)使用的Servlet名稱" /> Tomcat, Jetty, JBoss, and GlassFish默認(rèn)名稱為default, eg: web.xml中 1. <servlet-mapping> 2. <servlet-name>default</servlet-name> 3. <url-pattern>*.jpg</url-pattern> 4. </servlet-mapping> 5. <servlet-mapping> 6. <servlet-name>default</servlet-name> 7. <url-pattern>*.js</url-pattern> 8. </servlet-mapping> 9. <servlet-mapping> 10. <servlet-name>default</servlet-name> 11. <url-pattern>*.css</url-pattern> 12. </servlet-mapping> 如果不配置springdefault-servlet-name 默認(rèn)會(huì)設(shè)置,已經(jīng)支持常用的web服務(wù)器 --> <mvc:default-servlet-handler /> <!-- 允許靜態(tài)資源放在任何地方 ,處理類org.springframework.web.servlet.resource.ResourceHttpRequestHandler <bean id="resourceHttpRequestHandler" class="org.springframework.web.servlet.resource.ResourceHttpRequestHandler"> <property name="locations" value="classpath:/META-INF/resources/"></property> </bean> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/resources/**">resourceHttpRequestHandler</prop> </props> </property> </bean> 下面標(biāo)簽實(shí)現(xiàn) --> <mvc:resources mapping="/resources/**" location="/resources/"></mvc:resources> <!-- register "global" interceptor beans to apply to all registered HandlerMappings . Each inteceptor must implement the org.springframework.web.servlet.HandlerInterceptor or org.springframework.web.context.request.WebRequestInterceptor interface --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**" /> <mvc:exclude-mapping path="/css/**" /> <mvc:exclude-mapping path="/js/**" /> <mvc:exclude-mapping path="/images/**" /> <bean class="com.fpx.common.auth.mgt.framework.interceptor.ContextInterceptor" /> </mvc:interceptor> </mvc:interceptors> <!-- Turns on support for mapping requests to Spring MVC @Controller methods Also registers default Formatters and Validators for use across all @Controllers 配置解析類:org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser 配置content-negotiation-anager可以在url里設(shè)置內(nèi)容類型參數(shù),可以設(shè)置默認(rèn)內(nèi)容類型 <bean id="contentNegotiationManagerFactoryBean" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean" 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</prop> <prop key="xml">application/xml</prop> </props> </property> </bean> --> <mvc:annotation-driven content-negotiation-anager="contentNegotiationManagerFactoryBean"> <mvc:message-converters> <ref bean="stringHttpMessageConverter" /> <ref bean="jsonHttpMessageConverter" /> <ref bean="marshallingHttpMessageConverter" /> </mvc:message-converters> </mvc:annotation-driven> <!-- 內(nèi)容管理工廠 --> <bean class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean" 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</prop> <prop key="xml">application/xml</prop> </props> </property> </bean> <!-- 內(nèi)容解析器 ,可以p:parameterName="format"來(lái)配置返回參數(shù)類型 ,通過(guò)p:defaultContentType配置默認(rèn)請(qǐng)求內(nèi)容類型, c:qualityValue="0.5" 可以設(shè)置內(nèi)容類型的優(yōu)先級(jí), 如果使用了mvc:annotation-driven 和注解方式(@RequestBody), 下面配置是不生效的--> <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <property name="contentNegotiationManager" ref= "contentNegotiationManagerFactoryBean"> </property> <property name="defaultViews"> <list> <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"> <property name="modelKey" value="resultVo" /> <property name="extractValueFromSingleKeyModel" value="true" /> </bean> <bean class="org.springframework.web.servlet.view.xml.MarshallingView"> <constructor-arg ref="jaxb2Marshaller" /> <property name="contentType" value="application/xml" /> </bean> </list> </property> <!-- <property name="ignoreAcceptHeader" value="true" /> --> </bean> <!-- XML view using a JAXB marshaller --> <bean id="jaxb2Marshaller" class="org.springframework.oxm.jaxb.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> <property name="packagesToScan"> <list> <value>com.api.domain</value> <value>com.api.web.controller.vo</value> </list> </property> </bean> <bean id="jstlViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="order" value="2" /> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/views/" /> <property name="suffix" value="" /> <property name="requestContextAttribute" value="rc" /> </bean> <!-- c:qualityValue="0.5" 可以設(shè)置內(nèi)容類型的優(yōu)先級(jí),默認(rèn)是1.0,越大優(yōu)先級(jí)越高 --> <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" /> <bean id="marshallingHttpMessageConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> <constructor-arg ref="jaxb2Marshaller" /> <!-- <property name="supportedMediaTypes" value="application/xml"></property> --> <property name="supportedMediaTypes"> <util:list> <bean class="org.springframework.http.MediaType" c:type="application" c:subtype="xml" c:qualityValue="0.5"/> </util:list> </property> </bean>
SpringMVC返回json配置步驟如下:
1、添加jackson.jar包
2、在applicationContext.xml配制文件中添加如下代碼
<!--解析返回JSON --> <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list > <ref bean="mappingJacksonHttpMessageConverter" /> </list> </property> </bean> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean>
3、在controller中添加如下代碼
@RequestMapping(value="/chinese/listTree", method = RequestMethod.POST) @ResponseBody public List getlistChinese(Model model){ List<User> list = (List<ChineseCategory>) commonMgr.find("from User"); return list; }
返回值可以為list也可以為Map類型
關(guān)于“Spring常用配置及解析類的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。