struts2分页查询


  • 创建实体类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页面显示分页信息。

注:;连接数库的配置参见上一篇 数据源与连接池


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值