十、Springboot之thymeleaf與jsp共存


pom.xml添加依賴

<!--thymeleaf整合JSP需要用到下面的依賴-->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf</artifactId>
        </dependency>

此時項目結構如下:

ViewResolverConfiguration類代碼:

package com.luzhanshi.springBootFrame.config;
import org.springframework.beans.factory.annotation.Value;
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.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.thymeleaf.spring5.SpringTemplateEngine;//此處及下面兩行如果報錯,就是”spring5“版本不對,你可以點擊進去查看實際版本然后修改
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring5.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ITemplateResolver;
/**
 * 主要配置多視圖實現的視圖解析器相關bean實例,將該視圖解析器注冊到容器中
 *
 * 其實關鍵點在於兩個:
 * 1、配置order屬性:視圖解析器優先級問題(就是決定先使用哪個解析器來解析視圖)
 * 2、配置viewnames屬性(配置對應的視圖解析器解析哪些格式的視圖)
 */
@Configuration
public class ViewResolverConfiguration {
    @Configuration//用來定義 DispatcherServlet 應用上下文中的 bean
    @EnableWebMvc
    public class WebConfig extends WebMvcConfigurerAdapter {
        //jsp頁面的視圖解析器,解析到webapp下的jsp/目錄下查找對應的jsp頁面
        @Bean
        public ViewResolver viewResolver() {
            InternalResourceViewResolver resolver = new InternalResourceViewResolver();
            resolver.setPrefix("/WEB-INF/jsp");
            resolver.setSuffix(".jsp");
            resolver.setViewNames("*");//這里是設置該視圖解析器所要匹配哪些格式的視圖“*”代表匹配所有格式“
            resolver.setOrder(2);//優先級,Spring配置多個視圖解析器,數字越小,優先級越高,越先匹配
            return resolver;
        }
        /**
         * 下面都是配置hymeleaf的視圖解析器相關的內容
         *  對thymeleaf的視圖解析器,解析到webapp下的html目錄下查找對應的頁面
         * @return
         */
        @Bean
        public ITemplateResolver templateResolver() {
            SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
            templateResolver.setTemplateMode("HTML5");
            templateResolver.setPrefix("WEB-INF/");
            templateResolver.setSuffix(".html");
            templateResolver.setCharacterEncoding("utf-8");
            templateResolver.setCacheable(false);
            return templateResolver;
        }
        @Bean
        public SpringTemplateEngine templateEngine() {
            SpringTemplateEngine templateEngine = new SpringTemplateEngine();
            templateEngine.setTemplateResolver(templateResolver());
            // templateEngine
            return templateEngine;
        }
        @Bean
        public ThymeleafViewResolver viewResolverThymeLeaf() {
            ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
            viewResolver.setTemplateEngine(templateEngine());
            viewResolver.setCharacterEncoding("utf-8");
            viewResolver.setOrder(1);//設置該視圖解析器優先級為1
            //下面是設置該視圖解析器所要匹配哪些格式的視圖"html/*", "vue/*","jsps/*","templates/*"代表匹配"html/*", "vue/*","jsps/*","templates/*"格式的所有視圖
            viewResolver.setViewNames(new String[]{"html/*", "vue/*","jsps/*","templates/*"});
            return viewResolver;
        }
        @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }

        /**
         * 配置資源路徑
         * @param registry
         */
//        @Override
//        public void addResourceHandlers(ResourceHandlerRegistry registry) {
//            registry.addResourceHandler("/img/**").addResourceLocations("/img/");
//            registry.addResourceHandler("/static/**").addResourceLocations("/WEB-INF/" + "/static/");
//        }
    }

}

properties文件thyemleaf配置的內容變化為:

# 模版存放路徑
#spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.prefix=/WEB-INF/html

html文件以及jsp文件的視圖路徑為:

 

 

最后訪問效果:

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM