tableDemo.ftl 代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<%@ taglib prefix="s" uri="/struts-tags"%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>分页DEMO</title>
</head>
<body>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<center>
<table width="600" border="1" cellpadding="0" cellspacing="0"position:absolute; left:0px; top:0px; bottom:0px; width:199px; border-right:solid 1px #BFDBFF; height:auto;>
<tr>
<td width="530" align="center">
<font style="font-size: 18px">ID</font>
</td>
<td width="530" align="center">
<font style="font-size: 18px">LoginName</font>
</td>
</tr>
<#list tablelist as tlist>
<tr>
<td>
<#if tlist.loginid?exists>${tlist.loginid}</#if>
</td>
<td>
<#if tlist.loginName?exists>${tlist.loginName}</#if>
</td>
</tr>
</#list>
<tr>
<td colspan="2" align="center">
当前第
<#if pageset.curPage==0>${pageset.curPage+1}
<#else>${pageset.curPage}
</#if>
页/共
<#if pageset.pageSize?exists>${pageset.pageSize}</#if>
页 共有
<#if pageset.rowCount?exists> ${pageset.rowCount}</#if>
条记录 每页用
<input type="text" size="4" name="rowsize" value="<#if pageset.rowSize?exists>${pageset.rowSize}</#if>" />
行显示
<br />
<a href="Tabled.action?current=1">首页</a>
<#if pageset.curPage-1==0>
<a href="Tabled.action?current=1">上一页</a>
<#else>
<a href="Tabled.action?current=${pageset.curPage-1}">上一页</a>
</#if>
<#if pageset.curPage == pageset.pageSize>
<a href="Tabled.action?current=${pageset.pageSize}">下一页</a>
<#else>
<a href="Tabled.action?current=${pageset.curPage+1}">下一页</a>
</#if>
<a href="Tabled.action?current=${pageset.pageSize}">尾页</a>
</td>
</tr>
</table>
</center>
</body>
</html>
PageSet.java 代码:
package tdemo;
public class PageSet {
public int curPage=1; // 当前页
public int pageSize; // 一共有多少页
public int rowCount; // 一共有多少行
public int rowSize = 5; // 每页多少行
// 根据总行数计算总页数
public void countMaxPage() {
if (this.rowCount % this.rowSize == 0) {
this.pageSize = this.rowCount / this.rowSize;
} else {
this.pageSize = this.rowCount / this.rowSize + 1;
}
}
public int getCurPage() {
return curPage;
}
public void setCurPage(int curPage) {
this.curPage = curPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
public int getRowSize() {
return rowSize;
}
public void setRowSize(int rowSize) {
this.rowSize = rowSize;
}
}
Tabled.java 代码:
package tdemo;
import com.factory.HibernateSessionFactory;
import com.opensymphony.xwork2.ActionSupport;
import com.pojo.Login;
import com.pojo.LoginDAO;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.hibernate.Session;
public class Tabled extends ActionSupport implements ServletRequestAware {
HttpServletRequest request;
// tablelist为显示的数据List
private List<Login> tablelist;
// 总数size
private List listsize;
// 设置 PageSet 对象
PageSet pageset = new PageSet();
// session
Session session;
LoginDAO logindao;
public String execute() {
logindao = new LoginDAO();
// 获取session--开启
this.session = HibernateSessionFactory.getSession();
// 取得页面中的参数--当前页
int curpage = (this.request.getParameter("current") == null) ? 1
: Integer.parseInt((String) request.getParameter("current"));
pageset.setCurPage(curpage);
// 变量---rowsize()---每行多少记录
int rowsize = (this.request.getParameter("rowSize") == null) ? pageset
.getRowSize() : Integer.parseInt((String) request
.getParameter("rowSize"));
// 查找所有
listsize = logindao.findAll();
// 设定共有多少行
pageset.setRowCount(listsize.size());
// 计算总页数
pageset.countMaxPage();
// 显示数据的list
tablelist = logindao.pagedemo((curpage * rowsize) - 5, rowsize);
return "table_success";
}
public List getTablelist() {
return tablelist;
}
public PageSet getPageset() {
return pageset;
}
public void setPageset(PageSet pageset) {
this.pageset = pageset;
}
public void setTablelist(List<Login> tablelist) {
this.tablelist = tablelist;
}
// 设置 request
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}
struts.xml 中的代码:
<!DOCTYPE struts PUBLIC "-Apache Software Foundation//DTD Struts Configuragion 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"></include>
<!-- 第一个 HelloWorld -->
<package name="tutorial" extends="struts-default">
<action name="HelloWorld" class="tutorial.HelloWorld">
<result>/HelloWorld.jsp</result>
</action>
</package>
<!-- 第二个 tableDemo -->
<package name="tdemo" extends="struts-default" >
<action name="Tabled" class="tdemo.Tabled">
<param name="current"></param>
<result name="table_success" type="freemarker">
/table/tableDemo.ftl
</result>
</action>
</package>
<!-- 第三个 柱状图 -->
<package name="devutil" extends="struts-default">
<action name="devutilDemo" class="devutil.devutilDemo">
<result type="freemarker" name="devutil_success">
/devutil/devutil.ftl
</result>
</action>
</package>
</struts>
数据库是mysql的:其中只有三个字段:loginid,login_name,login_pwd;
创建语句如下:
use test;
create table login
(
loginid int(11) not null auto_increment,
login_name varchar(20) not null,
login_pwd varchar(10) not null,
primary key(loginid)
)DEFAULT CHARSET=UTF8;
创建完成.
只显示:lognid 和 login_name 字段。
分享到:
相关推荐
在FreeMarker中实现通用的分页功能是提高Web应用程序性能和用户体验的重要一环。 ### FreeMarker通用分页知识点解析 #### 1. 分页宏(Macro)定义 FreeMarker中的宏允许我们封装可重用的代码块,这在实现通用分页...
以上就是关于"Freemarker分页"的例子所涉及的关键知识点。通过这个例子,你可以学习到如何在Struts2框架中利用Freemarker实现高效、灵活的分页功能,这对于处理大数据量的Web应用尤其重要。记得在实际操作中,还要...
标题与描述概述的知识点主要集中在Freemarker模板引擎在实现分页功能时的应用,特别是当后端数据库为MySQL的情况下。Freemarker是一个用于生成动态文本的模板引擎,它被广泛应用于Web开发中,用于将数据模型转换成...
一个用FTL定义的非常通用数据分页指令,有源码,有使用示例。使用效果图可以参看本人博客中的相关文章:http://blog.csdn.net/qjyong/archive/2009/10/18/4693142.aspx
好用的 freemarker 分页宏模板dom结构比较主流的一个分页一排显示10个分页按钮(想定制的话把页码提取出来做为参数即可)pagenav.previousPage 存着上一页pagenav.totalPage 总页数pagenav.pageNo 当前页面页码page...
在这个主题“freemarker自定义分页标签宏”中,我们将深入探讨如何在FreeMarker中创建自定义的分页标签宏,以便更有效地管理和展示大量数据。 首先,分页是一种常见的网页设计技术,用于将大量数据分割成小块,使...
本篇文章将深入探讨如何在Struts2框架下结合FreeMarker实现分页功能,帮助开发者更高效地处理大数据量的展示问题。 首先,了解分页的基本原理。分页是用来解决一次性加载大量数据导致页面加载过慢或内存压力过大的...
然而,在网上关于FreeMarker如何实现宏分页的教程相对较少。因此,我们来详细探讨一下如何在FreeMarker中使用宏来实现分页功能。 首先,理解FreeMarker宏的概念。在FreeMarker模板语言中,宏类似于HTML中的自定义...
在这个"FreeMarker 写的一个分页macro(宏)测试"中,我们可以看到如何使用FreeMarker来实现一个简单的分页功能。下面我们将深入探讨这一主题。 首先,`PaginationUtil.java`可能是实现分页逻辑的工具类。在Java中,...
总结来说,Freemarker分页涉及后端数据处理、模板渲染和前端交互等多个层面。通过合理的设计和实现,可以在不增加服务器压力的同时,提供用户友好的浏览体验。理解并掌握这一技巧,对于提高Web应用的性能和用户体验...
本项目利用了`httpclient`与`freemarker`这两个工具来实现静态化的分页功能。下面将详细阐述这两个工具以及它们在静态化分页中的应用。 首先,`httpclient`是Apache的一个开源HTTP客户端库,它提供了丰富的API,...
标题“围绕分页的练习(1)(ssh+freemarker)”指的是一个关于使用Spring、Struts和Hibernate(SSH)框架以及Freemarker模板引擎进行分页功能实现的编程练习。SSH是一个流行的企业级Java web应用开发框架,而Freemarker...
在本项目中,我们主要探讨了如何利用Spring框架、Spring Data JPA、FreeMarker模板引擎以及Bootstrap前端框架来实现一个高效且用户友好的分页功能。以下是对这些技术及其在分页实现中作用的详细解释。 **Spring框架...
标题 "SSM+websocket+freemarker+mybatis分页插件+多数据源实现" 涉及到的是一个综合性的Java Web项目,其中包含了多个关键的技术组件。以下是这些技术组件的详细说明: 1. **Spring(SSM中的S)**:Spring是一个...
例如,你可以创建一个自定义标签用于处理分页数据,接受页码和每页数量作为参数,然后在后台查询数据库并返回相应的页面内容。 此外,FreeMarker还支持自定义函数,它们类似于JavaScript中的函数,可以接收参数并...
本主题将探讨如何利用Freemarker模板生成PDF以及如何使用EasyPOI生成带有图片、水印和分页功能的Excel。 首先,让我们深入了解Freemarker。Freemarker是一个强大的模板引擎,它用于生成文本输出,如HTML、XML或PDF...
本知识点将深入探讨如何在Struts2框架中结合iBatis实现基于Freemarker模板的分页功能。 首先,我们需要理解iBatis,它是一个轻量级的Java持久层框架,它提供了一个SQL映射框架,允许开发者将SQL语句与Java代码分离...
本主题将深入探讨如何利用Freemarker模板和wkhtmltox工具来实现这一功能。 **Freemarker模板** 是一个强大的Java模板引擎,用于动态生成文本输出,如HTML、XML或PDF。它支持变量替换、控制结构(如if/else)和复杂...
不过由于小弟资历浅薄,也没心思看,主要是strut2的标签本来我就觉得不大习惯,另外上个月接触了freemarker后,实在是用的爽死了,为什么不用freemarker的macro指令写个通用的分页呢?马上想到模仿TX的...
使用FreeMarker配合Servlet写了一个分页程序,使用环境是Java7和Tomcat7,Eclipse 4.2,程序比较简单,并且加了注释,应该算是清楚易懂吧,适合初学者(我本身也是初学者),有问题私信可以再和大家讨论。