`

103. Spring Boot Freemarker特别篇之contextPath【从零开始学Spring Boot】

阅读更多

 

        需求缘起:有人在群里@我:请教群主大神一个问题,spring boot  + freemarker 怎么获取contextPath 头疼死我了,网上没一个靠谱的 。我就看看之前博客中的

Spring Boot使用模板freemarker】好像确实没有介绍到.ftl文件中如何获取contextPath,这就是本文解决要解决的问题

 

本章大纲:

(1)问题的提出;
(2)spring中是如何定义requestContextAttribute的;
(3)Spring Boot应该如何定义呢?
(4)有更好的解决方案嘛?
(5)总结

 

 

       接下来我们一起来看下本节的内容:

1)问题的提出;

       我们有时候需要在freemarker模板文件.ftl中获取contextPath,如果没有配置一些参数的话,那么是无法进行获取的。

 

2spring中是如何定义requestContextAttribute的;

       spring 中是使用配置文件的方法进行配置指定的,如下:

<property name="requestContextAttribute" value="request"/>

       配置完之后,我们就可以在我们的x.ftl文件中使用如下代码进行引入使用:

${request.contextPath}

 

3Spring 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

分享到:
评论
4 楼 qwfys200 2017-07-21  
~~~~~~
3 楼 yunnet 2017-04-20  
直接在ftl里面使用
${springMacroRequestContext.contextPath}
2 楼 林祥纤 2017-02-26  
k88520 写道
厉害了 楼主  简直太6
     哈哈哈   我已成为脑残粉


有你们我才开心.
1 楼 k88520 2017-02-26  
厉害了 楼主  简直太6
     哈哈哈   我已成为脑残粉

相关推荐

    从零开始学Spring Boot

    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》是一本面向初学者的指南,旨在帮助编程新手全面理解并掌握Spring Boot这一强大的Java开发框架。Spring Boot是Spring生态系统的一部分,它简化了配置,提供了快速构建应用程序的能力,使得...

    19. [视频]Spring Boot 添加JSP支持【从零开始学Spring Boot】

    以下是一个详细的过程,指导你如何从零开始在Spring Boot应用中集成并使用JSP。 首先,我们需要理解Spring Boot的默认视图解析机制。Spring Boot推荐使用Thymeleaf、Freemarker或Mustache等模板引擎,因为它们提供...

    18.[视频]使用模板(thymeleaf-freemarker)【从零开始学Spring Boot】

    标题中的“18.[视频]使用模板(thymeleaf-freemarker)【从零开始学Spring Boot】”指的是一个视频教程,该教程聚焦于Spring Boot中模板引擎的使用,特别是Thymeleaf和FreeMarker这两种技术。Spring Boot是一个快速...

    spring-boot-freemarker整合源码

    spring-boot-freemarker 整合源码

    spring-boot-reference.pdf

    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. ...

    Spring boot + Mybatis + Freemarker

    在IT行业中,Spring Boot、MyBatis和FreeMarker是三个非常重要的开源框架,它们共同构建了一个高效、便捷的Web开发环境。Spring Boot简化了Spring应用的初始搭建以及开发过程,MyBatis则是一个轻量级的持久层框架,...

    spring-boot-starter-freemarker-1.3.3.RELEASE.jar

    《Spring Boot与Freemarker及Redis的整合应用详解》 在现代Java开发中,Spring Boot以其简洁、快速的启动方式,成为了许多开发者的首选框架。本文将深入探讨Spring Boot如何与Freemarker模板引擎和Redis缓存系统...

    spring-boot-starter-freemarker-1.5.4.RELEASE.jar

    spring-boot-starter-freemarker-1.5.4.RELEASE.jar

    spring boot资料以及项目

    此外,Spring Boot还集成了Thymeleaf、FreeMarker等模板引擎,用于构建动态网页。 在Web开发方面,Spring Boot提供了Spring MVC框架,用于处理HTTP请求。资料中可能会有RESTful API设计、WebSocket、Swagger接口...

    Spring配置Freemarker视图解析器,配置多个视图解析器

    &lt;bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"&gt; &lt;!-- 设置Freemarker的配置属性,例如: --&gt; &lt;prop key="default_encoding"&gt;UTF-8 ...

    基于MAVEN的spring boot 环境搭建,已配置好freemarker 需要jdk 1.8

    spring.freemarker.template-loader-path=classpath:/templates/ spring.freemarker.charset=UTF-8 ``` 8. **编写Controller**: 创建Spring Boot的控制器类,处理HTTP请求并返回FreeMarker视图: ```java @...

    通过https://start.spring.io/生成的Spring Boot 1.5.17项目

    1. **起步依赖(Starter Dependencies)**:Spring Boot 的核心特性之一是起步依赖,它提供了一种简单的方式来添加所需的功能模块。在创建项目时,你可以选择包括数据访问、Web、安全等在内的各种起步依赖。在1.5.17...

    Spring.Boot.in.Action.2015.12

    这本书是Spring Boot学习者的重要参考资料,它涵盖了从基础到高级的各种主题,旨在帮助读者快速、高效地构建基于Spring Boot的Web应用程序和服务。 Spring Boot是Spring生态体系中的一个重要组成部分,它简化了...

    Spring Boot实战 ,丁雪丰 (译者).zip

    总的来说,《Spring Boot实战》这本书全面覆盖了Spring Boot从入门到进阶的各项知识点,无论是初学者还是有一定经验的开发者,都能从中受益。通过学习,读者将能够熟练掌握Spring Boot的使用,提升开发效率,并有...

    Spring Boot实战派(源码)

    《Spring Boot实战派》源码提供了丰富的学习材料,旨在帮助开发者深入理解并熟练掌握Spring Boot这一流行的Java后端开发框架。Spring Boot简化了Spring应用程序的初始设置和配置,使得开发人员能够快速构建可运行的...

    Spring 整合freemarker制作html页面简单demo(附带操作提示).rar

    spring.freemarker.template-loader-path=classpath:/templates/ spring.freemarker.charset=UTF-8 ``` 3. **创建模板**:在 `src/main/resources/templates` 目录下创建一个名为 `index.ftl` 的文件,这是我们的 ...

    Spring Boot核心技术-笔记-pdf版.pdf

    Spring Initializr是一个在线生成Spring Boot项目结构的工具,通过选择技术栈、版本等,可以快速生成一个基础的Spring Boot项目结构,便于开发者快速开始编码。 8. **Web开发** Spring Boot对Web开发提供了很好的...

    Spring Boot 系列教程 freemarker导出word下载

    在本教程中,我们将深入探讨如何使用Spring Boot和FreeMarker模板引擎来生成Word文档并进行下载。Spring Boot作为Java开发的快速启动框架,简化了配置和集成,而FreeMarker则是一个强大的模板语言,用于动态生成HTML...

Global site tag (gtag.js) - Google Analytics