1. 程式人生 > >淘淘商城系列——spring與freemarker的整合

淘淘商城系列——spring與freemarker的整合

spring要與freemarker整合的話,需要兩個包,一個是freemarker的jar包,另一個是spring-context-support的jar包。所以我們需要在taotao-item-web工程中確保對這兩個jar包的依賴,如下所示。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> </dependency>

我們的taotao-item-web工程已經新增過對這兩個jar包的依賴了,因此我們不必關心這步了。
下面我們就來整合spring與freemarker,在taotao-item-web工程的src/main/resources資源目錄中的spring目錄下新建一個整合spring的配置檔案,即springmvc-freemarker.xml檔案,在該檔案中新增關於freemarker的配置,如下圖所示。
這裡寫圖片描述


為方便大家複製,現將springmvc-freemarker.xml檔案的內容給出。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/ftl/" /> <property name="defaultEncoding" value="UTF-8" /> </bean> </beans>

從上面的配置檔案中可知,我們還須在WEB-INF目錄下新建一個ftl目錄,並將src/main/resources資源目錄中的ftl目錄下的兩個模板檔案拷貝過來。
這裡寫圖片描述
除此之外,要保證springmvc-freemarker.xml檔案能被Spring容器載入到,我們還得修改一下web.xml檔案,如下圖所示,將classpath:spring/springmvc.xml改為classpath:spring/springmvc*.xml
這裡寫圖片描述
下面在taotao-item-web工程下的com.taotao.item.controller包中編寫一個FreemarkerController類,如下圖所示。
這裡寫圖片描述
為方便大家複製,現將FreemarkerController類的程式碼給出。

@Controller
public class FreemarkerController {

    @Autowired
    private FreeMarkerConfigurer freeMarkerConfigurer;

    @RequestMapping("/genHtml")
    @ResponseBody
    public String genHtml() throws Exception {
        Configuration configuration = freeMarkerConfigurer.getConfiguration();
        Template template = configuration.getTemplate("hello.ftl");
        Map map = new HashMap();
        map.put("hello", "freemarker整合spring測試");
        FileWriter out = new FileWriter(new File("F:/temp/freemarker/out.html"));
        template.process(map, out);
        out.close();
        return "ok";
    }

}

寫完了程式碼,現在我們測試一下spring與freemarker是否整合成功,我們先啟動各個服務,zookeeper服務、image服務、Solr服務(我這裡用的是叢集版)、Redis服務(我這裡用的是單機版)、ActiveMQ服務。然後依次啟動taotao-manager、taotao-content、taotao-search、taotao-manager-web、taotao-portal-web、 taotao-search-web、taotao-item-web這7個工程。都啟動成功後,我們在瀏覽器位址列中輸入http://localhost:8086/genHtml.html並回車,即可看到頁面輸出”ok”,如下圖所示。
這裡寫圖片描述
我們到F盤的temp/freemarker目錄下檢視生成的out.html頁面,雙擊它在瀏覽器中檢視,可以看到”freemarker整合spring測試”。
這裡寫圖片描述
以上就是freemarker與spring的簡單整合。