第一个FreeMarker例子 FreeMarker与springMVC整合

第一个FreeMarker例子 FreeMarker与springMVC整合

本demo使用maven来完成

完成此demo需要以下八步

第一:eclipse安装freemarker插件

最新为eclipse添加freemarker插件支持

安装此插件方便我们编写 .ftl 等其他模版文件

第二:创建一个maven项目==》项目名:freemarker

请参考 CentOS7(Linux)下配置eclipse的maven和tomcat并且成功运行maven项目

创建好后的项目,最终如图所示

[caption id="attachment_996" align="alignnone" width="371"]第一个FreeMarker项目 第一个FreeMarker项目[/caption]


第三:关于web.xml与我们之前创建的web.xml并无区别,我这里仍然贴出代码

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	metadata-complete="true" version="3.1">
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:applicationContext.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<servlet>
		<servlet-name>freemarker</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath*:config/freemarker-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>freemarker</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>


	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>
第四:修改freemarker-servlet.xml

关键代码,加入以下代码,表示freemarker处理的模版后缀

<bean id="viewResolver"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
	<property name="suffix" value=".ftl" />
	<property name="contentType" value="text/html;charset=UTF-8"></property>
</bean>
加入以下代码,SpringMVC自动扫描包


<!-- 通过扫描包的方式 -->
<context:component-scan base-package="com.freemarker.springmvc.controller,com.freemarker.springmvc.service.impl" />
第五:修改applicationContext.xml

加入FreeMarker的核心配置(部分配置)

<!-- Freemarker配置 -->
<bean id="freemarkerConfig"
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
	<property name="templateLoaderPath" value="/WEB-INF/template/default/" />
	<property name="freemarkerSettings">
		<props>
			<prop key="template_update_delay">0</prop>
			<prop key="default_encoding">UTF-8</prop>
			<prop key="number_format">0.##########</prop>
			<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
			<prop key="classic_compatible">true</prop>
			<prop key="template_exception_handler">ignore</prop>
			<prop key="url_escaping_charset">UTF-8</prop>
			<prop key="locale">zh_CN</prop>
			<prop key="tag_syntax">auto_detect</prop>
			<prop key="whitespace_stripping">true</prop>
			<prop key="object_wrapper">freemarker.ext.beans.BeansWrapper</prop>
		</props>
	</property>
</bean>

第六:编写一个Controller

@Controller
@RequestMapping("/index")
public class ConIndex {
	
	@Resource(name="indexTest")
	private IndexTest indexTest;
	
	@RequestMapping("/index")
	public String init(HttpServletRequest request, HttpServletResponse response,ModelMap model){
		model.addAttribute("indexs", indexTest.index());
		return "aaa/index";
	}
}

indexTest.index() 返回一个字符串“hello”


第七:在模版文件编写我们的模版文件

先创建目录aaa,因为我们的controller返回的是这个

在aaa下编写index.ftl(部分代码)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
${indexs}
第八:启动我们的服务

输入以下地址测试

http://localhost:8080/freemarker/index/index


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img