美文网首页JAVA_Spring
SpringBoot2 配置thymeleaf

SpringBoot2 配置thymeleaf

作者: kason_zhang | 来源:发表于2018-11-03 12:27 被阅读1次

    SpringBoot中开发web时使用thymeleaf作为前端

    1 配置

    properties文件修改为:

    <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <!--引入themeleaf-->
            <thymeleaf.version> 3.0.2.RELEASE </thymeleaf.version>
            <thymeleaf-layout-dialect.version> 2.1.1 </thymeleaf-layout-dialect.version>
        </properties>
    
    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <!-- Thymeleaf方言支持SpringSecurity 依赖-->
        
    

    然后reources中的application.properties文件加入thymeleaf的配置:

    # thymeleaf
    spring.thymeleaf.cache=false
    spring.thymeleaf.mode=HTML5
    

    2 提供html

    image.png

    在templates里面编写一个index.html文件

    3 编写一个Controller, 跳转到index.html

    package com.kason.kasonpro.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    /**
     * Created by zhangkai12 on 2018/6/19.
     */
    @Controller
    public class HomeController {
    
        @GetMapping("/")
        public String index() {
            return "index";
        }
        @RequestMapping("/test")
        public String test(){
            return "index";
        }
    }
    

    启动SpringBoot, 输入localhost:8080 发现可以正常加载html页面


    image.png

    4 使用thymeleaf模块传参

    html页面的修改:

    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    Hello
    
    <h2 th:text="${name}"></h2>
    </body>
    </html>
    
    

    相对于上个, 此处的更改有两处:
    1, xmlns:th="http://www.thymeleaf.org (加入这个才能使用themeleaf的语法)
    2, <h2 th:text="${name}"></h2> (具体语法使用)

    controller处的更改:

     @RequestMapping("/test")
        public String test(Model model){
            model.addAttribute("name","test-Model-submit-param");
            return "index";
        }
    

    方法中传入了Model参数, 此Model类会封装属性, 传给html页面, 此处是增加了一个name属性,其值是test-Model-submit-param

    更改上面两处之后, 运行, 输入http://localhost:8080/test, 显示如下:

    image.png

    5 thymeleaf 模板使用

    官网地址:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html

    • if语句, 判断是否为空 th:if
    <div th:if="${singleuser} != null ">
        <h3 th:text="${singleuser.name}">333</h3>
    </div>
    
    • 循环
      html修改:
    <div th:if="not ${#lists.isEmpty(list)}">
        <div th:each="user: ${list}">
            <p th:text="'名字: ' + ${user.name}"></p>
            <p th:text="'年龄: ' + ${user.age}"></p>
        </div>
    </div>
    

    controller代码修改:

    @GetMapping("userList")
        public String userList(Model model) {
            List<User> userList = new ArrayList<>();
            userList.add(new User("smith", 18));
            userList.add(new User("kate", 20));
            userList.add(new User("kason", 26));
            model.addAttribute("list", userList);
            return "index";
        }
    

    结果:


    image.png

    自定义:

    1.5.14.RELEASE
    pom 文件

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
    
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-security</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring4 -->
            <dependency>
                <groupId>org.thymeleaf</groupId>
                <artifactId>thymeleaf</artifactId>
                <version>3.0.2.RELEASE</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring4 -->
            <dependency>
                <groupId>org.thymeleaf</groupId>
                <artifactId>thymeleaf-spring4</artifactId>
                <version>3.0.2.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
    

    config

    package com.kason.kasonpro.config;
    
    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    import org.springframework.web.servlet.view.InternalResourceViewResolver;
    
    /**
     * Created by zhangkai12 on 2018/6/20.
     */
    @Configuration
    public class WebMvcConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware {
        private ApplicationContext applicationContext;
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.applicationContext = applicationContext;
        }
    
        /**
         * 配置请求视图映射
         * @return
         */
        @Bean
        public InternalResourceViewResolver resourceViewResolver() {
            InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
            //请求视图文件的前缀地址
            //internalResourceViewResolver.setPrefix("/WEB-INF/jsp/");
            //请求视图文件的后缀
            internalResourceViewResolver.setSuffix(".html");
            return internalResourceViewResolver;
        }
    
        /**
         * 视图配置
         * @param registry
         */
        @Override
        public void configureViewResolvers(ViewResolverRegistry registry) {
            System.out.println("------------------------------------------------------");
            registry.viewResolver(resourceViewResolver());
            System.out.println("*********加载***************************************");
        }
    }
    
    
    <thymeleaf.version>3.0.3.RELEASE</thymeleaf.version>
            <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>
            <thymeleaf-extras-springsecurity4.version>3.0.2.RELEASE</thymeleaf-extras-springsecurity4.version>
    <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf -->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf</artifactId>
            <version>${thymeleaf.version}</version>
        </dependency>
    
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring4</artifactId>
            <version>3.0.2.RELEASE</version>
        </dependency>
    <!-- Thymeleaf方言支持SpringSecurity 依赖-->
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity4</artifactId>
            <version>${thymeleaf-extras-springsecurity4.version}</version>
        </dependency>
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    import org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect;
    import org.thymeleaf.spring4.SpringTemplateEngine;
    import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
    import org.thymeleaf.spring4.view.ThymeleafViewResolver;
    import org.thymeleaf.templatemode.TemplateMode;
    
    /**
     * Created by 瓦力.
     */
    @Configuration
    @EnableWebMvc
    public class WebMvcConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware {
        @Value("${spring.thymeleaf.cache}")
        private boolean thymeleafCacheEnable = true;
    
        private ApplicationContext applicationContext;
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.applicationContext = applicationContext;
        }
    
        /**
         * 静态资源加载配置
         */
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        }
    
        /**
         * 模板资源解析器
         * @return
         */
        @Bean
        @ConfigurationProperties(prefix = "spring.thymeleaf")
        public SpringResourceTemplateResolver templateResolver() {
            SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
            templateResolver.setPrefix("classpath:templates/");
            templateResolver.setTemplateMode(TemplateMode.HTML5);
            templateResolver.setApplicationContext(this.applicationContext);
            templateResolver.setCharacterEncoding("UTF-8");
            templateResolver.setSuffix(".html");
            templateResolver.setCacheable(false);
            return templateResolver;
        }
    
        /**
         * Thymeleaf标准方言解释器
         */
        @Bean
        public SpringTemplateEngine templateEngine() {
            SpringTemplateEngine templateEngine = new SpringTemplateEngine();
            templateEngine.setTemplateResolver(templateResolver());
            // 支持Spring EL表达式
            templateEngine.setEnableSpringELCompiler(true);
    
            // 支持SpringSecurity方言
            SpringSecurityDialect securityDialect = new SpringSecurityDialect();
            templateEngine.addDialect(securityDialect);
            return templateEngine;
        }
    
        /**
         * 视图解析器
         */
        @Bean
        public ThymeleafViewResolver viewResolver() {
            ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
            viewResolver.setTemplateEngine(templateEngine());
            return viewResolver;
        }
    
        /**
         * Bean Util
         * @return
         */
        /*@Bean
        public ModelMapper modelMapper() {
            return new ModelMapper();
        }*/
    }
    
    
    
    

    相关文章

      网友评论

        本文标题:SpringBoot2 配置thymeleaf

        本文链接:https://www.haomeiwen.com/subject/eghoeftx.html