freemarker视图模板使用

本文介绍了如何在SpringMVC中配置并使用Freemarker模板。首先,通过添加依赖和配置spring-mvc.xml使项目整合SpringMVC。接着,在指定路径下创建FTL文件,其语法与HTML相似。然后,通过控制器返回Freemarker视图。此外,还提及了通过注解进行非规范配置的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、配置

  • 整合springmvc

  • pom.xml

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <!--freemarker依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>
  • spring-mvc.xml
<bean id="freemarkerConfig"
          class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPaths" value="/template/"/>
        <property name="defaultEncoding" value="utf-8"/>
        <property name="freemarkerSettings">
            <props>
                <prop key="template_update_delay">0</prop>
                <prop key="locale">zh_CN</prop>
                <prop key="datetime_format">yyyy-MM-dd</prop>
                <prop key="number_format">#.##</prop>
                <prop key="whitespace_stripping">true</prop>
                <prop key="default_encoding">UTF-8</prop>
            </props>
        </property>
    </bean>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name="cache" value="true"/>
        <!--<property name="prefix" value="/template/" />-->
        <property name="suffix" value=".ftl"/>
        <property name="contentType" value="text/html;charset=UTF-8"></property>
        <property name="requestContextAttribute" value="request"/>
        <property name="exposeSpringMacroHelpers" value="true"/>
        <property name="exposeRequestAttributes" value="true"/>
        <property name="exposeSessionAttributes" value="true"/>
    </bean>
  • templateLoaderPaths路径下创建ftl文件,写法和html一致
  • 访问controller,返回freemarker视图模板

或者通过注解来配置(非规范示例:)

@Configuration
@EnableWebMvc
@ComponentScan("com.lwr.controller")
public class ConfigMVC extends WebMvcConfigurerAdapter {

    /*
    * other config
    * */


    @Bean
    public FreeMarkerConfig getFreeMarkerConfig() {
        Properties properties = new Properties();
        properties.setProperty("datetime_format", "dd.MM.yyyy");
        properties.setProperty("number_format", "#");
        properties.setProperty("whitespace_stripping", "true");
//        properties.setProperty("auto_include", "lib/implicit.ftl");
        properties.setProperty("default_encoding", "UTF-8");

        FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer();
        freeMarkerConfigurer.setFreemarkerSettings(properties);
        freeMarkerConfigurer.setTemplateLoaderPath("/template/");

        return freeMarkerConfigurer;
    }

    @Bean
    public ViewResolver getViewResolver() {
        FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
        viewResolver.setCache(true);
        viewResolver.setPrefix("");
        viewResolver.setSuffix(".ftl");
        viewResolver.setExposeSpringMacroHelpers(true);
        viewResolver.setContentType("text/html;charset=UTF-8");
        viewResolver.setOrder(1);
        return viewResolver;
    }
}
public class WebAppInitiliazer implements WebApplicationInitializer {

	public void onStartup(ServletContext servletContext) {
		//添加applicationContext
		AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext();
		root.scan("com.lwr.service");
		servletContext.addListener(new ContextLoaderListener(root));
		root.register(ConfigMVC.class);


		ServletRegistration.Dynamic appServlet = servletContext.addServlet(
				"appServlet", new DispatcherServlet(root));
		appServlet.setLoadOnStartup(1);
		Set<String> mappingConflicts = appServlet.addMapping("/");
		if (!mappingConflicts.isEmpty()) {
			throw new IllegalStateException(
					"'appServlet' could not be mapped to '/' due to an existing mapping. This is a known issue under Tomcat versions <= 7.0.14; see <a href=\"https://issues.apache.org/bugzilla/show_bug.cgi?id=51278\">https://issues.apache.org/bugzilla/show_bug.cgi?id=51278</a>");
		}

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值