springboot+freemarker+restful

news2024/11/23 1:21:10

什么是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下的路径照样还是写
在这里插入图片描述在这里插入图片描述

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

这个和sql的 <include refid="Base_Column_List" />效果一样,只不过这个是sql,标题的是文件而已,也就是公用模板的提取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/519205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

女生学习软件测试怎么样?

在IT技术行业&#xff0c;女生学习还是有很大优势的。女生相较于男生更有耐心&#xff0c;包容性强&#xff0c;心思细腻&#xff0c;对细节把控更好&#xff0c;同时还能帮助团队男女平衡&#xff0c;活跃气氛。 编程是一个只要你肯学习就会有回报的行业&#xff0c;不论男生…

1W字理解Java虚拟机——JVM

目录 一、初识JVM 二、JVM执行流程 三、内存区域划分&#xff08;JVM运行时数据区&#xff09; 3.1 本地方法栈&#xff08;线程私有&#xff09; 3.2 程序计数器&#xff08;线程私有&#xff0c;无并发问题&#xff09; 3.3 JVM虚拟机栈&#xff08;线程私有&#xff0…

【小程序】微信云托管对象存储管理

微信云托管对象存储用于存放数据或文件&#xff0c;一般用于较大数据或较大文件上传时的中转对象&#xff0c;避免直接上传到服务端&#xff0c;影响服务性能。 对象存储 开通了云托管平台后会自动开通对象存储功能。简单理解就是一个文件目录即可。 存储文件 文件名称&…

串口全双工通信与串口中断

1.串口通信编程 STC-ISP串口助手的使用&#xff1a; 文本模式和HEX模式的区别&#xff1a;文本模式就是那些可打印的字符。HEX模式就是这些可打印字符对应的16进制。它们都对应相同的ASCII码&#xff08;用十进制表示&#xff09;。 很多小白在程序编写完成后调试时会搞不清楚…

利用notepad++处理数据,再用excel做则线图

1、利用串口调试XCOM V2.8得到数据 2、利用Notepad编辑数据 利用正则表达式 删除时间戳 移除空行 继续删掉不要的数据 3、用excel生成折线图 复制数据到excel excel自动根据上文公式填充计算 输入0.1和0.2 框选0.1和0.2&#xff0c;下拉

JavaScript-jQuery的使用 + JS的案例

目录 点击更换图片 猜数字 搜索页面展示 表白墙 点击更换图片 我们先看下面这个例子: 使用input里面的button按钮, 并且利用函数, 将一个搜狗logo转换为百度logo: <!DOCTYPE html> <html lang"en"> <head><meta charset&…

Maven下载安装及IDEA配置Maven的超详细教程

Maven下载安装及IDEA配置Maven的超详细教程 1、IntelliJ IDEA 下载、安装及配置过程2、maven下载、安装、配置过程2.1 mavan下载2.2 安装2.3 配置 3、在IDEA中配置Maven3.1 进入设置界面3.2 maven配置 4、IDEAmaven创建工程示例 Maven是一个能使我们的java程序开发节省时间和精…

ssl证书过期

SSL证书验证网站所有者的身份&#xff0c;并为其访问者建立与服务器的安全加密连接。它保护他们的安全和隐私。 但SSL证书并非永远有效。与您的驾驶执照或护照一样&#xff0c;SSL证书也有过期日期。过期日期后&#xff0c;服务器的身份不再受信任。 为什么网站安全证书会过期…

C++ 类与对象中类的深入知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏

绪论 本章我们接着对类和对象进行探索&#xff0c;这是一个在我们c中比较重要的知识点&#xff0c;下面我们才是我们类和对象的更加深入且困难的知识点&#xff0c;希望你能通过这篇文章对类其有更加深入的了解。 话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑观看…

使用Taskflow完成简历信息提取

