概述
FreeMarker页面引擎
什么是Freemarker?
FreeMarker 是一款免费的模板引擎:即一种基于模板和数据,用来生成输出文本(HTML 网页,电子邮件,配置文件,源代码等)的通用工具.FreeMarker比JSP渲染性能更好,不跟web环境耦合,模板文件写不了java代码,责任更分离。FreeMarker解析优先于JS
FreeMarker原理
模板+数据=输出。模板只负责数据在页面中的表现,不涉及逻辑代码。逻辑由数据模型处理
使用Freemarker添加依赖
<!-- FreeMarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
Freemarker是一个模板引擎,能够用来生成各种文件
空值处理
FreeMarker 中的变量必须要赋值,如果不赋值,那么就会抛出异常.可以使用 **!**来指定默认值,例如:
${name!"这是默认值"}
${} 不能直接获取集合/数组/date类型的数据
Freemarker常用指令
一般以#开头
- include指令
当前模板引入另一个模板文件
<#include "/common/link.ftl" >
- assign 指令
创建变量赋值
<#assign name="小罗"/>
使用${} 获取该变量值
${name}
- list指令
用于循环遍历
<#list pageInfo.list as department>
<tr>
<td>${department.id}</td>
<td>${department.name}</td>
<td>${department.sn}</td>
<td>${department_index}</td> //索引
<td>
</tr>
<#/list>
- if指令
条件判断 condition:将被计算成布尔值的表达式
<#if condition>
<#elseif condition2> //可选
<#else>
</#if> //一定要if结尾
前端 twbs-pagination 分页插件
twbs-pagination 是一个简单的自适应 Bootstarp 样式的分页插件,用于前端绘制分页相关的样式效果。网址:https://esimakin.github.io/twbs-pagination/
例子:
<script>
//分页
$(function(){
$("#pagination").twbsPagination({
totalPages: ${pageInfo.pages} || 1,
startPage: ${pageInfo.pageNum} || 1,
visiblePages:5,
first:"首页",
prev:"上页",
next:"下页",
last:"尾页",
initiateStartPageClick:false,
onPageClick:function(event,page){
$("#currentPage").val(page);
$("#searchForm").submit();
}
});
})
</script>
后端 PageHelper 分页插件
Pagehelper属于MyBatis的一个分页插件,需要添加依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
Pagehelper属于后端的分页插件,能够帮我们节省代码去计算,还有改sql,它自己就会帮我们去计算,执行
- 需要修改配置文件applicationContext.xml,在sqlSessionFactory下,添加属性
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注意其他配置 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<!--使用下面的方式配置参数,一行配置一个,下面配的是合理化分页 -->
<value>
pageSizeZero=true
reasonable=true
</value>
</property>
</bean>
</array>
</property>
</bean>
-
使用Pagehelper中提供的 PageInfo 类进行封装,还是要传入当前页和每页条数,以部门为例
- 类QueryObject
//封装分页查询需要的参数 @Setter @Getter public class QueryObject { private int currentPage=1; //当前页 private int PageSize=5; //每页条数}
- 部门接口IDepartmentService
PageInfo<Department> query(QueryObject qo);
- 实现类DepartmentServiceImpl
@Override public PageInfo<Department> query(QueryObject qo) { //告诉插件我们查询第几页,每页多少条 PageHelper.startPage(qo.getCurrentPage(),qo.getPageSize()); //查询当前页数据 List<Department> departments = departmentMapper.selectForList(qo); return new PageInfo<>(departments); }
- 部门控制器
//处理分页查询页面请求 @RequestMapping("/list") public String list(QueryObject qo, Model model){ PageInfo<Department> pageInfo = departmentService.query(qo); model.addAttribute("pageInfo",pageInfo); return "department/list"; }
- 对应前端页面参数,进行传入
最后
以上就是昏睡微笑为你收集整理的(四十一)使用FreeMarker页面引擎、前端 twbs-pagination 分页插件、后端 PageHelper 分页插件概括的全部内容,希望文章能够帮你解决(四十一)使用FreeMarker页面引擎、前端 twbs-pagination 分页插件、后端 PageHelper 分页插件概括所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复