[Spring MVC] - JSP + Freemarker视图解释器整合(转)
2024-09-01 10:01:30
Spring MVC中如果只使用JSP做视图,可以使用下面这段即可解决:
<!-- 视图解释类 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
</bean>
但很多时候我们需要的不只是JSP做view,可能会引用velocity、freemarker等做为view引擎时,需要加入额外的配置。
下面是在配置文件中加入Freemarker的方法,与JSP并存:
<!--JSP视图解析器-->
<bean id="viewResolverJsp" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/>
<property name="order" value="1"/>
</bean> <!-- 配置freeMarker视图解析器 -->
<bean id="viewResolverFtl" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
<property name="contentType" value="text/html; charset=UTF-8"/>
<property name="exposeRequestAttributes" value="true" />
<property name="exposeSessionAttributes" value="true" />
<property name="exposeSpringMacroHelpers" value="true" />
<property name="cache" value="true" />
<property name="suffix" value=".ftl" />
<property name="order" value="0"/>
</bean> <!-- 配置freeMarker的模板路径 -->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<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">
<props>
<prop key="template_update_delay">3600</prop>
<prop key="locale">zh_CN</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="date_format">yyyy-MM-dd</prop>
<prop key="number_format">#.##</prop>
</props>
</property>
</bean> <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>
在JSP和Freemarker的配置项中都有一个order property,上面例子是把freemarker的order设置为0,jsp为1。
意思是找view时,先找ftl文件,再找jsp文件做为视图。
测试:
Controller:
package com.my.controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping(value="ftl")
public class TestFreemarker { @RequestMapping(method=RequestMethod.GET)
public ModelAndView index() {
ModelAndView view = new ModelAndView("TestFreemarker/index");
view.addObject("message", "Say hi for Freemarker.");
return view;
} }
index.ftl:
<Html>
<head>
<title>${message}</title>
</head>
<body>
<b>${message}</b>
<body>
</html>
输出:
最新文章
- php 三种数组
- 用Paint Tool SAI绘制漫画
- PSP记录个人项目耗时
- [LeetCode] Combinations (bfs bad、dfs 递归 accept)
- [Python]解决python链式extend的技巧
- O - 覆盖的面积 - hdu 1255(求面积)
- java中spring提供的属性copy方法
- 用AsyncTask实现多线程
- HTML/CSS/JavaScript学习总结(转)
- UIImage扩展用代码直接改变图片大小
- 使用 Python 实现命令行词典(一)
- Linux 修改环境变量报错
- MySQL常用的七种表类型(转)
- 兼容IE浏览器样式的html上传文件控件
- pygame中模块说明
- asp.net core使用jexus部署在linux无法正确 获取远程ip的解决办法
- MySQL5.7多主一从(多源复制)同步配置
- windows版mysql5.7.18安装
- jdbc(MySQL)
- October 26th, 2017 Week 43rd Thursday
热门文章
- Extjs 事件监听
- 【微信小程序】在微信开发工具上七牛云的图片可以看到,但是在真机上看不到的原因解决
- html 中怎么设置div的位置
- 端口复用技术简单了解;重用端口;socket复用端口
- 四边形优化dp
- Strategy 策略模式 MD
- [Ajax] AJAX初体验之-在博客中添加无刷新搜索
- IOS info.plist配置文件
- HDU 4585 Shaolin (STL)
- [android错误] Installation error: INSTALL_FAILED_VERSION_DOWNGRA