`
shoppingbill
  • 浏览: 59638 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2+Spring+Hibernate整合分页

阅读更多

创建数据库:

 

 

DROP TABLE IF EXISTS `oa`.`t_system_log`;
CREATE TABLE  `oa`.`t_system_log` (
  `LOG_ID` varchar(20) NOT NULL default '',
  `LOG_TYPE` char(2) NOT NULL default '',
  `EVENT` varchar(100) NOT NULL default '',
  `REG_DATETIME` datetime NOT NULL default '0000-00-00 00:00:00',
  `REG_USR_ID` varchar(20) NOT NULL default '',
  `reg_user_id` varchar(255) default NULL,
  PRIMARY KEY  (`LOG_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 

 

Log.java

 

package com.qtec.entity;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
/**
 * 
 * @author Bill.Zhang
 *
 */
@Entity
@Table(name="t_system_log")
public class Log {
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private String log_id;
	
	private String log_type;
	private String event;
	private Date reg_datetime;
	private String reg_user_id;
	
	public String getLog_id() {
		return log_id;
	}
	public void setLog_id(String logId) {
		log_id = logId;
	}
	public String getLog_type() {
		return log_type;
	}
	public void setLog_type(String logType) {
		log_type = logType;
	}
	public String getEvent() {
		return event;
	}
	public void setEvent(String event) {
		this.event = event;
	}
	public Date getReg_datetime() {
		return reg_datetime;
	}
	public void setReg_datetime(Date regDatetime) {
		reg_datetime = regDatetime;
	}
	public String getReg_user_id() {
		return reg_user_id;
	}
	public void setReg_user_id(String regUserId) {
		reg_user_id = regUserId;
	}
}

 

 

MemberDao.java

 

package com.qtec.dao;

import java.util.List;

/**
 * 
 * @author Bill.Zhang
 *
 */
public interface MemberDao {
	
	/**
	 * 
	 * @param hsql
	 * @param offset
	 * @param length
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public List queryForPage(final String hsql,final int offset, final int length);
	
	/**
	 * 
	 * @return
	 */
	public int getAllRowCount(String hsql);
	
	public List listAll();
}

 

MemberDaoImpl.java

 

package com.qtec.dao;

import java.sql.SQLException;
import java.util.List;

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

import com.mysql.jdbc.log.Log;
/**
 * 
 * @author Bill.Zhang
 *
 */
public class MemberDaoImpl extends HibernateDaoSupport implements MemberDao {

	@Override
	public int getAllRowCount(String hsql) {
		return getHibernateTemplate().find(hsql).size();
	}

	@SuppressWarnings("unchecked")
	public List queryForPage(final String hsql, final int offset, final int length) {
		List list = getHibernateTemplate().executeFind(new HibernateCallback(){
			@Override
			public Object doInHibernate(Session session)
					throws HibernateException, SQLException {
				Query query = session.createQuery(hsql); 
				query.setFirstResult(offset); 
				query.setMaxResults(length);
				List list = query.list();
				return list;
			}
		});
		return list;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List listAll() {
		return getHibernateTemplate().find("from Log");
	}

}

 

PageBean.java

 

 

package com.qtec.util;

import java.util.List;
/**
 * 
 * @author Bill.Zhang
 *
 */
public class PageBean {
	
	@SuppressWarnings("unchecked")
	private List list;
	
	private int allRow;
	private int totalPage;
	private int currentPage;
	private int pageSize;
	
	private boolean isFirstPage;
	private boolean isLastPage;
	private boolean hasPreviewPage;
	private boolean hasNextPage;
	
