`

Spring Boot Freemarker特别篇之contextPath

    博客分类:
  • JAVA
阅读更多
【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}
分享到:
评论

相关推荐

    从零开始学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-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. ...

    SpringBoot整合freemarker的讲解

    spring.freemarker.template-loader-path=classpath:/templates # 关闭缓存,及时刷新,上线生产环境需要修改为true spring.freemarker.cache=false spring.freemarker.charset=UTF-8 spring.freemarker.check-...

    JAVA集成Freemarker生成静态html过程解析

    spring.freemarker.request-context-attribute=request spring.freemarker.settings.number_format=0.########## ``` 这些配置告诉Spring Boot在哪里查找模板文件(这里是类路径下的`templates`目录),模板文件的...

    springMb搭建

    - Web服务器配置:可以配置server.*属性,如端口号(server.port)、上下文路径(server.context-path)等。 - Thymeleaf模板引擎:通过thymeleaf.*属性调整模板引擎行为,如thymeleaf.cache=false禁用缓存。 - ...

    SpringBoot整合模板引擎过程代码实例

    spring.freemarker.request-context-attribute=request spring.freemarker.suffix=.ftl ``` 3. 在 resources 目录下新建一个 templates 目录,并在这个目录下新建一个以 .ftl 结尾的文件,然后将 HTML 代码复制进去...

    SpringMVCDemo例程

    ${pageContext.request.contextPath}/login" method="post"&gt; 用户名:&lt;input type="text" name="username"&gt;&lt;br&gt; 密码:&lt;input type="password" name="password"&gt;&lt;br&gt; 登录"&gt; ``` - 当后端接口返回成功时,...

    SpringBoot整合多数据源

    context-path: /your-app-context-path undertow: enabled: true ``` - `SpringBoot_jsp`:虽然SpringBoot推荐使用模版引擎,但依然支持JSP视图解析。要在项目中使用JSP,需要添加Tomcat依赖,并配置视图解析器...

    SpringBoot .yml

    其中,`application.yml`文件作为Spring Boot项目的配置文件之一,允许开发者以YAML格式对应用程序进行配置,提供了一种更加灵活、易读的方式来管理项目配置信息。 #### 二、YAML文件配置详解 本节将详细介绍`...

    ssh2配置 myeclips

    在MyEclipse中,可以通过右键点击项目 -&gt; “Build Path” -&gt; “Configure Build Path” -&gt; “Libraries” -&gt; “Add Library” -&gt; “Spring Framework”来添加Spring库。之后,需要创建`applicationContext.xml`配置...

    luckymoney.zip

    在"luckymoney.zip"项目中,我们可能会看到有关数据库配置(如数据源、JPA或MyBatis)、服务器配置(如端口号、context-path)以及其他定制化配置。 在SpringBoot的实际应用中,自动配置是其一大特色。通过@...

    struts2的架包和搭建开发环境

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web应用程序...然而,随着Spring Boot等现代框架的崛起,Struts2的市场份额有所下降,但其设计理念和模式仍然对学习Java web开发有着重要的参考价值。

    单独使用struts的包

    Struts是Apache软件基金会下的一个开源项目,主要是一款用于构建企业级...在实际项目中,尽管许多现代框架(如Spring Boot)已集成了更多功能,但理解并熟练掌握Struts2的基础知识仍然对提升Java Web开发技能大有裨益。

Global site tag (gtag.js) - Google Analytics