<%@ page contentType="text/html;charset=GBK"%>
<%-- 我们使用 JSTL 来访问数据 --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>用户列表页面</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<style>
/* 给链接加入鼠标移过变色和去除下划线功能 */
a:hover {color:red;text-decoration:none}
</style>
</head>
<body><b>用户列表页面</b><br>
<%-- 输出用户列表 --%><br>
<table width="80%" border="1" cellpadding="0" style="border-collapse: collapse; " bordercolor="#000000">
<tr>
<td><b>用户ID</b></td>
<td><b>密码</b></td>
<td><b>职业</b></td>
<td><b>省代号</b></td>
<td><b>市代号</b></td>
<td><b>爱好</b></td>
<td><b>了解途径</b></td>
<td><b>出生日期</b></td>
<td><b>操作</b></td>
</tr>
<tr>
<td><b>fdgd</b></td>
<td><b>fasd</b></td>
<td><b>safda</b></td>
<td><b>sdfa</b></td>
<td><b>sdfa</b></td>
<td><b>asd</b></td>
<td><b>adf</b></td>
<td><b>asf</b></td>
<td><b>asdf</b></td>
</tr>
<s:iterator value="uiList" status="statu" id = "user" >
<tr>
<td><s:property value='uid'/></td>
<td>$(uid)</td>
<td><s:property value="pwd" /></td>
<td><s:property value="post" /></td>
<td><s:property value="provinceId" /></td>
<td><s:property value="cityId" /></td>
<td><s:property value="loves" /></td>
<td><s:property value="channel" /></td>
<td><s:property value="birthday" /></td>
<td><a href="edit.action?id=${uid}">修改</a> <a href="delete.action?id=${uid}">删除</a></td>
</tr>
</s:iterator>
</table> 共<s:property value="totalCount" />个用户
第<s:property value="currentPage" />页/共<s:property value="totalPage" />页
<%-- 输出页面跳转代码, 分链接和静态文字两种 --%>
<s:if test="currentPage > 1">
<a href="${pageContext.request.contextPath}/listUserInfo2.action?page=${ currentPage-1}">上一页</a>
</s:if>
<s:if test="currentPage < totalPage">
<a href="${pageContext.request.contextPath}/listUserInfo2.action?page=${currentPage+1}">下一页</a>
</s:if>
<%-- 输出 JavaScript 跳转代码 --%>
<script>
// 页面跳转函数
// 参数: 包含页码的表单元素,例如输入框,下拉框等
function jumpPage(input) {
// 页码相同就不做跳转
if(input.value == ${currentPage}) {
return;
}
var newUrl = "${pageContext.request.contextPath}/listUserInfo2.action?page=" + input.value;
document.location = newUrl;
}
</script>
转到
<!-- 输出 HTML SELECT 元素, 并选中当前页面编码 -->
<select οnchange='jumpPage(this);'>
<s:bean name="org.apache.struts2.util.Counter" id="counter">
<s:param name="first" value="1" />
<s:param name="last" value="totalPage" />
<s:iterator>
<option value="<s:property/>"
<s:if test="currentPage == currenter -1">selected</s:if>>
<s:property/>
</option>
</s:iterator>
</s:bean>
</select>
输入页码:<input type="text" value="${currentPage}" id="jumpPageBox" size="3">
<input type="button" value="跳转" οnclick="jumpPage(document.getElementById('jumpPageBox'))">
</body>
</html>
2.action
package cn.jixy.struts.actions;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.jixy.hib.UserInfo;
import com.jixy.service.IPageService;
import com.jixy.service.impl.PageService;
import com.opensymphony.xwork2.ActionSupport;
public class useraction2 extends ActionSupport {
public String page;
public List<UserInfo> uiList;
public int totalPage;
public int totalCount;
public int currentPage;
public int pageSize = 2;
public String listUserInfo() {
if (page == null || page.length() == 0) {
page = "1";
}
//int currentPage = 0;
try {
System.out.println("hahha"+page);
currentPage = Integer.parseInt(page);// 当前页码
} catch (Exception e) {
}
if (currentPage == 0) {
currentPage = 1;
System.out.println("哈哈哈"+currentPage);
}
System.out.println(currentPage);
IPageService pageService = new PageService();
uiList = pageService.findPagedAll("UserInfo" ,currentPage, pageSize);
totalPage = pageService.getTotalPage("UserInfo" ,pageSize);
totalCount = pageService.getTotalCount("UserInfo");
System.out.println(uiList.get(0).getUid());
return "succ";
}
}
3.pageservice
package com.jixy.service.impl;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.jixy.hib.HibernateSessionFactory;
import com.jixy.service.IPageService;
public class PageService implements IPageService {
/**
* 获取总页面数.
*
* @param pageSize
* 一页显示数据量
* @return 页面总数
*/
public int getTotalPage(String tableName, int pageSize) {
int totalCount = getTotalCount(tableName);
// 得到页面总数
int totalPageCount = ((totalCount + pageSize) - 1) / pageSize;
return totalPageCount;
}
/**
* 分页显示数据.
* @param currentPage 当前页码, 从 1 开始
* @param pageSize 每页显示数据量
* @return 分页后的数据列表 - List<Student>
*/
public List findPagedAll(String tableName, int currentPage, int pageSize) {
Session session = null;
Transaction tran = null;
List pageList = new ArrayList();
try {
if (currentPage == 0) {
currentPage = 1;
}
//操作之前,打开 Session
session = HibernateSessionFactory.getSession();
//开启事务
tran = session.beginTransaction();
//执行事务处理
String hql = "from " + tableName ;
Query query = session.createQuery(hql);
query.setFirstResult((currentPage - 1) * pageSize);
query.setMaxResults(pageSize);
pageList = query.list();
//提交事务
tran.commit();
} catch (Exception e) {
//如果出现异常,就撤销事务
if(tran != null)
tran.rollback();
e.printStackTrace();
} finally {
//不管事务执行成功与否,最后都关闭Session
session.close();
}
return pageList;
}
/**
* 得到总记录数
* @return 指定表中的记录总数
*/
public int getTotalCount(String tableName) {
Session session = null;
Transaction tran = null;
List stuList = new ArrayList();
try {
//操作之前,打开 Session
session = HibernateSessionFactory.getSession();
//开启事务
tran = session.beginTransaction();
//执行事务处理
String hql = "from " + tableName ;
Query query = session.createQuery(hql);
stuList = query.list();
//提交事务
tran.commit();
} catch (Exception e) {
//如果出现异常,就撤销事务
if(tran != null)
tran.rollback();
e.printStackTrace();
} finally {
//不管事务执行成功与否,最后都关闭Session
session.close();
}
return stuList.size();
}
}