Spring mvc配置jsp,freemarker双视图解析器

背景

对于正在维护的项目,原始采用的是jsp进行页面渲染,在维护过程中,本着前后端数据分离的原则,开始采用freemarker进行页面渲染,但是又要兼容原始jsp页面,所以需要配置jsp,freemarker双视图解析器;

开始

1,pom文件中引入freemarker相关依赖
<dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.25-incubating</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.3.10.RELEASE</version>
        </dependency>
2,修改spring-mvc文件,添加freemarker视图解析
2.1 原始jsp视图解析器添加order属性(order视图解析的优先级,值越小优先级越高);
<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/WEB-INF/views" />
		<property name="suffix" value=".jsp" />
		<property name="order"  value="1"/><!--视图解析优先级-->
	</bean>
2.2 添加freemarker视图解析配置
<!--配置freemark视图解析器-->
	<!--freemark视图解析器配置-->
	<!-- 配置freeMarker视图解析器 -->
	<bean id="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
		<property name="contentType" value="text/html;charset=UTF-8"/>
		<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
		<property name="suffix" value=".ftl"/>
		<property name="cache" value="true"/>
		<property name="exposeSessionAttributes" value="true"/>
		<property name="exposeRequestAttributes" value="true"/>
		<property name="exposeSpringMacroHelpers" value="true"/>
		<!-- 在页面中使用${rc.contextPath}就可获得contextPath -->
		<property name="requestContextAttribute" value="rc"/>
		<!--配置视图的优先级,value值越小,优先级越大-->
		<property name="order" value="0"/>
	</bean>
	<!-- 配置freeMarker的模板路径 -->
	<bean id="FreeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
	<!--ftl视图解析位置-->
		<property name="templateLoaderPath" value="/WEB-INF/views/"/>
		<property name="freemarkerVariables">
			<map>
				<entry key="xml_escape" value-ref="fmXmlEscape" />
			</map>
		</property>
		<property name="defaultEncoding" value="UTF-8"/>
		<property name="freemarkerSettings" ref="freemarkerConfig"/>
	</bean>

	<bean id="freemarkerConfig" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
	<!--配置freemarker初始化文件位置-->
		<property name="location" value="classpath:freemarker.properties"/>
	</bean>
	<bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>

3.添加freemarker初始化properties配置文件
## 如果变量为null,转化为空字符串,比如做比较的时候按照空字符串做比较
classic_compatible=true
##去掉多余的空格,非常有用
whitespace_stripping=true
##模板更新事件,设置为1秒,正式环境设置为3600秒
#template_update_delay=3600
##模板更新时间,这里配置是1秒更新一次,正式环境,模板不会改变,可以降这个值很大,提高效率,就是被这个参数害死了,老是不更新
template_update_delay=1
##中国
locale=zh_CN
##编码utf8
default_encoding=utf_8
##url编码utf8
url_escaping_charset=utf_8
##显示日期格式
date_format=yyyy-MM-dd
##显示时间格式
time_format=HH:mm:ss
##显示日期格式
datetime_format=yyyy-MM-dd HH:mm:ss
##数字显示格式
number_format=0.######    
output_encoding=UTF-8


#template_update_delay=1
boolean_format=true,false
#auto_import="/common/index.ftl" as ui
tag_syntax=auto_detect

4.测试
4.1创建freemark.ftl文件
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<#assign test="1">
${test}
<body>
4.2 Controller
 @RequestMapping("getFreemark")
    public String getFreeMark(Model model){
	return MODEL_PATH + "freemark";
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值