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. STS 新建mvc工程--helloworld

    File--New--Spring Template Project 选择Spring MVC Project 填写项目名称和基础的包名 Finish之后就完成了. 把项目添加到服务器,然后运行.在浏 ...

  2. Redis + Jedis + Spring 实例(对象的操作)

        目录(?)[+] 不得不说,用哈希操作来存对象,有点自讨苦吃! 不过,既然吃了苦,也做个记录,也许以后API升级后,能好用些呢?! 或许,是我的理解不对,没有真正的理解哈希表. 一.预期 接上 ...

  3. markdown 书写代码

    近期基于github + hexo 搭建了自己的博客.開始用markdown写博客,推荐 mac 平台用 mou 这个软件或者 vim. 介绍下markdown语法插入代码的规则: 有一种方法是全部代 ...

  4. ORA-00119: invalid specification for system parameter LOCAL_LISTENER

    重启oracle是提示错误ORA-00119: invalid specification for system parameter LOCAL_LISTENER. 解决方法: 命令查看错误信息:oe ...

  5. js静态方法

    1.ajax() 方法是属于“函数”本身的,和返回的对象没有关系 2.bark药调用,必须药new Hashiqi()得到对象,且由返回对象才能调用 3.ajax()方法药调用,不需要new对象,直接 ...

  6. MRC BlOCK ARC

       /*-------------------MRC环境中-------------------------*/     //使用局部变量:a到block块中,为了在block中能够使用这个变量,将 ...

  7. html链接

    1. <a href="/index.html">本文本</a> 是一个指向本网站中的一个页面的链接.</p><p><a hr ...

  8. .Net Memory -- GC基本知识

    参考资料: http://blogs.msdn.com/b/tess/archive/2008/04/17/how-does-the-gc-work-and-what-are-the-sizes-of ...

  9. thinkphp3.2之模型(M层)

    最近学习了php框架thinkphp,回头总结了些学习心得知识,希望对大家有帮助 1.模型的概念: 模型(Model)是 ThinkPHP 中一个很重要的概念,粗略的理解模型就是与数据库交互信息进行c ...

  10. gerrit升级到16.04之后连接不到服务器

    升级到ubuntu-16.04后,发现Git-review代码报错: Unable to negotiate with 10.140.110.77 port 29418: no matching ke ...