springboot+freemarker+restful

什么是freemarker?

FreeMarker是一种模板引擎,它可以用于生成各种类型的文档,比如HTML、XML、PDF、Word等。它可以通过简单的模板语法和数据模型来生成文档内容。与传统的JSP相比,FreeMarker的语法更加简洁和易读,并且可以很好地与前端框架结合使用。同时,FreeMarker还提供了一些高级功能,如国际化支持、条件语句、循环语句等,使得模板的编写更加方便和灵活。FreeMarker是一个开源的项目,使用Java语言编写,可以在不同的平台上运行。

springboot+freemarker配置文件

spring:
 freemarker:
 #freemarker和get一样会有缓存,如果为false那么就是清楚缓存。
  cache: false
 # 页面编码
  charset: UTF-8
 # 文档类型
  content-type: text/html;charset=UTF-8
  enabled: true
 # 模板后缀
  suffix: .ftl
 # 模板加载路径
  template-loader-path: classpath:/views/
# 配置模板里从哪里可以直接取request的属性 request是别名 request-context-attribute: request
  request-context-attribute: request
# 配置将request和session中的键值添加到AbstractTemplateView类的renderMergedOutputModel方法中的model这个Map参数中 expose-request-attributes: true
  expose-spring-macro-helpers: true
  # 配置模板里是否可以直接取session的属性 true 是允许
  expose-session-attributes: true
  settings:
   tag_syntax: auto_detect	# 配置标签语法为自动,页面可以将 <> 改为
        #[],为了区别 html 标签
   template_update_delay: 0	# 模板更新时间,单位秒
   default_encoding: UTF-8	# 默认编码字符集
   output_encoding: UTF-8	# 模板输出编码字符集
   locale: zh_CN	# 本地化配置
   date_format: yyyy-MM-dd	# 日期格式化
   time_format: HH:mm:ss	# 时间格式化 datetime_format: yyyy-MM-dd HH:mm:ss # 日期时间格式化 number_format: #.##	# 数字格式化
   boolean_format: true,false	# boolean格式化 # ignore,debug,html_debug,rethrow
    #  1.TemplateExceptionHandler.IGNORE_HANDLER简单地压制所有异常
    #  它对处理异常没有任何作用,也不会重新抛出异常,页面可以正常渲染,后台抛异常
    # 2.TemplateExceptionHandler.DEBUG_HANDLER打印堆栈信息和重新抛出异常。这是默认的异常控制器
    # 3.TemplateExceptionHandler.HTML_DEBUG_HANDLER和DEBUG_HANDLER相同 # 但是可以格式化堆栈跟踪信息,HTML页面,建议使用它而不是DEBUG_HANDLER
    #  4.TemplateExceptionHandler.RETHROW_HANDLER简单重新抛出所有异常而不会做其他的 事情
      #  5.使用自定义异常类实现TemplateExceptionHandler重写handleTemplateException方 法
   template_exception_handler: html_debug

这里使用了freemarker模板引擎,他会自动配置视图解析器
视图解析器的prefix就是template-loader-path,他的suffix就是suffix。因此我们在Controller页面中返回String的时候视图解析器会自动配置。

@Controller
public class ControllerTest {
    @RequestMapping("/{page}")
    public String testDo(@PathVariable String page) throws IOException {
        System.out.println(page);
        return page;
    }
}

返回的实际上是 /views/{page}.ftl

<#assign ctx=request.contextPath/>

这是FreeMarker模板语法的一个示例代码,其中assign指令可以用来创建模板变量,ctx是变量名,request.contextPath是变量的值。request是FreeMarker默认提供的一个全局变量对象,可以用来获取HTTP请求相关的信息。在这段示例代码中,我们使用request对象的contextPath属性来获取请求的上下文路径,并将其赋值给ctx变量。通过这种方式,我们可以在模板中使用ctx变量来引用上下文路径,而不必在每个需要使用上下文路径的地方都重复编写该代码。
不是基于
因此他需要

jsp中base标签:
他走的是全路径。协议://服务器名:服务器端口号/上下文路径/

<%
String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
%>
<html>
<head>
	<base href="<%=basePath%>">

但这个base是基于的意思,已知根路径在webapps下,那么这个base就是截止到webapps,因此在webapps下的路径照样还是写
springboot+freemarker+restful_第1张图片springboot+freemarker+restful_第2张图片

<#include “文件名.ftl”/>

这个和sql的 效果一样,只不过这个是sql,标题的是文件而已,也就是公用模板的提取。

你可能感兴趣的:(spring,boot,restful,java)