springmvc 同时配置thymeleaf和jsp两种模板引擎

问题说明

在我的意识中,是主导使用thymeleaf的,因为我一直想知道springboot推荐的它到底有什么好。在普通的springboot项目中,直接引入thymeleaf的依赖包就可以进行视图解析了,而在一般的spring项目中还需要我们进行一些手动的配置,于是就出现了这个问题,怎么整合多个模板引擎在一起。

 

解决方案

引入thymeleaf的依赖

        <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf -->

        <dependency>

            <groupId>org.thymeleaf</groupId>

            <artifactId>thymeleaf</artifactId>

            <version>${thymeleaf.version}</version>

        </dependency>

 

        <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring3 -->

        <dependency>

            <groupId>org.thymeleaf</groupId>

            <artifactId>thymeleaf-spring3</artifactId>

            <version>${thymeleaf.version}</version>

        </dependency>

 

thymeleaf的版本2和3都行,3功能更完善一点。

另外tymeleaf-spring3 or thymeleaf-spring4也随意使用。

2. 配置springmvc视图解析

关键是这一步,这一步网上的版本就多了。我大概分析了一下主要有下面两种情况:

 

第一种情况jsp页面和html页面分别是位于不同的视图文件夹下面

第二种情况两种页面同时存在同一个视图文件夹中

先来看第一种情况的配置:

这里可以参考thymeleaf官方的一个宠物商店的配置地址是

thymeleaf官方配置例子

 

下面是咱们的例子:

 

    <bean id="templateResolver"

          class="org.thymeleaf.spring3.templateresolver.SpringResourceTemplateResolver">

        <property name="prefix" value="WEB-INF/" />

        <property name="suffix" value=".html" />

        <property name="templateMode" value="HTML5" />

        <property name="cacheable" value="false" />

        <property name="characterEncoding" value="UTF-8"/>

    </bean>

 

    <bean id="templateEngine"

          class="org.thymeleaf.spring3.SpringTemplateEngine">

        <property name="templateResolver" ref="templateResolver" />

    </bean>

    <!--  配置多个视图解析-->

    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">

 

        <property name="viewResolvers">

            <list>

                <!--used thymeleaf  -->

                <bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">

                    <property name="characterEncoding" value="UTF-8"/>

                    <property name="templateEngine" ref="templateEngine" />

                    <property name="viewNames" value="html/*"/>

                    <property name="order" value="2" />

                </bean>

                <!-- used jsp -->

                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

                    <property name="prefix" value="/WEB-INF/"/>

                    <property name="suffix" value=".jsp"/>

                    <property name="viewNames" value="jsp/*"/>

                    <property name="order" value="1" />

                </bean>

 

            </list>

        </property>

    </bean>

 

关键点:

<property name="prefix" value="/WEB-INF/"/>

<property name="viewNames" value="/*"/>

 

接下来说第二种情况的配置:

 

也就是由第一种配置延伸过来的,prefix的值相同了

 

<bean id="templateResolver"

          class="org.thymeleaf.spring3.templateresolver.SpringResourceTemplateResolver">

        <property name="prefix" value="WEB-INF/views/" />

        <property name="templateMode" value="HTML5" />

        <property name="cacheable" value="false" />

        <property name="characterEncoding" value="UTF-8"/>

    </bean>

 

    <bean id="templateEngine"

          class="org.thymeleaf.spring3.SpringTemplateEngine">

        <property name="templateResolver" ref="templateResolver" />

    </bean>

    <!--  配置多个视图解析-->

    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">

 

        <property name="viewResolvers">

            <list>

                <!--used thymeleaf  -->

                <bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">

                    <property name="characterEncoding" value="UTF-8"/>

                    <property name="templateEngine" ref="templateEngine" />

                    <property name="viewNames" value="*.html" />

                    <property name="order" value="1" />

                </bean>

                <!-- used jsp -->

                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

                    <property name="prefix" value="/WEB-INF/views/"/>

                    <property name="viewNames" value="*.jsp"/>

                    <property name="order" value="2" />

                </bean>

 

            </list>

        </property>

    </bean>

不同的地方在这里:

<property name="viewNames" value="*.html"/>

<property name="viewNames" value="*.jsp"/>

 

到这里还没完,需要我们在controller层如何返回?

 

第一种情况return "jsp/abc" || return "thymeleaf/abc"

第二种情况return "abc.jsp" || return "abc.html"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringMVC配置Thymeleaf的步骤如下: 1. 在pom.xml文件中添加Thymeleaf依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> ``` 2. 在application.properties文件中添加Thymeleaf配置: ```properties # Thymeleaf配置 spring.thymeleaf.mode=HTML spring.thymeleaf.encoding=UTF-8 spring.thymeleaf.cache=false ``` 3. 在SpringMVC配置类中添加Thymeleaf视图解析器: ```java @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Autowired private ApplicationContext applicationContext; @Bean public ViewResolver viewResolver() { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setTemplateEngine(templateEngine()); resolver.setCharacterEncoding("UTF-8"); return resolver; } @Bean public SpringTemplateEngine templateEngine() { SpringTemplateEngine engine = new SpringTemplateEngine(); engine.setEnableSpringELCompiler(true); engine.setTemplateResolver(templateResolver()); return engine; } private ITemplateResolver templateResolver() { SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); resolver.setApplicationContext(applicationContext); resolver.setPrefix("classpath:/templates/"); resolver.setSuffix(".html"); resolver.setTemplateMode(TemplateMode.HTML); resolver.setCharacterEncoding("UTF-8"); return resolver; } } ``` 4. 在Controller中返回Thymeleaf视图: ```java @Controller public class HomeController { @GetMapping("/") public String home(Model model) { model.addAttribute("message", "Hello, Thymeleaf!"); return "home"; } } ``` 5. 在templates目录下创建home.html文件,使用Thymeleaf模板语言编写视图: ```html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Home</title> </head> <body> <h1 th:text="${message}"></h1> </body> </html> ``` 以上就是SpringMVC配置Thymeleaf的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值