java web分页查询初试

ssh2分页查询初试,放着记录学习一下。

entity:student.java:

package com.zte.entity;

/**
* 数据持久化,跟数据库的的相应的表的字段是对应的。
*
*
*/
public class Student
{ private Integer id; private String name; private Integer age; private Integer score; private String email; private String phone; public String getEmail()
{
return email;
} public void setEmail(String email)
{
this.email = email;
} public String getPhone()
{
return phone;
} public void setPhone(String phone)
{
this.phone = phone;
} public Integer getId()
{
return id;
} public void setId(Integer id)
{
this.id = id;
} public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
} public Integer getAge()
{
return age;
} public void setAge(Integer age)
{
this.age = age;
} public Integer getScore()
{
return score;
} public void setScore(Integer score)
{
this.score = score;
} }

Student.hbm.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="com.zte.entity">
<class name="Student" table="student">
<id name="id" column="id" type="java.lang.Integer">
<generator class="identity">
</generator>
</id>
<property name="name" column="name" type="java.lang.String"></property>
<property name="age" column="age" type="java.lang.Integer"></property>
<property name="score" column="score" type="java.lang.Integer"></property>
<property name="email" column="email" type="java.lang.String"></property>
<property name="phone" column="phone" type="java.lang.String"></property>
</class>
</hibernate-mapping>

dao层:StudentDao.java

public interface StudentDao<T>
{
public QueryResult<T> getScrollData(int firstindex, int maxresult); // 获得分页记录
}

StudentDaoImpl.java:

