温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Spring常用配置及解析类的示例分析

发布时间:2021-08-19 13:48:15 来源:亿速云 阅读:141 作者:小新 栏目:编程语言

这篇文章将为大家详细讲解有关Spring常用配置及解析类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

springMVC配置用法的文章很多,但具体描述清楚的不多,这里主要介绍下常用的配置项的用法,以及它的解析类,springMVC处理内容有两种方式,一种是converter,另一种是ViewResolver,两种都能处理json,xml以及form内容格式。

<?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里要用到配置,才需要加载配置,因为一般这个配置由DispatchServlet来加载,和spring监听类不在一个上下文里,想要知道原因请看  http://blog.csdn.net/strivezxq/article/details/43795081 这篇文章详细解析了spring初始化过程 -->       <context:property-placeholder location="classpath:app.properties" />  <!--Scans the classpath for annotated components @Component, @Repository, @Service, and @Controller   通过use-default-filters="false",可以设置只扫描哪些注释,一般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">已经包含了context:annotation-configr的功能,所以这个配置基本没必要配置,激活在bean类中被检测到的各种注释: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 />  <!--会在Spring MVC上下文中定义一个 org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler, 它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的 Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。  一般Web应用服务器默认的Servlet名称是"default",因此DefaultServletHttpRequestHandler可以 找到它。如果你所有的Web应用服务器的默认Servlet名称不是"default",则需要通过default-servlet-name属性显示指 定:  <mvc:default-servlet-handler default-servlet-name="所使用的Web服务器默认使用的Servlet名称" />  Tomcat, Jetty, JBoss, and GlassFish默认名称为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 默认会设置,已经支持常用的web服务器  -->  <mvc:default-servlet-handler />    <!-- 允许静态资源放在任何地方 ,处理类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>  下面标签实现  -->  <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里设置内容类型参数,可以设置默认内容类型  <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>    <!-- 内容管理工厂 -->       <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>      <!-- 内容解析器 ,可以p:parameterName="format"来配置返回参数类型 ,通过p:defaultContentType配置默认请求内容类型,  c:qualityValue="0.5" 可以设置内容类型的优先级, 如果使用了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" 可以设置内容类型的优先级,默认是1.0,越大优先级越高 -->     <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类型

关于“Spring常用配置及解析类的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI