- 创建实体类Person.java
package entity;
public class Person {
private int personId;
private String personName;
private int personAge;
private String personInfo;
public int getPersonId() {
return personId;
}
public void setPersonId(int personId) {
this.personId = personId;
}
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
public int getPersonAge() {
return personAge;
}
public void setPersonAge(int personAge) {
this.personAge = personAge;
}
public String getPersonInfo() {
return personInfo;
}
public void setPersonInfo(String personInfo) {
this.personInfo = personInfo;
}
}
- 创建PageDao.java类,用于对person表进行操作
package dao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import org.DbPool;
import entity.Person;
public class PageDao {
DbPool dbp = new DbPool();
public List<Person> allPersons(int pageNumber,int pageSize) {
List<Person> list = new ArrayList<Person>();
/**
* limit是mysql的语法。
select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
select * from tablename limit 2,4
即取出第3条至第6条,4条记录
*/
String sql = "select * from person limit ?,?";
PreparedStatement ps = null;
try{
ps = dbp.getConn().prepareStatement(sql);
ps.setInt(1, (pageNumber-1)*pageSize);
ps.setInt(2, pageSize);
ResultSet rs = ps.executeQuery();
while(rs.next()){
Person person = new Person();
person.setPersonId(rs.getInt("personId"));
person.setPersonName(rs.getString("personName"));
person.setPersonInfo(rs.getString("personInfo"));
person.setPersonAge(rs.getInt("personAge"));
list.add(person);
}
}catch (Exception e) {
e.printStackTrace();
}
return list;
}
public int getPersonAmount() {
int i = 0;
String sql = "select count(*) from person";
PreparedStatement ps = null;
try {
ps = dbp.getConn().prepareStatement(sql);
ResultSet rs = ps.executeQuery();
if(rs.next()) {
i = rs.getInt(1);
}
} catch (Exception e) {
e.printStackTrace();
}
return i;
}
}
- 创建PageAction,实现分页功能
package action;
import com.opensymphony.xwork2.ActionSupport;
import dao.PageDao;
public class PageAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 7263568517757245698L;
private int pageNumber; //表示当前页数
private int totalPage; //表示总页数
private int pageSize; //每页的记录数
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
@Override
public String execute() throws Exception {
PageDao pd = new PageDao();
pageSize = 2; //设置每页的记录数
//获得总记录数
int personAmount = pd.getPersonAmount();
//总页数
totalPage = personAmount % pageSize == 0 ? (personAmount / pageSize) : (personAmount / pageSize + 1);
if(pageNumber < 1) { //当前页小于1,
pageNumber = 1;
} else if (pageNumber > totalPage) { //当前页大于总页数
pageNumber = totalPage;
}
return SUCCESS;
}
}
- 创建AllPersons.java,获取某页的数据信息。
package action;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
import dao.PageDao;
import entity.Person;
public class AllPersons extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 231822055368380941L;
private int pageNumber; //表示当前页数
private int totalPage; //表示总页数
private int pageSize; //每页的记录数
private List<Person> allPersons;
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public List<Person> getAllPersons() {
return allPersons;
}
public void setAllPersons(List<Person> allPersons) {
this.allPersons = allPersons;
}
@Override
public String execute() throws Exception {
PageDao pd = new PageDao();
//获取当前页的信息
allPersons = pd.allPersons(pageNumber, pageSize);
return SUCCESS;
}
}
- 配置struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.i18n.encoding" value="utf-8" />
<package name="default" extends="struts-default">
<action name="allPersons" class="action.AllPersons">
<result name="success">/pageData.jsp</result>
</action>
<action name="pageAction" class="action.PageAction">
<!-- redirect结果重定向。通过OGNL语言获取参数值 -->
<result type="redirect">/allPersons.action?pageNumber=${pageNumber}&totalPage=${totalPage}&pageSize=${pageSize}</result>
</action>
</package>
</struts>
- 视图pageData.jsp
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="GB2312"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page import="org.DbPool" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>使用数据源</title>
</head>
<style>
ul.titleul{
width:485px;
float: left;
color: blue;
}
ul.allul{
width:485px;
float: left;
}
li.allli{
width:80px;
float: left;
}
li.allli2{
width:100px;
float:left;
}
li.allli3{
width:300px;
float: left;
}
</style>
<script type="text/javascript">
function del() {
var flag = false;
if(confirm('您确定要删除吗?')) {
flag = true;
}
return flag;
}
</script>
<body >
<jsp:include page="index.html"></jsp:include>
<center>
<div style="width:405px;text-align: center;">
<h4>全部用户</h4>
<ul class="titleul">
<li class="allli">用户ID</li>
<li class="allli">名称</li>
<li class="allli">年龄</li>
<li class="allli">简介</li>
<li class="allli">修改</li>
<li class="allli">删除</li>
</ul>
<!-- 循环输出记录 -->
<s:iterator value="allPersons" status="st">
<ul class="allul">
<li class="allli"><s:property value='personId'/></li>
<li class="allli"><s:property value="personName"/></li>
<li class="allli"><s:property value="personAge"/></li>
<li class="allli"><s:property value="personInfo"/></li>
<li class="allli"><a href="thePerson.action?personId=<s:property value='personId'/>">修改</a></li>
<li class="allli"><a href="deletePerson.action?personId=<s:property value='personId'/>" οnclick="return del();">删除</a></li>
</ul>
</s:iterator>
<br/><br/>
<ul class="allul">
<li class="allli2"><s:a href="addPerson.jsp">添加新用户</s:a> </li>
<li class="allli3">
<!-- 显示当前页与总页数 -->
<s:property value="pageNumber"/>|<s:property value="totalPage"/>
<!-- 定义首页的url地址为1 -->
<s:url id="firstPage" action='pageAction'>
<s:param name='pageNumber'>1</s:param>
</s:url>
<s:a href="%{firstPage}">首页</s:a>
<!-- 定义上一页的url为当前页减一 -->
<s:url id="prePage" action='pageAction'>
<s:param name='pageNumber'><s:property value='pageNumber-1'/></s:param>
</s:url>
<s:a href="%{prePage}">上一页</s:a>
<!-- 下一页地址为当前页加一 -->
<s:url id="nextPage" action='pageAction'>
<s:param name='pageNumber'><s:property value='pageNumber+1'/></s:param>
</s:url>
<s:a href="%{nextPage}">下一页</s:a>
<!-- 末页的地址为总页数 -->
<s:url id="lastPage" action='pageAction'>
<s:param name='pageNumber'><s:property value='totalPage'/></s:param>
</s:url>
<s:a href="%{lastPage}">末页</s:a>
</li></ul>
</div>
</center>
</body>
</html>
- 配置Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
运行程序输入 http://localhost:8080/Demo10/allPersons.action。就可以在pageData.jsp页面显示分页信息。
注:;连接数库的配置参见上一篇 数据源与连接池