public class StudentImpl<T> implements StudentDao
{ private SessionFactory sessionFactory;// 通过spring注入数据持久化工厂(相当于spring帮你设置好了
// 对象,直接通过getter/setter的方式获取) public SessionFactory getSessionFactory()
    {
        return sessionFactory;
    }     public void setSessionFactory(SessionFactory sessionFactory)
    {
        this.sessionFactory = sessionFactory;
    }
 @Override
public QueryResult getScrollData(int firstindex, int maxresult)
{
QueryResult retuslt = new QueryResult<T>();
Query query =
sessionFactory.getCurrentSession().createQuery("from Student");
System.out.println("query---size---before>>>" + query.list().size());
retuslt.setTotalrecord(query.list().size());
query.setFirstResult(firstindex).setMaxResults(maxresult);
System.out.println("query---size---after>>>" + query.list().size());
retuslt.setResultlist(query.list());
return retuslt;
}

services层:

StudentService.java:

public interface StudentService<T>
{
public QueryResult<T> getScrollData(int firstindex, int maxresult);
}

StudentServiceImpl.java:

public class StudentServiceImpl implements StudentService
{ private StudentDao studentDao;// 通过spring的bean依赖注入对象
public StudentDao getStudentDao()
    {
        return studentDao;
    }     public void setStudentDao(StudentDao studentDao)
    {
        this.studentDao = studentDao;
    }
@Override
public QueryResult getScrollData(int firstindex, int maxresult)
{
return studentDao.getScrollData(firstindex, maxresult);
}

Action:

BaseAction.java:

public class BaseAction extends ActionSupport implements ServletRequestAware,
ServletResponseAware
{ public Integer page; // 当前页信息 public String query; // 是否为条件查询 HttpServletRequest request; HttpServletResponse response; public Integer getPage()
{// 获得当前页信息
return page = (page == null || page < 1) ? 1 : page;
} public void setPage(Integer page)
{// 设置当前页信息
this.page = page;
} public String getQuery()
{// 获得query信息
return query;
} public void setQuery(String query)
{// 设置query信息
this.query = query;
} @Override
public void setServletResponse(HttpServletResponse arg0)
{
this.response = arg0; } @Override
public void setServletRequest(HttpServletRequest arg0)
{
this.request = arg0; }

QueryAction.java

public class QueryAction extends BaseAction
{ public StudentService studentService; public StudentService getStudentService()
{
return studentService;
} public void setStudentService(StudentService studentService)
{
this.studentService = studentService;
} public String query()
{
PageView<Student> pageView = new PageView<Student>(5, getPage());
pageView.setQueryResult(studentService.getScrollData(
pageView.getFirstResult(), pageView.getMaxresult()));// 查询所有记录
request.setAttribute("pageView", pageView);// 保存到request范围
return this.SUCCESS;
}
}

Util,分页工具类:

public class PageIndex {
private long startindex;
private long endindex; public PageIndex(long startindex, long endindex) {
this.startindex = startindex;
this.endindex = endindex;
}
public long getStartindex() {
return startindex;
}
public void setStartindex(long startindex) {
this.startindex = startindex;
}
public long getEndindex() {
return endindex;
}
public void setEndindex(long endindex) {
this.endindex = endindex;
} public static PageIndex getPageIndex(long viewpagecount, int currentPage, long totalpage){
long startpage = currentPage-(viewpagecount%2==0? viewpagecount/2-1 : viewpagecount/2);
long endpage = currentPage+viewpagecount/2;
if(startpage<1){
startpage = 1;
if(totalpage>=viewpagecount) endpage = viewpagecount;
else endpage = totalpage;
}
if(endpage>totalpage){
endpage = totalpage;
if((endpage-viewpagecount)>0) startpage = endpage-viewpagecount+1;
else startpage = 1;
}
return new PageIndex(startpage, endpage);
}
}

PageView.java:

public class PageView<T> {
/** 分页数据 **/
private List<T> records;
/** 页码开始索引和结束索引 **/
private PageIndex pageindex;
/** 总页数 **/
private long totalpage = 1;
/** 每页显示记录数 **/
private int maxresult = 12;
/** 当前页 **/
private int currentpage = 1;
/** 总记录数 **/
private long totalrecord;
/** 页码数量 **/
private int pagecode = 10;
/** 要获取记录的开始索引 **/
public int getFirstResult() {
return (this.currentpage-1)*this.maxresult;
}
public int getPagecode() {
return pagecode;
} public void setPagecode(int pagecode) {
this.pagecode = pagecode;
} public PageView(int maxresult, int currentpage) {
this.maxresult = maxresult;
this.currentpage = currentpage;
} public void setQueryResult(QueryResult<T> qr){
setTotalrecord(qr.getTotalrecord());
setRecords(qr.getResultlist());
} public long getTotalrecord() {
return totalrecord;
}
public void setTotalrecord(long totalrecord) {
this.totalrecord = totalrecord;
setTotalpage(this.totalrecord%this.maxresult==0? this.totalrecord/this.maxresult : this.totalrecord/this.maxresult+1);
}
public List<T> getRecords() {
return records;
}
public void setRecords(List<T> records) {
this.records = records;
}
public PageIndex getPageindex() {
return pageindex;
}
public long getTotalpage() {
return totalpage;
}
public void setTotalpage(long totalpage) {
this.totalpage = totalpage;
this.pageindex = PageIndex.getPageIndex(pagecode, currentpage, totalpage);
}
public int getMaxresult() {
return maxresult;
}
public int getCurrentpage() {
return currentpage;
}

QueryResult.java,数据集

/**
* 分页实体类封装
*
*/
public class QueryResult<T> {
/** 获得结果集 **/
private List<T> resultlist;
/** 获得总的记录数 **/
private long totalrecord; public List<T> getResultlist() {
return resultlist;
}
public void setResultlist(List<T> resultlist) {
this.resultlist = resultlist;
}
public long getTotalrecord() {
return totalrecord;
}
public void setTotalrecord(long totalrecord) {
this.totalrecord = totalrecord;
}
}

分页jsp:

<%@ page language="java" pageEncoding="GB18030"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<font color="blue"> 当前页:第${pageView.currentpage}页 |
总记录数:${pageView.totalrecord}条 | 每页显示:${pageView.maxresult}条 |
总页数:${pageView.totalpage}页</font>
<c:forEach begin="${pageView.pageindex.startindex}"
end="${pageView.pageindex.endindex}" var="wp">
<c:if test="${pageView.currentpage==wp}">
<b><font color="red">第${wp}页</font></b>
</c:if>
<c:if test="${pageView.currentpage!=wp}">
<a href="javascript:topage('${wp}')" class="a03">第${wp}页</a>
</c:if>
</c:forEach>

分页的页面:

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
//到指定的分页页面
function topage(page) {
var form = document.forms[0];
form.page.value = page;
form.submit();
}
</script>
</head>
<body>
<form action="queryAction" method="post">
<s:hidden name="page" />
<s:hidden name="id" />
<s:hidden name="name" />
<s:hidden name="phone" />
<s:hidden name="email" />
<s:hidden name="age" />
<s:hidden name="score" />
<table width="800" border="0" cellPadding="0" cellSpacing="1"
bgcolor="#6386d6">
<!-- 列表标题栏 -->
<tr bgcolor="#EFF3F7" class="TableBody1">
<td width="10%" height="37" align="center"><b>客户编号</b></td>
<td width="10%" height="37" align="center"><B>客户名称</B></td>
<td width="18%" height="37" align="center"><b>联系电话</b></td>
<td width="18%" height="37" align="center"><b>联系地址</b></td>
<td width="18%" height="37" align="center"><b>联系人</b></td>
<td width="18%" height="37" align="center"><b>其他信息</b></td>
<td width="10%" height="37" align="center"><b>操作</b></td>
</tr>
<!-- 列表数据栏 -->
<s:if
test="null != #request.pageView.records && !#request.pageView.records.isEmpty() ">
<s:iterator value="#request.pageView.records" id="entity">
<tr bgcolor="#EFF3F7" class="TableBody1"
onmouseover="this.bgColor = '#DEE7FF';"
onmouseout="this.bgColor='#EFF3F7';">
<td align="center" vAlign="center">${entity.id }</td>
<td align="center" vAlign="center">${entity.name }</td>
<td align="center" vAlign="center">${entity.phone }</td>
<td align="center" vAlign="center">${entity.email }</td>
<td align="center" vAlign="center">${entity.age }</td>
<td align="center" vAlign="center">${entity.score }</td>
<td align="center" vAlign="center"><a href="#"
onclick="del('customermanage_del.do?customerNO=${entity.id}');">删除</a>
<a href="#"
onclick="openWin('customermanage_updateUI.do?customerNO=${entity.id}','addperson',600,200);">修改</a>
</td>
</tr>
</s:iterator>
</s:if>
<!-- 在列表数据为空的时候,要显示的提示信息 -->
<s:else>
<tr>
<td colspan="7" align="center" bgcolor="#EFF3F7" class="TableBody1"
onmouseover="this.bgColor = '#DEE7FF';"
onmouseout="this.bgColor='#EFF3F7';">没有找到相应的记录</td>
</tr>
</s:else>
</table>
<TABLE width="778" border=0 align=left cellPadding=0 cellSpacing=0
borderColor=#ffffff style="FONT-SIZE: 10pt">
<TBODY>
<TR>
<TD height=28 align=right vAlign=center noWrap
background="images/list_middle.jpg">   <!-- 可以在这里插入分页导航条 -->
<%@ include file="fenye.jsp"%>
</TD>
</TR>
</TBODY>
</TABLE>
</form>
</body>
</html>

效果如图:

java web分页查询初试

具体的工程点这:

上一篇:C#基础篇 - 理解委托和事件


下一篇:C# 篇基础知识5——委托和事件