`

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开源包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支持) 注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的...

    java开源包101

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

Global site tag (gtag.js) - Google Analytics