You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring 4中同时配置.html与.jsp类型的ViewResolver?

当然可以同时支持.jsp和.html作为视图!

完全没问题,你只需要在配置中添加另一个视图解析器实例,专门处理.html后缀的视图即可。Spring MVC会按照视图解析器的order优先级依次尝试解析视图名,下面是具体实现方案:

修改WebConfig配置类

在原有的JSP视图解析器基础上,新增一个处理HTML视图的解析器,并设置不同的优先级(order值越小,优先级越高):

@EnableWebMvc
@ComponentScan("com.test")
public class WebConfig extends WebMvcConfigurerAdapter {

    // 处理JSP视图的解析器,优先级更高
    @Bean
    public ViewResolver jspViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/pages/");
        resolver.setSuffix(".jsp");
        resolver.setOrder(1); // 数字越小,越先被Spring调用
        return resolver;
    }

    // 处理HTML视图的解析器
    @Bean
    public ViewResolver htmlViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/pages/"); // 你可以根据实际HTML文件位置调整前缀
        resolver.setSuffix(".html");
        resolver.setOrder(2);
        return resolver;
    }
}

控制器代码无需修改

你原来的控制器代码完全可以保留:

@Controller
public class HelloController {
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String printHello(ModelMap model) {
        model.addAttribute("message", "Hello Spring MVC Framework!");
        return "hello"; // 会匹配 /WEB-INF/pages/hello.jsp
    }
}

@Controller
public class HomeController {
    @RequestMapping(value = "/home", method = RequestMethod.GET)
    public String home() {
        return "home"; // 会匹配 /WEB-INF/pages/home.html
    }
}

关键注意事项

  1. 确保视图文件存在:要保证/WEB-INF/pages/目录下同时存在hello.jsp和home.html文件;
  2. 调整HTML文件位置:如果你的HTML文件是静态资源(不需要Spring渲染动态数据),可以把它们放在src/main/resources/static目录下,此时需要修改HTML视图解析器的prefix为"/",同时确保Spring MVC的静态资源映射配置正常(Spring Boot默认已经配置好,传统Spring MVC需要在配置中添加对应的Java配置);
  3. 优先级逻辑:Spring会先使用order=1的JSP解析器尝试查找视图,找不到时才会调用order=2的HTML解析器,这样就实现了两种视图后缀的共存。

内容的提问来源于stack exchange,提问作者Maxim Blumental

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:50:36