	@SuppressWarnings("unchecked")
	public List getList() {
		return list;
	}
	@SuppressWarnings("unchecked")
	public void setList(List list) {
		this.list = list;
	}
	public int getAllRow() {
		return allRow;
	}
	public void setAllRow(int allRow) {
		this.allRow = allRow;
	}
	public int getTotalPage() {
		return totalPage;
	}
	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}
	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;
	}
	
	/**
	 * initialize page information 
	 */
	public void init(){
		this.isFirstPage = isFirstPage();
		this.isLastPage = isLastPage();
		this.hasPreviewPage = isHasPreviewPage();
		this.hasNextPage = isHasNextPage();
	}
	
	public boolean isFirstPage() {
		return currentPage == 1;
	}
 
	public boolean isLastPage() {
		return currentPage == totalPage;
	}
 
	public boolean isHasPreviewPage() {
		return currentPage !=1;
	}
 
	public boolean isHasNextPage() {
		return currentPage != totalPage;
	}
	
	public static int countTotalPage(final int pageSize,final int allRows){
		return allRows%pageSize == 0 ? allRows/pageSize : allRows/pageSize + 1;
	}
	
	public static int countOffset(final int pageSize, final int currentPage){
		return pageSize*(currentPage-1);
	}
	
	public static int countCurrentPage(int page){
		return page==0?1:page;
	}
	
}

 

MemberService.java

 

package com.qtec.service;

import java.util.List;

import com.qtec.util.PageBean;

/**
 * 
 * @author Bill.Zhang
 *
 */
public interface MemberService {
  public PageBean queryForPage(int pageSize,int currentPage);
  public List listAll();
}

 MemberServiceImpl.java

 

 

package com.qtec.service;

import java.util.List;

import com.qtec.dao.MemberDao;
import com.qtec.util.PageBean;
/**
 * 
 * @author Bill.Zhang
 *
 */
public class MemberServiceImpl implements MemberService {

	private MemberDao memberDao;
	
	public void setMemberDao(MemberDao memberDao) {
		this.memberDao = memberDao;
	}

	@SuppressWarnings("unchecked")
	@Override
	public PageBean queryForPage(int pageSize,int currentPage){
		final String hsql = "from Log";
		int allRow = memberDao.getAllRowCount(hsql);
		int totalPage = PageBean.countTotalPage(pageSize, allRow);
		final int offset = PageBean.countOffset(pageSize, currentPage);
		int length = pageSize;
		final int page = PageBean.countCurrentPage(currentPage); 
		List list = memberDao.queryForPage(hsql, offset, length);
		
		PageBean pageBean = new PageBean();
		pageBean.setAllRow(allRow);
		pageBean.setCurrentPage(page);
		pageBean.setPageSize(pageSize);
		pageBean.setTotalPage(totalPage);
		pageBean.setList(list);
		pageBean.init();
		return pageBean;
	}
	
	public List listAll(){
		return memberDao.listAll();
	}

}

 

MemberAction.java

 

package com.qtec.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;

import com.opensymphony.xwork2.ActionSupport;
import com.qtec.service.MemberService;
import com.qtec.util.PageBean;

/**
 * 
 * @author Bill.Zhang
 *
 */
@ParentPackage("struts-default")
@Namespace("/")
public class MemberAction extends ActionSupport{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private MemberService memberService;
	
	public void setMemberService(MemberService memberService) {
		this.memberService = memberService;
	}
	
	@Action(value="member",
			results={
			@Result(name="success",location="/index.jsp")
	}
	)
	@Override
	public String execute() throws Exception {
		this.pageBean = memberService.queryForPage(10, page);
		return SUCCESS;
	}
	
	private int page;
	private PageBean pageBean;
	
	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	public PageBean getPageBean() {
		return pageBean;
	}

	public void setPageBean(PageBean pageBean) {
		this.pageBean = pageBean;
	}
}
 

 struts.properties

 

struts.enable.DynamicMethodInvocation=false
struts.objectFactory=spring
struts.devMode=false
struts.custom.i18n.resources=message
struts.locale=UTF-8 
struts.i18n.encoding=UTF-8
struts.ui.theme=simple
struts.multipart.maxSize=209715200

 applicationContext.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://192.168.1.100:3306/oa"/>
		<property name="username" value="root"/>
		<property name="password" value="root"/> 
	</bean>
	
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="annotatedClasses">
			<list>
				<value>com.qtec.entity.Log</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
	</bean>
	
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	
	<bean id="memberDao" class="com.qtec.dao.MemberDaoImpl">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
	
	<bean id="memberService" class="com.qtec.service.MemberServiceImpl">
		<property name="memberDao" ref="memberDao"/>
	</bean>
	
	<bean id="memberAction" class="com.qtec.action.MemberAction" scope="prototype">
		<property name="memberService" ref="memberService"/>
	</bean>
