ftl(freemark) 与 jsp(jstl) 的对应功能的不同写法及举例(部分)
- 注意: 对比是在相同情况和要求下实现相同的功能
-
页面的文件名: . jsp文件 和 . ftl 文件
-
配置文件(pom.xml):
- freemark需要的依赖
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency>
- jstl 需要的依赖
<dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
-
页面 :
-
jsp页面需要引入外部标签库 jstl
<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %> -
jsp页面要在<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>中加入 属性 isELIgnored=“false” 让页面识别EL语句
-
-
include标签:
1) jsp:
<%@include file= " /WEB-INF/views/common/menu.jsp " %>
2) ftl:
<#include " ../common/menu.jsp ">
-
set 和 assign 指令 :
- 在当前模版中创建一个新的变量, 或者替换一个已经存在的变量
- jsp:
<c:set var="currentMenu" value="employee"/>
- flt:
<#assign currentMenu="employee"/>
-
循环遍历语句 :
- jstl中的 < c:forEach >< /c:forEach >
<c:forEach items="${result.data}" var="employee" varStatus="vs"> <td>${vs.count}</td><!--序号每循环一次+1--> <td>${employee.name}</td> <td>${employee.age}</td> </c:forEach>
- freemark中的 <#list></#list>
<#list result.list as employee> <td>${employee_index+1}</td><!--序号每循环一次+1--> <td>${employee.name!}</td><!--相比于jsp页面要在结束大括号之前加一个感叹号 ! --> <td>${employee.age!}</td> </#list>