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分页查询初试的更多相关文章

  1. java web 分页实现

       分页实现的效果:    ///////// /////////////////////////////////////////////////////// /////////////////// ...

  2. 【java】分页查询实体类

    package com.dmsd.itoo.tool.pageModel; import java.io.Serializable; import java.util.HashMap; import ...

  3. 学生信息的添加 Java web简单项目初试(修改)

    错误原因: 1.Java web 的Servlet类没有配置好,并且缺少一个 Dao类(Date Access Object通常用于操作数据库的). 2.代码的某些名称错误,导致数据库数据存储错误. ...

  4. 学生信息的添加 Java web简单项目初试(失败)

    题目要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分) 3性别:要求用单 ...

  5. java redis 分页查询数据

    package com.liying.tiger.test; import java.util.List; import org.springframework.context.Application ...

  6. Java列表分页查询结果导出到CSV文件,导入CSV文件并解析

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  7. SpringBoot16 MockMvc的使用、JsonPath的使用、请求参数问题、JsonView、分页查询参数、JsonProperty

    1 MockMvc的使用 利用MockMvc可以快速实现MVC测试 坑01:利用MockMvc进行测试时应用上下文路径是不包含在请求路径中的 1.1 创建一个SpringBoot项目 项目脚手架 1. ...

  8. [原创]java WEB学习笔记90:Hibernate学习之路-- -HQL检索方式,分页查询,命名查询语句,投影查询,报表查询

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. JDBC在Java Web中的应用——分页查询

    分页查询 通过JDBC实现分页查询的方法有很多种,而且不同的数据库机制也提供了不同的分页方式,在这里介绍两种非常典型的分页方法. 通过ResultSet的光标实现分页 通过ResultSet的光标实现 ...

随机推荐

  1. runtime的基本应用

    1.什么是runtime? runtime是一套底层的C语言API,包含很多强大实用的C语言数据类型和C语言函数,平时我们编写的OC代码,底层都是基于runtime实现的. 2.runtime有什么作 ...

  2. iOS更新之DFU模式和恢复模式

    DFU模式和恢复模式的区别:DFU模式是在iPhone固件引导启动之前进行恢复的模式.所以用DFU模式刷机一般比较干净,不会有任何垃圾文件.想当于电脑重新格式化之后再安装系统. DFU模式进入方法:1 ...

  3. 关于MemoryBarrier

    备注:OSG  OpenThread::Atomic.cpp中MemoryBarrier(); Atomic::operator unsigned() const { #if defined(_OPE ...

  4. Html5移动端页面布局通用模板暨移动端问题总结

    最近的移动端项目终于告一段落了,其中遇到了不少问题,在此和大家总结分享. 首先,说一下结构.一般的手机页面大致可以分为五块:head, content, foot,solidbar,dialog. 针 ...

  5. 使用react-native做一个简单的应用-06商品界面的实现

    商品界面实现起来很简单,其实就是一个listview的使用: 关于listview的使用,在官方文档里面已经介绍的很详细了.在这里我要提一个坑. listview在Android和iOS中的效果是不一 ...

  6. sql 模糊查询带下划线的字段 _

    1.SELECT * FROM dbo.tb_Test 2.SELECT * FROM dbo.tb_Test WHERE name LIKE '%c_%' 3.SELECT * FROM dbo.t ...

  7. python 3.6 import pymysql错误

    在3.x之后可以用pymysql来代替之前的mysqldb模块. 首先安装pip: 终端命令: easy_install pip 随后成功安装pip 继续输入命令 pipinstall PyMySQL ...

  8. UVA 719 / POJ 1509 Glass Beads (最小表示法/后缀自动机)

    题目大意: 给出一个长度为N的字符串,求其字典序最小的循环同构. N<=10W. 算法讨论: 算法一.最小表示法.定义题. 算法二.后缀自动机. Codes: #include <iost ...

  9. 教师投票系统(JSP+MySQL)

    display.jsp <%@ page language="java" import="java.sql.*" pageEncoding="g ...

  10. [翻译] C++ STL容器参考手册(第二章 <deque>)

    返回总册 本章节原文:http://www.cplusplus.com/reference/deque/deque/ 1. std::deque template < class T, clas ...