blogSite

我是谁?我在哪儿?我在干什么?

View project on GitHub

spring boot引入freemarker模板

简单步骤

  • 修改pom.xml,增加freemarker所需的jar包
      ……
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-freemarker</artifactId>
      </dependency>
      ……
    
  • 修改application.properties文件,添加freemarker相关配置(在resources资源文件夹下新建templates文件夹)
      ……
      # view
      # 整合freemarker相关配置
      # 是否开启freemarker缓存,本地建议为false,生产上建议为true
      spring.freemarker.cache=false
      spring.freemarker.charset=utf-8
      # 指定HttpServletRequest的属性是否可以覆盖controller的model的同名项
      spring.freemarker.allow-request-override=false
      # 指定HttpSession的属性是否可以覆盖controller的model的同名项
      spring.freemarker.check-template-location=true
      # 类型
      spring.freemarker.content-type=text/html
      # 设定所有request的属性在merge到模板的时候,是否要都添加到model中
      spring.freemarker.expose-request-attributes=true
      # 设定所有HttpSession的属性在merge到模板的时候,是否要都添加到model中
      spring.freemarker.expose-session-attributes=true
      # 文件后缀
      spring.freemarker.suffix=.ftl
      #spring.freemarker.suffix=.html
      # 路径
      spring.freemarker.template-loader-path=classpath:/templates/
      ……
    
  • 在templates文件夹下添加模板文件index.ftl
      随便的html文件都可以
    
  • 在Controller文件中增加对应的访问
      package top.z_f.simpleerp.controller;
    
      import org.slf4j.Logger;
      import org.slf4j.LoggerFactory;
      import org.springframework.stereotype.Controller;
      import org.springframework.ui.ModelMap;
      import org.springframework.web.bind.annotation.RequestMapping;
    
      import top.z_f.simpleerp.App;
    
      /**
      * 页面接口访问
      * @author zhangzhen
      *
      */
      @Controller
      @RequestMapping("web")
      public class HelloWebController {
            
          private final static Logger logger = LoggerFactory.getLogger(App.class);
    
          @RequestMapping("/index")
          public String index() { 
              logger.info("访问Web页面,无参数");
              return "index";
          }
            
          @RequestMapping("/userManage")
          public String userManage(ModelMap map) { 
              logger.info("访问Web页面,自定义参数");
                
      //		map.put("userName", "状态不佳,头痛、恶心、难受。。。");
              map.put("userName", "2019-06-03 freemarker访问成功,这个web的模板是不是相当于建立好了。。。鼓掌。。。");
    
              // 在templates文件夹下新建user_manage,在目录user_manage下建userTest.ftl,内容如下
              // 内容 = ${userName}
              return "user_manage/userTest";
          }
      }
    
  • @RestController和@Controller区别
    • @RestController:用于api类型的访问,返回json串
    • @Controller:用于web网页类型的访问,返回到某个页面
  • 上面的访问会出现无法访问静态文件的问题(templates下新建的static文件夹),需要设置静态资源管理配置
      package top.z_f.simpleerp.config.web;
    
      import org.springframework.context.annotation.Configuration;
      import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
      import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
    
      /**
      * 
      * @author zhangzhen
      * @date 2019-06-02
      *
      */
      @Configuration
      public class WebMvcConfig extends WebMvcConfigurationSupport {
    
          /**
          * 
          * 设置静态资源访问路径
          * 
          * 将所有/static/** 访问都映射到classpath:/static/ 目录下
          */
          @Override
          public void addResourceHandlers(ResourceHandlerRegistry registry) {
              registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
          }
      }
    
  • 至此,就可以访问ftl模板,并且在模板中加载js、css和相关图片了。访问地址http://localhost:8089/web/index

参考文档

上一篇:MyBatis PageHelper分页 下一篇:spring boot打包部署

首页 > 学习总览 > 开发语言 > Java