• SpringBoot如何同时整合thymeleaf html和jsp

关键点在于两个: 1、配置order属性  2、配置viewnames属性

 

Controller 层

 return new ModelAndView("jsp/index");

或者

return "jsp/index"


 对应访问 /WEB-INF/jsp/index.jsp
 ==========================
直接返回String类型字符串 
return  "index".

对应访问 /WEB-INF/templates/index.html

 

package com.kiko.file.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ITemplateResolver;
/**
 * @program: file
 * @description: (webconfig 视图层自定义配置)
 * @author: kikock
 * @create: 2018-11-15 09:26
 **/
@Configuration
@EnableWebMvc
@ComponentScan
public class WebConfig implements WebMvcConfigurer {
    //日志
    private static final Logger log = LoggerFactory.getLogger(WebConfig.class);

    /**
     * @Description: 注册jsp视图解析器
     * @params: []
     * @return: org.springframework.web.servlet.ViewResolver
     * @author kikock
     * @date 2018/11/15 9:28
     */
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/"); //配置放置jsp文件夹
        resolver.setSuffix(".jsp");
        resolver.setViewNames("jsp/*");  //重要 setViewNames 通过它识别为jsp页面引擎
        resolver.setOrder(2);
        return resolver;
    }
    /**
     * @Description: 注册html视图解析器
     * @params: []
     * @return: org.thymeleaf.templateresolver.ITemplateResolver
     * @author kikock
     * @date 2018/11/15 9:30
     */
    @Bean
    public ITemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setTemplateMode("HTML");
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setCharacterEncoding("utf-8");
        templateResolver.setCacheable(false);
        return templateResolver;
    }

    /**
     * @Description: 将自定义tml视图解析器添加到模板引擎并主持到ioc
     * @params: []
     * @return: org.thymeleaf.spring5.SpringTemplateEngine
     * @author kikock
     * @date 2018/11/15 9:32
     */
    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver());
        return templateEngine;
    }
    /**
     * @Description: Thymeleaf视图解析器配置
     * @params: []
     * @return: org.thymeleaf.spring5.view.ThymeleafViewResolver
     * @author kikock
     * @date 2018/11/15 9:38
     */
    @Bean
    public ThymeleafViewResolver viewResolverThymeLeaf() {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine());
        viewResolver.setCharacterEncoding("utf-8");
        viewResolver.setViewNames(new String[]{"themleaf"});
        viewResolver.setOrder(1);
        return viewResolver;
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    /**
     * @Description: 配置静态文件映射
     * @params: [registry]
     * @return: void
     * @author kikock
     * @date 2018/11/15 9:41 
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("/WEB-INF/static/");
    }


}

Controller层

 @GetMapping("testJsp")
    public String testJsp(Model model) {
        model.addAttribute("message", "this is index jsp page");
        return "jsp/test";
    }

    @GetMapping("testThymeleaf")
    public String testVue(Model model) {
        model.addAttribute("message", "this is index html Thymeleaf");
        return "test";
    }

 

整合完成   jsp文件放置再/WEB-INF/jsp/下  同时访问jsp文件 字符串必须以  jsp/ 为标记通知springMvc使用 jsp引擎

其余的就使用Thymeleaf 引擎

多引擎同理设置即可