`
newspringwork
  • 浏览: 99073 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Web项目中使用Freemarker

阅读更多

FreeMarker是一款模板引擎:一种基于模板的、用来生成输出文本的通用工具。

Web项目中,有时用其作为视图层技术来生成响应的html,其实下载的freemarker压缩包中已经有很多例子介绍如何在项目中使用。如图,有jsp的、struts中使用的等等,很详细。


 

下面还是就简单介绍一下如何使用,方便以后回忆:

准备:添加freemarker.jard到项目fmk

 

 

一、直接使用Freemarker模板替代jsp、html页面

1.web.xml配置

  <!-- Freemarker模板servlect -->
  <servlet>
    <servlet-name>freemarker</servlet-name>
    <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
    <init-param>
      <param-name>TemplatePath</param-name>
      <param-value>/</param-value>
    </init-param>
    <init-param>
      <param-name>NoCache</param-name>
      <param-value>true</param-value>
    </init-param>
    <init-param>
      <param-name>ContentType</param-name>
      <param-value>text/html</param-value>
    </init-param>
    <init-param>
      <param-name>template_update_delay</param-name>
      <param-value>0</param-value>
    </init-param>
    <init-param>
      <param-name>default_encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>locale</param-name>
      <param-value>en_US</param-value>
    </init-param>
    <init-param>
      <param-name>number_format</param-name>
      <param-value>0.##</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>freemarker</servlet-name>
    <url-pattern>*.ftl</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.ftl</welcome-file>
  </welcome-file-list>

 2.freemarker的欢迎页index.ftl

<html>
	<head>
		<title>Freemarker练手</title>
	</head>
	<body>
		<#assign msg="你好,这是Freemarker发出的消息">
		<h1>Freemarker说:</h1>
		${msg}
	</body>
</html>

 3.注意:

项目编码需要和web.xml中配置的freemarker编码一致,不然会出现乱码

4.访问:

下面就可以通过URL【http://localhost:8080/fmk/】来访问了

 

二、使用Servlet作为控制器

这里加入servlet作为控制器,给Freemarker模板传入数据。

1.新建servlet:SimpleMsgServlet.java

 

package com.kyj.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class SimpleMsgServlet extends HttpServlet {
	private static Configuration cfg;

	@Override
	public void init() throws ServletException {
		if (cfg == null) {
			cfg = new Configuration();
			cfg.setServletContextForTemplateLoading(getServletContext(),"WEB-INF/template");
		}
	}

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {
		//传给模板用来存储数据的model
		Map<String, Object> model = new HashMap<String, Object>();
		//传给模板的list数据
		List<String> authors = Arrays.asList(new String[]{"James","Killer","King"});
		//传给模板的map数据
		Map<String, Object> viewLogs = new HashMap<String, Object>();
		viewLogs.put("ROOT", "2012-12-31 23:43:11");
		viewLogs.put("LOG_VIEWER", "2012-12-31 23:43:11");
		viewLogs.put("DATA_MANAGER", "2012-12-31 23:43:11");
		
		//添加到model中
		model.put("viewLogs", viewLogs);
		model.put("authors", authors);
		
		//加载模板输出
		Template t = cfg.getTemplate("SimpleMsg.ftl");
		res.setCharacterEncoding("UTF-8");
		t.setEncoding("UTF-8");
		PrintWriter out = res.getWriter();
		try {
			t.process(model, out);
		} catch (TemplateException e) {
			e.printStackTrace();
		}
	}
}
 

 

<servlet>
	<servlet-name>simpleMsg</servlet-name>
	<servlet-class>com.kyj.servlet.SimpleMsgServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>simpleMsg</servlet-name>
	<url-pattern>/simpleMsg</url-pattern>
</servlet-mapping>
 

 

2.WEB-INF/template下新建模板文件:SimpleMsg.ftl

 

<#ftl encoding="UTF-8">
<html>
	<head>
		<title>Freemarker简单Servlet消息</title>
	</head>
	<body>
		<h1>下面是Servlet传过来的信息</h1>
		<#-- list数据 -->
		<h4>作者列表</h4>
		<ul>
			<#list authors as author>
				<li>${author}</li>
			</#list>
		</ul>
		<#-- map数据 -->
		<h4>管理员最后登录时间列表</h4>
		<table cellpadding="1" border='1' cellspacing="1">
			<tr>
				<th width='120' align='center'>用户名</th>
				<th width='200' align='center'>最后登录时间</th>
			</tr>
			<#list viewLogs?keys as record>
				<tr>
					<td>${record}</td>
					<td align='center'>${viewLogs[record]}</td>
				</tr>
			</#list>
		</table>
	</body>
</html>
 

 

3.web.xml配置servlet

 

<servlet>
	<servlet-name>simpleMsg</servlet-name>
	<servlet-class>com.kyj.servlet.SimpleMsgServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>simpleMsg</servlet-name>
	<url-pattern>/simpleMsg</url-pattern>
</servlet-mapping>
 

 

4.访问servlet

http://localhost:8080/fmk/simpleMsg

 

三、与Struts框架整合

见freemarker提供的例子。

 

 

 

  • 大小: 18.7 KB
分享到:
评论

相关推荐

    FreeMarker的Web版Demo

    FreeMarker的Web版Demo

    java web项目无刷新导出word文档demo,使用freemarker模板引擎

    java web项目无刷新导出word文档demo,使用freemarker模板引擎,可以生成美观的word文档,逻辑简单易用。

    基于SpringBoot和Freemarker的Web应用设计源码

    本源码项目是基于SpringBoot和Freemarker的Web应用设计,包含290个文件,主要使用Java、JavaScript、CSS、HTML和Shell编程语言。该项目集成了SpringBoot、SpringMVC、MyBaits、Bootstrap3、Druid和Freemarker等多个...

    超强freemarker使用总结,有示例有讲解,可做快速查询手册!!

    在开发web项目的时候使用到的页面展现技术,它并不复杂,只是有一些语法内容,但是在页面展现的时候往往因为忘记语法规范而需要查阅官方文档,这样做并不高效,因此做了一些总结工作。 总体,该文档能够提供所有常用...

    FreeMarker实例

    freemarker用来显示用户 ,freemarker是一种模板引擎技术,跟jsp的用法差不多,但是比jsp在页面复时更能显示其优点

    freemarkerdemo 生成word 插入图片

    通过对freemarker在Java web项目中的测试,进行生成word文档测试,将图片插入到模板并生成word文档包含图片成功。

    struts2和freemarker整合

    1.FreeMarker 2.3.16pdf手册 2.struts2+freemarker web项目例子,可以运行

    Freemarker-2.3.8.jar、urlrewrite-2.6.0.jar

    功效:myeclipse是我们快速搭建web项目的根本,离开了它我们寸步难行。仅仅是难行,不是不行。Freemarker的jar包是动态网页静态化的必备jar包,静态化的工作基本上都是由他来完成的,如果没有他,你就不用往下看了,...

    让Struts2直接支持浏览FreeMarker的FTL文件

    这个文件是我从Struts2老版本中摘出来的FreemarkerServlet,将其加入到项目中,然后在web.xml中增加下面的代码即可。 &lt;!-- FreeMarker Servlet --&gt; &lt;servlet&gt; &lt;servlet-name&gt;freemarker&lt;/servlet-name&gt; ...

    springMVC+freemarker整合实例

    springMVC+freemarker详细整合实例,供大家学习,如果下载下来的项目上有一个红色感吧号就把架包重新加一次,架包位于web-info下面的lib文件夹内

    freemarker总结

    可以看到例子中使用的两个同名变量并没有冲突,因为它们位于不同的名字空间 l 可以使用assign指令在导入的名字空间中创建或替代变量,下面是一个例子: ${my.mail} ${my.mail} l 输出结果: jsmith@...

    批量转换jsp为freemarker

    当前java web开发的主流已是spring boot,但还有很多老项目是基于spring web以及jsp...此工具使用python解析jsp文件并把Jsp标准标签解析为freemarker模板语言,以协助开发者把spring web项目转换为spring boot项目。

    基于springboot+mvc+freemarker+aop实现校友信息管理系统.zip

    资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!! 本资源中的源码都是经过本地...

    基于SSM+FreeMarker搭建的Java后台工程模板+源代码+文档说明

    日志框架用的是logback,集成了FreeMarker,如果不想使用FreeMarker,可以在spring-web.xml中注释掉关于FreeMarker的配置。 项目结构介绍 后台部分 后台目前分了3个package,common、core以及book。 其中,common...

    web项目常用jar包及说明.zip

    3.freemarker-2.3.15.jar(支持freemarker的,在webwork中也有) 4.javassist.jar(一个开源的分析、编辑和创建Java字节码的类库,hibernate中也需要,引入其中一个即可) 5.ognl-2.7.3.jar(支持ognl语言) 6....

    基于servlet+freemarker+mybatis的java web入门项目-----银行管理系统.zip

    java web开发,jsp,servlet框架,mysql,适合个人研究学习,用于毕业设计,课程设计等 java web开发,jsp,servlet框架,mysql,适合个人研究学习,用于毕业设计,课程设计等 java web开发,jsp,servlet框架,...

    Commodity:Freemarker+JFinal+Axzure RP快速开发web项目

    商品 Freemarker+JFinal+Axzure RP快速开发web项目这是一个简单的使用JFinal & Freemarker快速开发的购物网站

    两个spring相关的web项目

    Spring3mvc: Spring MVC + FreeMarker ourmilestone: Struts2+ Spring + Mybatis

    springboot整合freemarker

    本项目解决了搭建springboot过程中遇到的以下几个问题: 1.不需要tomcat启动web页面 2.修改启动的端口号 3.修改配置文件的目录 4.整合freemarker,并使用layout结构 5.修改项目的目录结构

    一键自动生成增删改查的jsp web 项目 爽的很

    该项目通过一键完成:自动生成指定表的增删改查功能(是用ajax完成的哦) ...使用的是jsp+jquery+struts2+dwr+hibernate+freemarker 下载后导入到myeclipse中部署到tomcat6上即可。 注意先按照方法初始化数据库哦。亲

Global site tag (gtag.js) - Google Analytics