</beans>

 web.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Page</display-name>
  
  <filter>
  	  <filter-name>struts2</filter-name>
	  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
	  <init-param>
	     <param-name>actionPackages</param-name>
	     <param-value>com.qtec.action</param-value>
	  </init-param>		
  </filter>
  
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  
 <listener>
 	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 
 <context-param>
 	<param-name>contextConfigLocation</param-name>
 	<param-value>/WEB-INF/applicationContext.xml</param-value>
 </context-param> 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 <%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Members List</title>
</head>
<body>
 	<table>
 	 	<tr>
 		<td>Log Id</td>
 		<td>Log Type</td>
 		<td>Event</td>
 		<td>Registration Date Time</td>
 		<td>Registration User Id</td>
 		</tr>
 		
 	<s:iterator value="pageBean.list">
 		<tr>
 		<td><s:property value="log_id"/></td>
 		<td><s:property value="log_type"/></td>
 		<td><s:property value="event"/></td>
 		<td><s:property value="reg_datetime"/>||</td>
 		<td><s:property value="reg_user_id"/></td>
 		</tr>
 	</s:iterator>
 	 	<tr>
 		<td>
 		  总共: <s:property value="pageBean.allRow"/> 条记录
 		</td>  
 	  	<td>
 	  	共:<s:property value="pageBean.totalPage"/>页
 	  	</td>
 	  	<td>
 	  	当前第 <s:property value="pageBean.currentPage"/>页
 	  	</td>
 	  	<td>
 	  		<s:if test="%{pageBean.currentPage == 1}">
 	  			第一页 上一页
 	  		</s:if>
 	  		<s:else>
 	  			<a href="member.action?page=1">第一页</a>
 	  			<a href="member.action?page=<s:property value="%{pageBean.currentPage-1}"/>">上一页</a>
 	  		</s:else>
 	  	</td>
 	  	<td>
 	  		<s:if test="%{pageBean.currentPage != pageBean.totalPage}">
 	  			<a href="member.action?page=<s:property value="%{pageBean.currentPage+1}"/>">下一页</a>
 	  			<a href="member.action?page=<s:property value="%{pageBean.totalPage}"/>">最后一页</a>
 	  		</s:if>
 	  	     <s:else>
 	  	     	下一页 最后一页
 	  	     </s:else>
 	  	</td>
 	  </tr>
 	</table>
</body>
</html>

 

源码下载: 

 

 

1
0
分享到:
评论

