当前位置: 首页 > news >正文

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-8enabled: true# 模板后缀suffix: .ftl# 模板加载路径template-loader-path: classpath:/views/
# 配置模板里从哪里可以直接取request的属性 request是别名 request-context-attribute: requestrequest-context-attribute: request
# 配置将request和session中的键值添加到AbstractTemplateView类的renderMergedOutputModel方法中的model这个Map参数中 expose-request-attributes: trueexpose-spring-macro-helpers: true# 配置模板里是否可以直接取session的属性 true 是允许expose-session-attributes: truesettings: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,标题的是文件而已,也就是公用模板的提取。

相关文章:

springboot+freemarker+restful

什么是freemarker? FreeMarker是一种模板引擎&#xff0c;它可以用于生成各种类型的文档&#xff0c;比如HTML、XML、PDF、Word等。它可以通过简单的模板语法和数据模型来生成文档内容。与传统的JSP相比&#xff0c;FreeMarker的语法更加简洁和易读&#xff0c;并且可以很好地…...

基于Kubernetes集群构建大中型企业CICD应用平台(1)-- devOps

一、DevOps介绍 软件开发最开始是由两个团队组成&#xff1a; 开发计划由开发团队从头开始设计和整体系统的构建。需要系统不停的迭代更新。 运维团队将开发团队的Code进行测试后部署上线。希望系统稳定安全运行。 这看似两个目标不同的团队需要协同完成一个软件的开发。 …...

什么是模型鲁棒性和泛化能力

目录 1、鲁棒性 2、泛化能力 1、鲁棒性 定义&#xff1a;在统计学领域和机器学习领域&#xff0c;对异常值也能保持稳定、可靠的性质&#xff0c;称为鲁棒性。比如说&#xff0c;计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下&#xff0c;能否不死机、不崩溃&a…...

AI翻译工具分享

LanguageX简介 冠军翻译引擎交互式翻译,为专业译者而生的新一代译者工具 自2017年神经网络机器翻译流行以来,“机器翻译替代人工翻译”的观点屡见不鲜。作为一个技术和语言背景结合的团队,LanguageX认为语言服务是高度复杂、需要创意的智力活动,并肩负着人类沟通的重要使命。La…...

选男友最好的方式就是爬山

爬山&#xff0c;作为一种户外运动&#xff0c;一直备受青睐&#xff0c;拥有着许多的好处。而对于现代人来说&#xff0c;选择一位合适的伴侣&#xff0c;也是一件非常重要的事情。 那么&#xff0c;为什么不将两者结合起来&#xff0c;用爬山来寻找最合适的男友呢&#xff1f…...

C++面经:初始化全局变量和未初始化全局变量有什么区别

全局变量初始化而且初始值不为0&#xff0c;那么这样的全局变量是放在内存的.data段的&#xff0c;如果全局变量初始值为0或者未初始化&#xff0c;那么这样的全局变量是放在.bss段的。 考点&#xff1a; 考察C/C语言内存模型&#xff0c;.data&#xff0c;.bss段存放的内容。 …...

vue-2 指令:

指令 什么是html属性&#xff1a;就是用来扩展html标签的功能&#xff0c;属性是写在html的开发标签中&#xff1a;属性“属性值”&#xff0c; 指令就是用来扩展在vue中标签的功能 {{}} &#xff1a;模板语法&#xff0c;文本插值 不可解析html标签 {{ 可以写变量&#x…...

非常提效的7款原型工具推荐

原型图工具允许在开发前进行测试和迭代过程&#xff0c;可以帮助节省大量的开发时间和成本。在本文中&#xff0c;我们盘点了7个易于使用的原型图工具&#xff0c;以提高您的生产力&#xff01; 1.即时设计 即时设计是一款免费的在线 UI 设计工具&#xff0c;无系统限制&…...

最新Kafka和RabbitMQ消息队列经典面试题汇总(含答案)

最新Kafka和RabbitMQ消息队列经典面试题汇总 1.消息队列的应用场景有哪些?2.RabbitMQ 有哪些优点?3.RabbitMQ 有哪些重要的角色?4.RabbitMQ 有哪些重要的组件?它们有什么作用?5.什么是消息持久化?6.RabbitMQ 要实现消息持久化,需要满足哪些条件?7.消息持久化有哪些缺点…...

软件测试行业对新人友好吗?

