spring设置多个ViewResolver

本文深入探讨了Spring MVC中视图解析类的作用及配置,包括如何使用InternalResourceViewResolver解析jsp文件,并通过order属性控制解析顺序。同时,解释了各个关键属性的功能及其在实际开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ViewResolver用来解析视图文件,如常用的jsp类型的文件。

<bean id ="jspViewResolver" class= "org.springframework.web.servlet.view.InternalResourceViewResolver" >
       <!-- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> -->
       <property name ="prefix" value="" />
       <property name ="suffix" value="" />
</bean >

spring中可以配置多个视图解析类,用来解析不同类型的文件。
其中各个解析类的调用顺序和属性order有关,order值小的先进性解析,如果解析失败则调用下一个解析类。

以jsp解析类InternalResourceViewResolver为例。
所有的解析类要继承UrlBasedViewResolver,几个重要的属性:

private Class<?> viewClass;

private String prefix = "";

private String suffix = "";

private int order = Integer.MAX_VALUE;

其中viewClass如果不配置的话,会调用子类的requiredViewClass方法

public void setViewClass(Class<?> viewClass) {
    if (viewClass == null || !requiredViewClass().isAssignableFrom(viewClass)) {
        throw new IllegalArgumentException(
                "Given view class [" + (viewClass != null ? viewClass.getName() : null) +
                "] is not of type [" + requiredViewClass().getName() + "]");
    }
    this.viewClass = viewClass;
}

然后看中InternalResourceViewResolver的方法

public InternalResourceViewResolver() {
    Class<?> viewClass = requiredViewClass();
    if (InternalResourceView.class == viewClass && jstlPresent) {
        viewClass = JstlView.class;
    }
    setViewClass(viewClass);
}


/**
 * This resolver requires {@link InternalResourceView}.
 */
@Override
protected Class<?> requiredViewClass() {
    return InternalResourceView.class;// 默认用该类去解析文件
}

解析文件的大概流程就是这样,改天试试自己写一个解析文件的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值