如何在SpringBoot+Freemarker中获取项目根目录

 更新时间:2021年10月23日 15:07:40   作者:dolphin0516  
这篇文章主要介绍了如何在SpringBoot+Freemarker中获取项目根目录的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

在Freemarker中获取项目根目录

好多人 都说:

在配置文件中加入

spring.freemarker.request-context-attribute=request

在页面就可以

<#assign ctx=request.contextPath />

但是发现前台依然为 null(可能是我的配置有问题)

后来发现可以这样使用

<#assign ctx=springMacroRequestContext.contextPath />

不需要多余的配置

在Freemark模板引擎路径的几种设置方法

在SpringMVC中我们想返回视图是怎么做的

(1)SpringMVC中当我们想解析jsp视图的时候需要在spring.xml中有如下的配置

这里写图片描述

在SpringBoot中springboot不推荐我们使用jsp模板

向我们提供了freemark模板模板引擎来解析视图

1.在SpringBoot中如果我们没进行任何配置那么我们只需要在resources目录下创建一个templates文件夹举个例子。

(1).创建一个Controller类返回名称为first的视图

这里写图片描述

(2).在resource目录下创建一个名为first.ftl的文件(SpringBoot默认解析文件类型为ftl的文件)

这里写图片描述

(3)first.ftl中的内容

这里写图片描述

(4)请求结果

这里写图片描述

从上面的结果可以看出freemark为我们完成了视图解析

那么如果我们如何自定义freemark的模板引擎路径呢

有两种方式

第一种方式:

1.在resource目录下创建一个application.properties文件,SpringBoot在启动加载时会找到resource目录下的

application.properties文件,代码如下

这里写图片描述

(1)这里划红线的俩个点是需要注意的,对于suffix我们应该非常熟悉因为在之前配置jsp视图解析器的时候就用到过,是视图解析的文件类型(springboot中默认的解析文件类型是ftl,而我们将文件类型更改为fid格式)

(2)template-loader-parh也不难理解就是配置解析视图的路径

(3)目录结构

这里写图片描述

2.application.properties配置完成后我们看一下效果

这里写图片描述

以上就是如何通过application.properties配置修改freemark返回路径

第二种方式:

1.创建Java类继承WebMvcConfigurerAdapter

代码如下

这里写图片描述 这里写图片描述

目录结构

这里写图片描述

运行结果

这里写图片描述

以上就是通过俩种方式配置freemark返回路径

ps:在反复测试freemark返回路径的过程中发现了很有意思的几点感兴趣的可以深入研究一下

(1)springboot如果没配置application.properties文件或者没创建工作类的时候我们都知道默认返回ftl格式文件,但是如果我们通过工具类改变freemark路径我们会发现,虽然我们配置了返回fap类型的文件,但是当我们把fap改成ftl文件之后,freemark仍然可以解析

(2)通过application.properties文件改变freemark返回路径的话,只能解析application.properties设置的文件类型,ftl是无效的

(3)如果同时加载application.properties文件和工具类的话,工具类的权重比较高,freemark会返回工具类中的配置,但是在第一点我说过如果光使用工具类的话freemark是可以返回ftl格式文件的,但是如果application.properties文件和工具类都进行启动的话ftl就无效了

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java判断是否空最简单的方法

    java判断是否空最简单的方法

    在本篇文章里小编给大家整理的一篇关于java判断是否空最简单的方法,有兴趣的读者们可以参考下。
    2019-12-12
  • Spring中@Scheduled注解的参数详解

    Spring中@Scheduled注解的参数详解

    这篇文章主要介绍了Spring中@Scheduled注解的参数详解,@Scheduled注解的使用这里不详细说明,@Scheduled注解有几个参数需要说明一下,直接对8个参数进行讲解,需要的朋友可以参考下
    2023-11-11
  • Java中序列化与反序列化的特性解读

    Java中序列化与反序列化的特性解读

    这篇文章主要介绍了Java中序列化与反序列化的特性解读,当我们需要将内存中的对象持久化到磁盘,数据库中时, 当我们需要与浏览器进行交互时,当我们需要实现 RPC 时, 这个时候就需要序列化和反序列化了,需要的朋友可以参考下
    2023-08-08
  • java实现简单的图书管理系统

    java实现简单的图书管理系统

    这篇文章主要为大家详细介绍了java实现简单的图书管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • java图片滑动验证(登录验证)原理与实现方法详解

    java图片滑动验证(登录验证)原理与实现方法详解

    这篇文章主要介绍了java图片滑动验证(登录验证)原理与实现方法,结合实例形式详细分析了java图片滑动登录验证的相关原理、实现方法与操作技巧,需要的朋友可以参考下
    2019-09-09
  • spring security国际化及UserCache的配置和使用

    spring security国际化及UserCache的配置和使用

    这篇文章主要介绍下国际化的配置及UserCache的配置及使用教程,感兴趣的朋友参考下实现代码吧
    2017-09-09
  • struts2实现多文件上传

    struts2实现多文件上传

    这篇文章主要为大家详细介绍了struts2实现多文件上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Spring中Controller应用深入理解

    Spring中Controller应用深入理解

    这篇文章主要介绍了Spring项目中的Controller,Spring Controller本身也是一个Spring Bean,只是它多提供了Web能力,只需要造类上提供@Controller注解即可
    2022-12-12
  • Spring高阶用法之自定义业务对象组件化

    Spring高阶用法之自定义业务对象组件化

    这篇文章主要介绍了Spring高阶用法之自定义业务对象组件化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • SpringBoot中的JPA(Java Persistence API)详解

    SpringBoot中的JPA(Java Persistence API)详解

    这篇文章主要介绍了SpringBoot中的JPA(Java Persistence API)详解,JPA用于将 Java 对象映射到关系型数据库中,它提供了一种面向对象的方式来操作数据库,使得开发者可以更加方便地进行数据持久化操作,需要的朋友可以参考下
    2023-07-07

最新评论