软件测试真的算是对新人小白非常友好的学科了&#xff0c;但是你也千万不要抱有幻想&#xff0c;觉得轻轻松松就能掌握真正的技能&#xff0c;然后如愿找到高薪工作。从0到1还是需要一个过程的&#xff0c;也是需要你付出相当大的努力去学习的 随着人工智能时代的到来&#xf…...

Python requests 模块

Python中的requests模块是一个HTTP客户端库&#xff0c;它允许您向任何Web服务器发送HTTP请求并获取响应。 下面是一个简单的示例&#xff0c;向某个网站发送一个HTTP GET请求&#xff1a; python import requests response requests.get("http://www.example.com&quo…...

IOC理论推导

1.UserDao接口 package com.kuang.dao;public interface UserDao {void getUser(); }2.UserDaoImpl业务接口 package com.kuang.dao;public class UserDaoImpl implements UserDao{Overridepublic void getUser() {System.out.println("默认获取用户数据");} }3.Us…...

我的一些感悟

记录一些感悟&#xff0c;不定时更新 当面临稍微突发的情况时&#xff0c;感到慌乱&#xff1b;遭遇一点挫折时&#xff0c;情绪低落&#xff1b;面对问题&#xff0c;不是首先思考解决办法&#xff0c;而是抱怨不已。这种心态基本上无法取得成功 做事雷厉风行&#xff0c;需要…...

NC 人力薪酬管理怎么结账?

NC 人力薪酬管理结账流程 1、先在【薪资发放】节点选择相应的薪资方案进行查询操作&#xff0c;然后进行计算操作&#xff1b; 2、计算操作完后&#xff0c;再进行审核操作&#xff1b; 3、如果薪资方案勾选了“发放数据需要审批”属性&#xff0c;则需要在【发放申请】节点…...

JavaWeb编程面试题——Spring Boot

目录 引言一、面试题导航二、面试题目1.什么是SpringBoot&#xff1f;2.谈谈你对SpringBoot的理解&#xff1f;3.为什么需要SpringBoot&#xff1f;4.SpringBoot的配置文件有哪几种格式&#xff1f;5.SpringBoot支持哪些日志框架&#xff1f;推荐和默认的日志框架是哪个&#x…...

Educational Codeforces Round 148 (Rated for Div. 2) A,B,C

A. New Palindrome 要求&#xff1a;对于一个回文串&#xff0c;判断是否可以转换为其他回文串 思路&#xff1a;如果回文串的前一半存在不相同的字符&#xff0c;就可以转换 #include<bits/stdc.h> using namespace std;int n; string s;void solve(){cin>>s;boo…...

C#串口通信从入门到精通(15)——流量控制(XON/XOFF协议实现)

文章目录 前言1、XON/XOFF流控原理介绍2、XON/XOFF发送端C#代码实现3、XON/XOFF接收端C#代码实现前言 通信双方在一个发送能力大于接收处理能力时若不限制发方的数据流量则最终会“淹没”接收方而导致数据丢失,针对这个问题常规的有硬件流控和软件流控方法,本文介绍的就是软…...

基于Kubernetes集群构建大中型企业CICD应用平台(2)--code阶段工具gitlab安装

这里我们为gitlab服务器准备一台虚拟机&#xff1a;192.168.19.6-gitlab服务器 在code阶段&#xff0c;我们需要将不同版本的代码存储到一个仓库中&#xff0c;常见的版本控制工具就是SVN或者Git&#xff0c;这里我们采用Git作为版本控制工具&#xff0c;GitLab作为远程仓库。…...

数字化转型浪潮下,如何选择适合企业的低代码平台

近日&#xff0c;艾瑞咨询发布了《数字新生态&#xff1a;中国低代码厂商发展白皮书》&#xff08;以下简称“报告”&#xff09;&#xff0c;在该报告中&#xff0c;艾瑞咨询对中国当前的低代码市场进行了非常细致的解构&#xff0c;并针对当前企业数字化转型&#xff0c;对低…...

利用 Amazon API Gateway 和 Amazon Lambda 处理 Cloudfront 的内容请求

概述 国内 Amazon Cloudfront 目前不支持 Lambdaedge 功能&#xff0c;不能实现基于 CDN 的 A/B 测试、rewrite、redirect、token 认证和产生 response 等功能&#xff0c;本文介绍如何利用 API Gateway 和 Lambda 实现 Lambdaedge 的功能。下面实验介绍通过 request header 参…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...