FreeMark
FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。
特性
<pre name="code" class="java">public class FreeMarker extends HttpServlet {
private Configuration cfg;
protected void doGet(HttpServletRequest req, HttpServletResponse response)
throws ServletException, IOException {
// 建立数据模型
String page = req.getParameter("page");
List root = DataQuery.dynamicQuery("", page);
Map map = new HashMap();
map.put("Content", root);
map.put("page", DataQuery.pageHtml(2, page));
// 取得模版文件
Template t = cfg.getTemplate("message.html", "UTF-8");
// 开始准备生成输出
// 使用模版文件的charset作为本页面的charset
// 使用text/html MIME-type
response.setContentType("text/html; charset=" + t.getEncoding());
PrintWriter out = response.getWriter();
// 合并数据模型和模版,并将结果输出到out中
try {
t.process(map, out);// 用模板来开发servlet可以只在代码里面加入动态的数据
} catch (TemplateException e) {
throw new ServletException("处理Template模版中出现错误", e);
}
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
public void init() throws ServletException {
// 初始化FreeMarker配置
// 创建一个Configuration实例
cfg = new Configuration();
// 设置FreeMarker的模版文件位置
cfg.setServletContextForTemplateLoading(getServletContext(), "");
}
}
访问这个servlet都要先初始化这个方法。message.html
<#list Content as con>
<#list con?keys as mapkey>
<ul class="chatPanel">
<li class="media mediaFullText">
<a href="">
<div class="mediaPanel">
<div class="mediaHead"><span class="title">${con[mapkey].IF_theme}</span><span class="time">${con[mapkey].IF_time}</span>
<span class="count" style="font-size:2px;color: #8C8C8C;">阅读次数${con[mapkey].IF_readNum}</span>
<div class="clr"></div>
</div>
<div class="mediaImg"></div>
<div class="mediaContent mediaContentP">
<p></p>
</div>
<div class="mediaFooter">
<span class="mesgIcon right"></span><span style="line-height:50px;" class="left">查看全文</span>
<div class="clr"></div>
</div>
</div>
</a>
</li>
</#list>
</#list>页面的我就不详细介绍了
springMVC与FreeMarker整合
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/view/" />
<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>
</props>
</property>
</bean> 至于springMVC将数据传回页面有两种方式,一种是ModelAndView,另一种是ModelMap.public ModelAndView freeMark(HttpServletRequest req,
HttpServletResponse resp) throws Exception {
ModelAndView mv = new ModelAndView("hello");
mv.addObject("title", "Spring MVC And Freemarker");
mv.addObject("content", " Hello world , test my first spring mvc ! ");
return mv;
}
public String doLogin(HttpServletRequest req,
HttpServletResponse resp, ModelMap modelMap) throws Exception {
modelMap.put("base", Constants.CONTEXTPATH);
return "";
}个人倾向于ModelMap,使用起来比较方便,return 后面的就是页面文件(这里没有填写),前缀和后缀需要在spring配置文件中配置,freemark没有说一定要ftl文件,所以其他文件也可以。如何访问静态资源
原文地址:http://blog.csdn.net/u013239111/article/details/42290335