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分页查询初试的更多相关文章
- java web 分页实现
分页实现的效果: ///////// /////////////////////////////////////////////////////// /////////////////// ...
- 【java】分页查询实体类
package com.dmsd.itoo.tool.pageModel; import java.io.Serializable; import java.util.HashMap; import ...
- 学生信息的添加 Java web简单项目初试(修改)
错误原因: 1.Java web 的Servlet类没有配置好,并且缺少一个 Dao类(Date Access Object通常用于操作数据库的). 2.代码的某些名称错误,导致数据库数据存储错误. ...
- 学生信息的添加 Java web简单项目初试(失败)
题目要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分) 3性别:要求用单 ...
- java redis 分页查询数据
package com.liying.tiger.test; import java.util.List; import org.springframework.context.Application ...
- Java列表分页查询结果导出到CSV文件,导入CSV文件并解析
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- SpringBoot16 MockMvc的使用、JsonPath的使用、请求参数问题、JsonView、分页查询参数、JsonProperty
1 MockMvc的使用 利用MockMvc可以快速实现MVC测试 坑01:利用MockMvc进行测试时应用上下文路径是不包含在请求路径中的 1.1 创建一个SpringBoot项目 项目脚手架 1. ...
- [原创]java WEB学习笔记90:Hibernate学习之路-- -HQL检索方式,分页查询,命名查询语句,投影查询,报表查询
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- JDBC在Java Web中的应用——分页查询
分页查询 通过JDBC实现分页查询的方法有很多种,而且不同的数据库机制也提供了不同的分页方式,在这里介绍两种非常典型的分页方法. 通过ResultSet的光标实现分页 通过ResultSet的光标实现 ...
随机推荐
- pyqt最小化学习
# -*- coding: cp936 -*- #!/usr/bin/env python # -*- coding:utf-8 -*- from PyQt4 import QtCore, QtGui ...
- 判断一个int 型整数 是否为回文数
leetcode 上的题目 Determine whether an integer is a palindrome. Do this without extra space. 由于不能使用额外空间, ...
- iOS多线程及其感悟
感觉每天都是匆匆忙忙的,每天似乎都是时间不够用一样,可是等真的想要动手敲代码的时候才发现,原来还有好多好多的知识点不是太熟练,所以,人不可以一直感觉自我良好, 有时间就是那种自我感觉良好的心态毁了自己 ...
- javascript的本地存储 cookies、localStorage
一.cookies 本地存储 首先是常用的cookies方法,网上有很多相关的代码以及w3cSchool cookies. // 存储cookies function setCookie(name,v ...
- Chrome 开发者工具详解(2):Network 面板
面板上包含了Elements面板.Console面板.Sources面板.Network面板. Timeline面板.Profiles面板.Application面板.Security面板.Audit ...
- HTML5 Canvas 的事件处理---转
DOM是Web前端领域非常重要的组成部分,不仅在处理HTML元素时会用到DOM,图形编程也同样会用到.比如SVG绘图,各种图形都是以DOM节点的形式插入到页面中,这就意味着可以使用DOM方法对图形进行 ...
- T4模板_根据DB生成实体类
为了减少重复劳动,可以通过T4读取数据库表结构,生成实体类,用下面的实例测试了一下 1.首先创建一个项目,并添加文本模板: 2.添加 文本模板: 3.向T4文本模板文件添加代码: <#@ tem ...
- C#中Thread.Join()的理解
最近在项目中使用多线程,但是对多线程的一些用法和概念还有有些模棱两可,为了搞清楚查阅了一写资料,写下这篇日志加深理解吧. Thread.Join()在MSDN中的解释很模糊:Blocks the ca ...
- (转)JAVA路径问题及命令行编译运行基础(linux下)
原地址: http://blog.csdn.net/biaobiaoqi/article/details/6846274 java的运行机制的基本概念: 源文件 也就是我们熟知的.java文件. 类文 ...
- jquery之stop()的用法
// 为了看效果,随意写的动画 $('#animater').animate({ 'right':-800 }, 3000).animate({'font-size':'16px'},'normal' ...