`

SSH1/2 J2EE 纯Java版分页查询

 
阅读更多
实体bean---------> PageBean.java
package com.demo.page;

import java.util.List;

public class PageBean {
	
	/*==============================================================*/
	private List resultList;//结果集
	private int recordSUM;//总记录数
	private int pageSUM;//总页数
	private int currentPage;//当前页
	private int pageSize;//页记录数
	private boolean isFirstPage;//是否是第一页   
	private boolean isLastPage;//是否是最后一页
	private boolean hasPreviousPage;//是否有上一页
	private boolean hasNextPage;//是否有下一页
	/*===========================初始化===================================*/
	public void init(){ 
		this.isFirstPage = isFirstPage(); 
	    this.isLastPage = isLastPage(); 
	    this.hasPreviousPage = isHasPreviousPage(); 
	    this.hasNextPage = isHasNextPage(); 
	} 
	/*=============================总页数=================================*/
	public static int countTotalPage(int pageSize,int recordSUM){ 
		
		int totalPage = recordSUM % pageSize == 0 ? recordSUM/pageSize : recordSUM/pageSize+1; 
		
	    return totalPage; 
	} 
	/*============================当前页开始记录号 ==================================*/
	public static int countOffset(final int pageSize,final int currentPage){ 
		
		final int offset = pageSize*(currentPage-1); 
		
	    return offset; 
	} 
	/*=============================当期页=================================*/
	public static int countCurrentPage(int page){ 
		
		final int curPage = (page==0?1:page); 
		
	    return curPage; 
	} 
	/*============================判断当前页的状态==================================*/
	public boolean isFirstPage() { 
		return currentPage == 1;    
	} 
	public boolean isLastPage() { 
	    return currentPage == pageSUM;    
	} 
	public boolean isHasPreviousPage() { 
	    return currentPage != 1;         
	} 
	public boolean isHasNextPage() { 
		return currentPage != pageSUM;    
	} 
	/*===========================Get/Set方法===================================*/
	public List getResultList() {
		return resultList;
	}
	public void setResultList(List resultList) {
		this.resultList = resultList;
	}
	public int getRecordSUM() {
		return recordSUM;
	}
	public void setRecordSUM(int recordSUM) {
		this.recordSUM = recordSUM;
	}
	public int getPageSUM() {
		return pageSUM;
	}
	public void setPageSUM(int pageSUM) {
		this.pageSUM = pageSUM;
	}
	public int getCurrentPage() {
		return currentPage;
	}
	public void setCurrentPage(int currentPage) {
		this.currentPage = currentPage;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	/*==============================================================*/
     
}

JSP页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'listUser.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">

  </head>
  
  <body>
 	  <table border="" >
 		<tr>
 	 		<td><input type="checkbox"></td><td>用户名</td><td>密码</td><td>性别</td><td>年龄</td><td>邮箱</td><td>地址</td>
 	 	</tr>
 	 <s:iterator value="resultList" id="user">
 	 	<tr>
 	 		<td><input type="checkbox"></td>
 	 		<td><s:property value="#user.username"/></td>
 	 		<td><s:property value="#user.password"/></td>
 	 		<td><s:property value="#user.sex"/></td>
 	 		<td><s:property value="#user.age"/></td>
 	 		<td><s:property value="#user.email"/></td>
 	 		<td><s:property value="#user.address"/></td>
 		</tr>
 	 </s:iterator>
 	 </table>
       共<s:property value="pageBean.recordSUM"/> 条记录 
       共<s:property value="pageBean.pageSUM"/> 页 
       当前第<s:property value="pageBean.currentPage"/>页<br/> 

       <s:if test="%{pageBean.currentPage == 1}"> 
    		第一页 上一页
       </s:if> 
       <s:else> 
           [url=showUser.action?page=1]第一页[/url] 
           [url=showUser.action?page=<s:property value=]">上一页[/url] 
       </s:else> 
       <s:if test="%{pageBean.currentPage != pageBean.pageSUM}"> 
           [url=showUser.action?page=<s:property value=]">下一页[/url] 
           [url=showUser.action?page=<s:property value=]">最后一页[/url] 
       </s:if> 
       <s:else> 
           下一页 最后一页 
       </s:else>
  </body>
</html>

PageServiceImplForUser.java
package com.demo.page;

import java.util.List;

import com.demo.entity.dao.AdminiDao;
import com.demo.entity.dao.UserDao;


public class PageServiceImplForUser implements PageService {

	private UserDao userDao; 
	   
	public UserDao getUserDao() {
		return userDao;
	}

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	public PageBean queryForPage(int pageSize, int currentPage,String hql) {
		// TODO Auto-generated method stub
		
		int recordSUM = userDao.getAllRowCount(hql);//总记录数 
		int pageSUM = PageBean.countTotalPage(pageSize, recordSUM);//总页数 
		final int offset = PageBean.countOffset(pageSize, currentPage);//当前页开始记录 
		final int length = pageSize;//每页记录数 
		final int page = PageBean.countCurrentPage(currentPage);//当前页
		List<AdminiDao> list = userDao.queryForPage(hql,offset, length);//"一页"的记录 
	        
		//把分页信息保存到Bean中 
		PageBean pageBean = new PageBean(); 
		pageBean.setPageSize(pageSize);     
		pageBean.setCurrentPage(page); 
		pageBean.setRecordSUM(recordSUM); 
		pageBean.setPageSUM(pageSUM);
		pageBean.setResultList(list);
		pageBean.init(); 
		return pageBean; 		
	}

}

UserDaoImpl.java
package com.demo.entity.dao.Impl;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.demo.entity.User;
import com.demo.entity.dao.UserDao;
import com.demo.hibernate.utils.HibernateSessionFactory;

public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

	public int getAllRowCount(String hql) {
		// TODO Auto-generated method stub
		
		Session session=HibernateSessionFactory.getSession();
		
		int i=session.createQuery("from User").list().size();
		
		return i;
	}

	public List queryForPage(String hql, int offset, int length) {
		// TODO Auto-generated method stub
		
		List list=new ArrayList();
		
		Session session=HibernateSessionFactory.getSession();
		
		Query query=session.createQuery(hql);
		
		query.setFirstResult(offset);
		
		query.setMaxResults(length);
		
		list=query.list();
		
		return list;
	}

	public String addUser(User user) {
		// TODO Auto-generated method stub
		
		Session session=HibernateSessionFactory.getSession();
		
		Transaction tx=session.beginTransaction();
		
		session.save(user);
		
		tx.commit();
		
		session.close();
		
		return "success";
	}
}

ACTION---------> ShowUser.java
package com.demo.action;

import java.util.ArrayList;
import java.util.List;

import com.demo.entity.dao.Impl.AdminiDaoImpl;
import com.demo.entity.dao.Impl.UserDaoImpl;
import com.demo.page.PageBean;
import com.demo.page.PageService;
import com.opensymphony.xwork2.ActionSupport;

public class ShowUser extends ActionSupport {

	//通过applicationContext.xml配置文件注入UserService的值 
	private PageService pageService;//PAGE服务类
	private int page; //当第几页   
	private PageBean pageBean;//包含分布信息的bean    
	private UserDaoImpl userDaoImpl;//用户dao实现	
	private String hql;//查询SQL
	private int pageSize;//每页记录数
	private List resultList=new ArrayList();//返回结果集

	@Override
	public String execute() throws Exception {
		
		//分页的pageBean,参数pageSize表示每页显示记录数,page为当前页 
		
	    pageBean = pageService.queryForPage(pageSize, page, hql);
	    
	    resultList=userDaoImpl.queryForPage(hql, getFirstNum()-1, pageSize);
	    
	    return "showUser"; 
	}

	private int getFirstNum(){
		
		if(page==1){
			
			return 1;
			
		}else{
			
			return (page-1)*20+1;
		}
	}
	
	/**
	 *  Get/Set方法
	*/
	public PageService getPageService() {
		return pageService;
	}
	public void setPageService(PageService pageService) {
		this.pageService = pageService;
	}
	public int getPage() {
		return page;
	}
	public void setPage(int page) {
		this.page = page;
	}
	public PageBean getPageBean() {
		return pageBean;
	}
	public UserDaoImpl getUserDaoImpl() {
		return userDaoImpl;
	}
	public void setUserDaoImpl(UserDaoImpl userDaoImpl) {
		this.userDaoImpl = userDaoImpl;
	}
	public void setPageBean(PageBean pageBean) {
		this.pageBean = pageBean;
	}
	public String getHql() {
		return hql;
	}
	public void setHql(String hql) {
		this.hql = hql;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public List getResultList() {
		return resultList;
	}
	public void setResultList(List resultList) {
		this.resultList = resultList;
	}
}

spring中的配置
	<!-- =========================================================================== -->
	<bean id="showUser" class="com.demo.action.ShowUser">
		<property name="PageService" ref="pageServiceForUser"></property>
		<property name="pageBean" ref="pageBean"></property>
		<property name="UserDaoImpl" ref="userDao"></property>
		<property name="page" value="1"></property>
		<property name="pageSize" value="16"></property>
		<property name="hql" value="from User"></property>
	</bean>
	<!-- =========================================================================== -->
1
1
分享到:
评论

相关推荐

    SSH技术字典,J2EE主流应用框架

    ### SSH技术字典与J2EE主流应用框架详解 #### 一、SSH技术概述 SSH(Struts + Spring + Hibernate)是一种广泛应用于Java Web开发的技术组合。它将Struts作为前端MVC框架,Spring用于业务逻辑层管理和控制反转...

    两个字母搞定J2EE通用分页标签项目源代码

    两个字母搞定J2EE通用分页标签源代码: &lt;t:p/&gt; 这种标签,就可以在项目中任何JSP页面里打印出分页信息和链接。 效果:http://howsun.blog.sohu.com/90707791.html 该项目是早期的作品,代码不够优雅,请不要见笑。...

    基于SSH的分页实例

    SSH(Struts2、Spring、Hibernate)是Java Web开发中的经典技术栈,它结合了MVC模式的Struts2、依赖注入的Spring以及对象关系映射的Hibernate,提供了强大的功能和灵活性。在这个实例中,我们将深入探讨如何在SSH...

    J2EE.zip_jsp+j2ee

    Java 2 Platform, Enterprise Edition (J2EE) 是一个开放的、可移植的、多层的企业级应用开发平台,它提供了一个标准的框架来构建分布式、组件化的网络应用程序。J2EE的核心在于其组件模型,包括EJB(Enterprise ...

    spring使用心得 java ssh

    SSH(Spring、Struts、Hibernate)是Java Web开发的经典组合,这个压缩包中包含了一些关于Spring在实际使用过程中的心得和常见问题的解决方案。 首先,"spring的事务代理.txt"可能涉及到Spring的事务管理。Spring...

    J2EE的小例子

    SSH,全称Struts2 + Spring + Hibernate,是Java Web开发中广泛使用的三大开源框架的组合。这个框架集成了MVC(Model-View-Controller)设计模式,Spring的依赖注入(Dependency Injection,DI)和面向切面编程...

    基于SSH的网上书城_j2ee专周_源代码+数据库(oracle)+课程设计报告

    第一模块以用户身份进行设定,具有图书查询,下单,加入购物车,,购买,评价,退货,个人信息管理等功能。 第二模块是以管理员身份进行设定,具有用户信息管理,图书的增删改查,用户订单管理等功能。 1. 用户信息...

    jsp,ssh网上商城购物系统

    而J2EE(Java 2 Platform, Enterprise Edition)是一个企业级的Java开发平台,提供了多种服务和API来构建分布式、多层的Web应用程序,包括Servlet(服务器端Java小程序)、JSP、EJB(Enterprise JavaBeans)等。...

    J2EE技术及开源筐架

    J2EE(Java 2 Platform, Enterprise Edition)是Java平台的企业版,主要用于开发和部署分布式企业级应用程序。J2EE技术包括一系列标准和规范,如Servlet、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)、...

    SSH基于Eclipse将Web层分页封装成通用模块

    教学-传智播客-项目视频经典之作巴巴运动网106集-28将Web层分页封装成通用模块源代码 所需要的jar文件: (一)、Hibernate: 位于 "\hibernate-distribution-3.3.2.GA" 目录下的jar文件: hibernate3.jar 位于 "\...

    struts+spring+hibernate通用分页方法

    1. 在Struts2 Action中获取分页参数。 2. 调用Spring Service执行分页查询。 3. 使用Hibernate和PageHelper实现数据库的分页查询。 4. 将分页结果返回给Action,然后传递给视图层展示。 这个通用分页方法适用于不同...

    SSH基于Eclipse实现Web层的分页功能源代码

    教学-传智播客-项目视频经典之作巴巴运动网106集-27实现Web层的分页功能源代码 所需要的jar文件: (一)、Hibernate: 位于 "\hibernate-distribution-3.3.2.GA" 目录下的jar文件: hibernate3.jar 位于 "\...

    J2EE企业级项目开发-1期 任务3-6 实训项目单.doc

    2. **实现查询操作业务逻辑层**:在Spring服务层中,创建Service接口及其实现类,定义查询方法,调用持久层的方法,处理业务逻辑,如分页、过滤等。 3. **实现查询操作的业务逻辑控制层**:在Struts2框架下,编写...

    JAVA上百实例源码以及开源项目源代码

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    java开源包1

    淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的...

    java框架设计实训.doc

    在本篇实训报告中,我们将深入探讨如何使用Java企业版(J2EE)中的SSH(Struts2、Spring、Hibernate)框架技术来构建一个学生信息管理系统。SSH框架是Java开发中广泛采用的一种集成解决方案,它结合了Struts2的MVC...

    java开源包8

    淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的...

    java开源包2

    淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的...

    java开源包4

    淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主类就可以添加新的API支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的...

Global site tag (gtag.js) - Google Analytics