相关推荐

    struts2 + spring 3 + hibernate3.3整合实现图书馆管理管理

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛用于构建复杂的Web应用程序,如本例中的图书馆管理系统。这个系统实现了用户登录和注册功能,并且提供了对书籍表的操作,包括增、删、改...

    Struts2.1.8+Spring2.5.6+Hibernate3.3.2项目整合

    项目的整合过程中,开发者通常会配置Struts2的Action类,使其通过Spring的依赖注入获取Service层的对象。Service层则通过Hibernate的SessionFactory获取Session,进行数据库操作。同时,Struts2和Spring之间的集成...

    struts2+spring2+hibernate3注册查询搜索分页实例

    总的来说,这个"Struts2+Spring2+Hibernate3注册查询搜索分页实例"是一个很好的学习资源,涵盖了Java Web开发中的基础和核心部分。通过学习这个实例,开发者不仅可以掌握三大框架的基本用法,还能了解到如何将它们...

    Struts2+Spring3+Hibernate3 用户管理系统实例源码

    本例主要是实现了struts2+spring3+hibernate3的 基本框架搭建的注册登录,以及用户增删改查,适于初学者学习。 包括:注册 登录功能 分页的实现 前端校验 验证码的实现 注册时有ajax 校验,登录时 后台从数据库...

    struts2 + spring + hibernate + easyui 整合用户信息管理小案例

    系统搭建使用struts2 + spring + hibernate + easyui 整合的, 功能包括: 分页查询,自定义页面数据显示量,用户名模糊搜索,创建时间段,更新时间段内用户信息搜索,双击行进行编辑,多行选中删除,右键菜单已经写好...

    Struts2 + Spring 2.5 + Hibernate 3.3 整合(实际使用项目,version1)

    此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿...

    Struts2 + Spring2 + Hibernate3经典分页(包含java及jsp源码)

    ### Struts2 + Spring2 + Hibernate3 经典分页技术解析 #### 一、概述 在企业级应用开发中,分页显示是常见的需求之一。对于数据量较大的查询结果,采用分页的方式不仅能减轻服务器的压力,提高用户体验,还能更好...

    Struts2+Spring+Hibernate+Ehcache+AJAX+JQuery+Oracle 框架集成用户登录注册Demo工程

    2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录...

    android访问struts2+spring+hibernate应用

    此压缩包含有两个工程,一个工程是struts2+spring2.5+hibernate3.3整合的服务器端技术(全注解)(云端),另一个工程是android的手机应用,包含对ssh整合的云端数据的访问,能够在android输入信息,将数据传递给...

    spring+struts2+hibernate整合实现分页

    在这个项目中,“spring+struts2+hibernate整合实现分页”是一个基础教程,旨在帮助初学者理解如何在SSH框架下实现数据的分页展示。下面将详细讲解这个主题中的关键知识点。 1. **Spring框架**:Spring是Java应用的...

    STRUTS2+HIBERNATE详细的分页实现代码详细的分页实现代码

    根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在Struts2与Hibernate框架结合下实现分页功能。接下来将详细解析Struts2与Hibernate如何协作完成这一任务。 ### Struts2与Hibernate...

    ext3+struts2+hibernate+spring的CRUD+分页

    在本例中,Spring主要负责服务层的管理,它可以帮助我们更好地组织业务逻辑,并与其他组件(如Struts2和Hibernate)进行整合。Spring还提供了事务管理,确保数据操作的一致性和完整性。 在分页功能上,EXT3的Grid ...

    struts2 + spring2 + hibernate3 .pdf

    根据提供的文件信息,本文将详细解析“Struts2 + Spring2 + Hibernate3”技术栈的集成与应用。本文主要从项目准备、环境搭建、公共类的设计等方面进行深入讲解。 ### 一、项目背景及意义 Struts2、Spring2 和 ...

    Struts2+Spring2+Hibernate3

    【Struts2+Spring2+Hibernate3】是一个经典的Java企业级开发组合,常用于构建复杂的Web应用程序,如图书管理系统。这个组合充分利用了每个框架的核心优势,以提高开发效率和代码的可维护性。 **Struts2** 是一个MVC...

    Struts2,Spring与Hibernate整合应用,学生成绩管理系统

    通过整合Struts2、Spring与Hibernate,学生成绩管理系统不仅实现了基本的登录、学生信息和成绩管理功能,还通过分页技术增强了用户体验。更重要的是,这一整合展示了如何利用现代Java EE框架构建复杂企业级应用的...

    Struts2+Spring +Hibernate的整合

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责Web应用程序的不同层面:Struts2专注于表现层,Spring处理业务逻辑和服务层,而Hibernate则是持久化层的重要工具。将这三者进行整合,可以构建...

    struts2+spring+hibernate3的简易图书管理系统

    struts2+spring+hibernate3的简易图书管理系统,特别适合初学者集成! 实现了简单的分页和模糊查询。(基本上涵盖了开发ssh2的包),值得拥有哦! 注:数据库sql文件(mysql 5.5)在里面,要自己配好!

    Struts2+spring2+hibernate3整合方案

    总的来说,这个整合方案展示了如何利用Struts2处理HTTP请求,Spring2管理依赖和事务,以及Hibernate3处理数据持久化,同时还包含了通用的分页和附件上传功能,为开发者提供了一个实用的参考示例。通过深入研究和实践...

    Struts1.3+Spring4.x+Hibernate4.x框架整合实现对书籍的增删改查(含分页)

    总结来说,"Struts1.3+Spring4.x+Hibernate4.x框架整合实现对书籍的增删改查(含分页)"项目展示了如何使用SSH框架来构建一个功能完善的书籍管理系统。Struts处理用户请求,Spring管理应用组件并提供事务支持,...

    struts2+spring+hibernate分页显示

    综上所述,“Struts2+Spring+Hibernate分页显示”解决方案通过合理地整合三大框架的优势,能够高效地处理大量数据的展示,提供良好的用户体验,同时保证了系统的稳定性和扩展性。在实际项目中,开发者应根据具体需求...

Global site tag (gtag.js) - Google Analytics