宇宙中最简单的freemarker教材,即ftl

先在WEB-INF下建一个tlds文件夹,起一个名为my-tags.tld的文件,写上
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	version="2.0"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">

	<tlib-version>1.0</tlib-version>
	<short-name>g</short-name>
	<uri>uri名称</uri>
	<tag>
		<name>tag名</name>
		<tag-class>要找的类</tag-class>
		<body-content>tagdependent</body-content><!--固定写法-->
	</tag>

	<tag>
		<name>fp</name>
		<tag-class>要找的类</tag-class>
		<body-content>tagdependent</body-content>
<!-- 如果需要传参数,就加上下面的 -->
		<attribute>
			<name>变量名</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
	</tag>
</taglib>


这样,只需要在jsp页中加上如下的代码
<%@ taglib prefix="ec" uri="/WEB-INF/tlds/my-tags.tld"  %>

,就可以通过<ec:tag名>和<ec:fp 变量名="变量值"/>来调用

然后在类中继承SimpleTagSupport,重写doTag方法,会自动找doTag。
固定需要写的有:
	Configuration cfg = new Configuration();
		//获得模板地址
		cfg.setDirectoryForTemplateLoading(new File(req.getSession().getServletContext().getRealPath(此处为模板所在的位置
				)));
//比如"/WEB-INF/template"
		cfg.setObjectWrapper(new DefaultObjectWrapper());
			Template template = cfg.getTemplate(具体的模板名);
		Map<String, Object> map = new HashMap<String, Object>();
map.put(“随便声明的字符串,共模板文件ftl调用,比如"string"”, 要传到模板上的变量或者对象什么的);
		JspWriter out = this.getJspContext().getOut();
		template.process(map, out);
		out.flush();


如果标签里面需要传参数,就直接声明一个成员变量,set一下就可以了。
在上面填写的template的位置,写ftl的页面
	${页面传的值.属性}
 <#list 变量名(是collection型的)as collection的类型>
	<ul>
		<li>
			<a href="#">${collection的类型.属性}</a></span>
		</li>
	</ul>
 </#list>


理论知识不会,反正这样做好用。

你可能感兴趣的:(java,freemarker,Web,jsp,FP)