`

Spring MVC视图解析器:配置多个视图解析器的优先级

 
阅读更多
http://www.cnblogs.com/rollenholt/archive/2012/12/27/2836035.html


问题
在Spring MVC应用程序中,我们经常需要应用一些视图解析器策略来解析视图名称。例如,联合使用三个视图解析器:InternalResourceViewResolver、ResourceBundleViewResolver和XmlViewResolver。

但是,如果返回了一个视图的名称,那么,使用哪一个视图解析器策略?

解决方法
如果应用了多个视图解析器策略,那么就必须通过“order”属性来声明优先级,order值越低,则优先级越高。例如:
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
 
    <!-- 扫描web包,应用Spring的注解 -->
    <context:component-scan base-package="com.xxx.training"/>
 
 
    <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
        <property name="basename">
            <value>spring-views</value>
        </property>
        <property name="order" value="0" />
    </bean>
 
    <bean class="org.springframework.web.servlet.view.XmlViewResolver">
        <property name="location">
            <value>/WEB-INF/spring-views.xml</value>
        </property>
        <property name="order" value="1" />
    </bean>
 
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <property name="prefix">
            <value>/WEB-INF/pages/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
        <property name="order" value="2" />
    </bean>
 
</beans>

  注意:InternalResourceViewResolver必须总是赋予最低的优先级(最大的order值),因为不管返回什么视图名称,它都将解析视图。如果它的优先级高于其它解析器的优先级的话,它将使得其它具有较低优先级的解析器没有机会解析视图。
分享到:
评论

相关推荐

    Spring配置Freemarker视图解析器,配置多个视图解析器

    本篇文章将深入探讨如何在Spring中配置Freemarker视图解析器,以及如何配置多个视图解析器以实现更灵活的应用场景。 首先,让我们了解如何配置单个Freemarker视图解析器。在Spring的配置文件(如`...

    spring mvc 自学教程

    3. **Spring MVC 配置**:通常在 `WEB-INF` 目录下创建 `spring-servlet.xml` 文件,配置处理器映射器、视图解析器等。 4. **编写 Controller**:创建一个简单的 Java 类,用 `@Controller` 注解标识,然后定义处理...

    Spring MVC 配置请求的默认处理器.rar

    通过`&lt;mvc:interceptors&gt;`配置,可以添加多个拦截器。 7. **异常处理** 可以通过`&lt;exception-handler&gt;`元素定义全局的异常处理器,当发生特定异常时,调用预定义的处理器方法。 综上所述,配置Spring MVC请求的...

    Spring MVC 框架搭建及详解

    这个文件是Spring MVC的核心配置文件,用于定义处理器映射器、视图解析器、拦截器等组件。例如,你可以在这里配置HandlerMapping,用于将URL映射到特定的控制器方法;配置ViewResolver,用于解析视图;还可以配置...

    Spring MVC简介.docx

    总结一下,Spring MVC提供了一个强大且灵活的架构来构建Web应用程序,通过DispatcherServlet、处理器映射、视图解析器等组件,实现了请求处理的解耦合,便于代码的维护和扩展。开发者可以根据需求自定义这些组件,以...

    Spring源代码解析(四):Spring_MVC.doc

    Spring MVC是Spring框架的一个重要组成部分,用于构建Web应用程序的模型-视图-控制器(MVC)架构。在Spring源代码解析的第四部分中,我们将重点关注DispatcherServlet的初始化过程,它是Spring MVC的核心组件。 ...

    spring mvc 附件上传代码

    Spring配置文件主要用于配置Spring MVC的相关bean,包括文件上传解析器、请求映射器和控制器等。 1. **文件上传解析器**: - `&lt;bean id="multipartResolver" class="org.springframework.web.multipart.commons....

    springMVC rest风格视图解析

    Spring MVC默认提供了多个内置的MessageConverter,例如MappingJackson2HttpMessageConverter用于处理JSON,Jaxb2RootElementHttpMessageConverter用于处理XML。 要让Spring MVC根据请求的后缀名自动选择合适的...

    spring mvc

    Spring MVC 有多个核心组件,包括但不限于: 1. **DispatcherServlet**:作为前端控制器的角色,处理所有的 HTTP 请求和响应。 2. **HandlerMapping**:负责将请求映射到对应的处理器上。 3. **HandlerAdapter**:...

    spring mvc_02

    Spring MVC 是一个强大的Java Web应用程序开发框架,它提供了一种模型-视图-控制器(MVC)架构,用于构建高效、可维护的Web应用。在Spring MVC中,`SimpleUrlHandlerMapping`是一个基础的URL映射处理器,它负责将...

    springmvc详细讲解

    Spring MVC 是 Spring 框架的一个重要组成部分,用于构建基于模型-视图-控制器(Model-View-Controller)架构的Web应用程序。以下是对Spring MVC的详细讲解: 首先,要使用Spring MVC,你需要从Spring官网下载相应...

    spring mvc 框架

    接下来是`config.xml`文件的配置,它是Spring MVC框架的配置文件之一,用于定义视图解析器、控制器映射等组件。 - **视图解析器**: ```xml &lt;!--Definition of ViewResolver--&gt; ...

    Spring 3 MVC ContentNegotiatingViewResolver Example

    在这个配置中,我们指定了`json`和`xml`媒体类型,并注册了相应的视图解析器(Jackson2JsonView和MarshallingView)。这样,当请求中包含`application/json`或`application/xml`时,ContentNegotiatingViewResolver...

    spring security,mybatis,spring mvc 整合权限管理系统

    在Spring MVC的配置中,需要确保Spring Security的过滤器优先级高于其他过滤器。 3. **结合MyBatis**:在MyBatis中创建UserMapper接口,用于处理用户相关的数据库操作,如查询用户信息、角色和权限。在Spring ...

    spring mvc生成xml或json

    5. **配置转换器优先级** 默认情况下,Spring MVC会根据请求头中的`Accept`字段选择合适的转换器。如果需要调整优先级,可以通过实现`WebMvcConfigurer`接口的`extendMessageConverters`方法进行设置。 总结来说,...

    springMvc_SpringMvc入门_

    3. **配置 Spring MVC**:在 `springMvc-servlet.xml` 配置文件中,我们需要定义视图解析器(如 InternalResourceViewResolver),处理器映射器(HandlerMapping),处理器适配器(HandlerAdapter)等组件。...

    SpringframeworkMVC配置[定义].pdf

    - `user-servlet.xml`是Spring MVC的配置文件,包含Spring的bean定义,比如控制器(Controller)、视图解析器(ViewResolver)、数据绑定、拦截器等。这里的`&lt;bean&gt;`标签定义了应用中的对象,例如控制器类的实例,...

    Spring MVC 环境搭建.docx

    总的来说,Spring MVC环境搭建包括创建项目结构、配置核心的`web.xml`、安装Spring框架以及对Servlet的配置,这些步骤是构建基于Spring MVC的Java Web应用的基础。通过正确的配置,我们可以实现请求的转发、处理和...

    springmvc 集成jasperReport.docx

    创建Jasper视图解析配置文件 在项目的`WEB-INF`目录下创建一个名为`jasper-defs.xml`的文件,该文件用于定义JasperReport视图的配置信息。示例内容如下: ```xml &lt;beans xmlns="http://...

    spring MVC搭建及配置详解

    总的来说,Spring MVC的配置涉及到多个层次,包括Servlet配置、Spring容器配置、MVC组件配置以及业务逻辑的Controller。理解这些配置对于开发人员来说是至关重要的,因为它们决定了整个Web应用的行为和流程。通过...

Global site tag (gtag.js) - Google Analytics