构建模型的步骤&#xff1a; 首先要进行数据处理&#xff0c;抽取简历文件中的数据。 首先要准备数据集&#xff0c;大赛提供的数据集中多为word文档&#xff0c;都为.docx格式&#xff0c; docx文件是基于 XML 的&#xff0c;可以包含文本&#xff0c;对象&#xff0c;样式&…

想让你的应用程序更加可靠?来了解Spring事务的回滚机制吧!

嗨&#xff0c;大家好&#xff0c;我是小米&#xff0c;今天要和大家聊一聊关于Spring框架事务的回滚源码实现。 相信对于使用Spring框架的小伙伴来说&#xff0c;事务管理肯定是非常重要的一个环节&#xff0c;事务的管理不好很容易出现各种问题&#xff0c;如数据不一致等。…

二十五:修改交易

1.功能需求 点击交易的复选框&#xff0c;然后点击修改按钮。进行数据的页面填充 1.流程图 1.代码实现 TranMapper /*** 根据id查询交易*/Tran selectTranDetailFortranId(String tranId); <!-- Tran selectTranDetailFortranId(String tranId);--><select id"…

项目集战略一致性

项目集战略一致性是识别项目集输出和成果&#xff0c;以便与组织的目标和目的保持一致的绩效领域。 本章内容包括&#xff1a; 1 项目集商业论证 2 项目集章程 3 项目集路线图 4 环境评估 5 项目集风险管理战略 项目集应与组织战略保持一致&#xff0c;并促进组织效益的实现。为…

【博客系统】页面设计(附完整源码)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、页面介绍 二、预期效果 1、博客列表页效…

刚面试了一位5年的Android开发,一问三不知,他还反怼我...

最近帮部门主管面试了很多人&#xff0c;从简历上看这些人的工作年限都不短&#xff0c;但做的都是一些传统的项目&#xff0c;想做现在大环境越来越难&#xff0c;大家找工作都不容易&#xff0c;就打算见一见。 在沟通中发现&#xff0c;由于年限不小&#xff0c;他们的定位…

十、Feign客户端

目录 1、在springcloud-order项目中引入Feign客户端的依赖 2、在server-order服务的启动类中添加注解EnableFeignClients 3、使用FeignClient注解声明Feign客户端需要调用的远程接口 3.1、server-pay服务提供远程接口Controller 3.2、server-member服务提供远程接口Contro…

ES基础知识总结含SQL、DSL、GOLANG

一、简介 Elasticsearch是一个基于Lucene的全文搜索和分析引擎&#xff0c;Lucene Core是一个完全用Java编写的高性能、全功能搜索引擎库。 它可以快速地存储、实时搜索和分析大量数据。 它可以扩展到上百台服务器&#xff0c;处理PB级数据。PB 2^50 Byte&#xff0c; 在数…

联通数科面试准备

Spring中Bean的生命周期 Spring Bean的生命周期全过程分为5个阶段&#xff0c;创建前准备阶段、创建实例阶段、依赖注入阶段和容器缓存阶段以及销毁实例阶段。 阶段1&#xff1a;创建前准备阶段这个阶段主要是在开始Bean加载之前&#xff0c;从Spring上下文中去获取相关的配置…

如何使用Alchemy开发NFT智能合约(ERC721)

&#x1f978; 本教程翻译自官网&#xff1a;[https://docs.alchemy.com/docs](https://docs.alchemy.com/docs)。对部分内容进行了修改。教程中所有实例经过本人实践&#xff0c;代码可见&#xff1a;https://github.com/ChuXiaoYi/web3Study 使用Solidity开发智能合约并在区块…

2022 第十三届蓝桥杯大赛软件赛决赛, 国赛,C/C++ 大学B组题解

2022 第十三届蓝桥杯大赛软件赛决赛, 国赛&#xff0c;C/C 大学B组题解 文章目录 第1题 —— 2022 &#xff08;5分&#xff09;第2题 —— 钟表 &#xff08;5分&#xff09;第3题 —— 卡牌 &#xff08;10分&#xff09;第4题 —— 最大数字 &#xff08;10分&#xff09;第…