需求缘起:有人在群里@我:请教群主大神一个问题,spring boot + freemarker 怎么获取contextPath 头疼死我了,网上没一个靠谱的 。我就看看之前博客中的
【Spring Boot使用模板freemarker】好像确实没有介绍到在.ftl文件中如何获取contextPath,这就是本文解决要解决的问题。
(1)问题的提出;
(2)spring中是如何定义requestContextAttribute的;
(3)Spring Boot应该如何定义呢?
(4)有更好的解决方案嘛?
(5)总结
接下来我们一起来看下本节的内容:
(1)问题的提出;
我们有时候需要在freemarker模板文件.ftl中获取contextPath,如果没有配置一些参数的话,那么是无法进行获取的。
(2)spring中是如何定义requestContextAttribute的;
在spring 中是使用配置文件的方法进行配置指定的,如下:
<property name="requestContextAttribute" value="request"/>
配置完之后,我们就可以在我们的x.ftl文件中使用如下代码进行引入使用:
${request.contextPath}。
(3)Spring Boot应该如何定义呢?
在spring 中是使用配置文件的方式,但是我们知道spring boot基本上零配置编程的(虽然也支持配置文件的方式),那么我们应该怎么办呢?我们可以之定义一个FreemarkerViewResolver进行指定requestContextPath属性值,具体代码如下:
package com.kfit.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver; /** * * @author Angel --守护天使 * @version v.0.1 * @date 2017年1月15日 */ @Configuration @EnableWebMvc public class MvcConfig extends WebMvcConfigurerAdapter{ @Bean public FreeMarkerViewResolver freeMarkerViewResolver() { System.out.println("MvcConfig.freeMarkerViewResolver()"); FreeMarkerViewResolver resolver = new FreeMarkerViewResolver(); resolver.setPrefix(""); resolver.setSuffix(".ftl"); resolver.setContentType("text/html; charset=UTF-8"); resolver.setRequestContextAttribute("request"); return resolver; } }
添加以上的代码之后,就可以在x.ftl文件中使用${request.contextPath}了。
(4)有更好的解决方案嘛?
以上方式虽然也能解决问题,但是总觉得绕了一个圈子,我们原本使用freemarker的时候,我们使用的是在配置文件application.properties文件进行使用的,现在又回到了代码的方式去引入了,那么要思考下我们可不可以在application.properties进行直接指定呢,答案是可以的。我们只需要在application.properties中添加如下配置:
spring.freemarker.request-context-attribute=request
那么就可以在ftl文件中进行使用${request.contextPath}了。
(5)总结
本文说了这么说,其实很简单就两个步骤:
1、在application.properties添加如下信息:
spring.freemarker.request-context-attribute=request
2、在x.ftl文件中进行使用:
${request.contextPath}
BTW:有时候我们为了代码的使用简单,request-context-attribute也会设置为ctx,那么使用的时候就是 ${ctx.contextPath}
à悟空学院:https://t.cn/Rg3fKJD
学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!
SpringBoot视频:http://t.cn/A6ZagYTi
Spring Cloud视频:http://t.cn/A6ZagxSR
SpringBoot Shiro视频:http://t.cn/A6Zag7IV
SpringBoot交流平台:https://t.cn/R3QDhU0
SpringData和JPA视频:http://t.cn/A6Zad1OH
SpringSecurity5.0视频:http://t.cn/A6ZadMBe
Sharding-JDBC分库分表实战:http://t.cn/A6ZarrqS
分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr
相关推荐
1.13 Spring Boot配置ContextPath 1.14 Spring Boot改变JDK编译版本 1.15 处理静态资源(默认资源映射) 1.16 处理静态资源(自定义资源映射) 1.17 Spring Boot定时任务的使用 1.18 Spring Boot使用Druid和监控配置 ...
《从零开始学Spring Boot》是一本面向初学者的指南,旨在帮助编程新手全面理解并掌握Spring Boot这一强大的Java开发框架。Spring Boot是Spring生态系统的一部分,它简化了配置,提供了快速构建应用程序的能力,使得...
以下是一个详细的过程,指导你如何从零开始在Spring Boot应用中集成并使用JSP。 首先,我们需要理解Spring Boot的默认视图解析机制。Spring Boot推荐使用Thymeleaf、Freemarker或Mustache等模板引擎,因为它们提供...
标题中的“18.[视频]使用模板(thymeleaf-freemarker)【从零开始学Spring Boot】”指的是一个视频教程,该教程聚焦于Spring Boot中模板引擎的使用,特别是Thymeleaf和FreeMarker这两种技术。Spring Boot是一个快速...
spring-boot-freemarker 整合源码
Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...
在IT行业中,Spring Boot、MyBatis和FreeMarker是三个非常重要的开源框架,它们共同构建了一个高效、便捷的Web开发环境。Spring Boot简化了Spring应用的初始搭建以及开发过程,MyBatis则是一个轻量级的持久层框架,...
《Spring Boot与Freemarker及Redis的整合应用详解》 在现代Java开发中,Spring Boot以其简洁、快速的启动方式,成为了许多开发者的首选框架。本文将深入探讨Spring Boot如何与Freemarker模板引擎和Redis缓存系统...
spring-boot-starter-freemarker-1.5.4.RELEASE.jar
此外,Spring Boot还集成了Thymeleaf、FreeMarker等模板引擎,用于构建动态网页。 在Web开发方面,Spring Boot提供了Spring MVC框架,用于处理HTTP请求。资料中可能会有RESTful API设计、WebSocket、Swagger接口...
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <!-- 设置Freemarker的配置属性,例如: --> <prop key="default_encoding">UTF-8 ...
spring.freemarker.template-loader-path=classpath:/templates/ spring.freemarker.charset=UTF-8 ``` 8. **编写Controller**: 创建Spring Boot的控制器类,处理HTTP请求并返回FreeMarker视图: ```java @...
1. **起步依赖(Starter Dependencies)**:Spring Boot 的核心特性之一是起步依赖,它提供了一种简单的方式来添加所需的功能模块。在创建项目时,你可以选择包括数据访问、Web、安全等在内的各种起步依赖。在1.5.17...
这本书是Spring Boot学习者的重要参考资料,它涵盖了从基础到高级的各种主题,旨在帮助读者快速、高效地构建基于Spring Boot的Web应用程序和服务。 Spring Boot是Spring生态体系中的一个重要组成部分,它简化了...
总的来说,《Spring Boot实战》这本书全面覆盖了Spring Boot从入门到进阶的各项知识点,无论是初学者还是有一定经验的开发者,都能从中受益。通过学习,读者将能够熟练掌握Spring Boot的使用,提升开发效率,并有...
《Spring Boot实战派》源码提供了丰富的学习材料,旨在帮助开发者深入理解并熟练掌握Spring Boot这一流行的Java后端开发框架。Spring Boot简化了Spring应用程序的初始设置和配置,使得开发人员能够快速构建可运行的...
spring.freemarker.template-loader-path=classpath:/templates/ spring.freemarker.charset=UTF-8 ``` 3. **创建模板**:在 `src/main/resources/templates` 目录下创建一个名为 `index.ftl` 的文件,这是我们的 ...
Spring Initializr是一个在线生成Spring Boot项目结构的工具,通过选择技术栈、版本等,可以快速生成一个基础的Spring Boot项目结构,便于开发者快速开始编码。 8. **Web开发** Spring Boot对Web开发提供了很好的...
《Spring Boot企业级开发教程》配套资源.zip是一个包含多种学习材料的压缩文件,专为学习和研究Spring Boot的企业级开发而设计。这个资源包旨在帮助用户深入理解和掌握Spring Boot框架,以及与其相关的Java和后端...