淘淘商城系列——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的簡單整合。