- 浏览: 59830 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
seven_cuit:
正在学习spring mail,楼主这篇文件对我很有帮助了,谢 ...
Spring Mail -
herowzz:
annotation validation 越看越丑陋...
struts2 annotation validation simple -
JimyChen:
逼到极限就会出人命了!
lazy -
脑袋雷劈的:
Friedrich 写道
拾荒的和要饭的里也有月薪10k的
找 ...
lazy -
Friedrich:
shoppingbill 写道魔尊重楼 写道
没办法去卖猪肉吧 ...
lazy
创建数据库:
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>
相关推荐
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用广泛用于构建复杂的Web应用程序,如本例中的图书馆管理系统。这个系统实现了用户登录和注册功能,并且提供了对书籍表的操作,包括增、删、改...
项目的整合过程中,开发者通常会配置Struts2的Action类,使其通过Spring的依赖注入获取Service层的对象。Service层则通过Hibernate的SessionFactory获取Session,进行数据库操作。同时,Struts2和Spring之间的集成...
总的来说,这个"Struts2+Spring2+Hibernate3注册查询搜索分页实例"是一个很好的学习资源,涵盖了Java Web开发中的基础和核心部分。通过学习这个实例,开发者不仅可以掌握三大框架的基本用法,还能了解到如何将它们...
本例主要是实现了struts2+spring3+hibernate3的 基本框架搭建的注册登录,以及用户增删改查,适于初学者学习。 包括:注册 登录功能 分页的实现 前端校验 验证码的实现 注册时有ajax 校验,登录时 后台从数据库...
系统搭建使用struts2 + spring + hibernate + easyui 整合的, 功能包括: 分页查询,自定义页面数据显示量,用户名模糊搜索,创建时间段,更新时间段内用户信息搜索,双击行进行编辑,多行选中删除,右键菜单已经写好...
此项目整合了目前主流和最前源的web开发技术:采用ehcache实现二级缓存(包含查询缓存);用sf4j及logback(log4j的升级版)记录日志;proxool(据说是dbcp和c3p0三者中最优秀的)做连接池;使用jquery的ajax实现仿...
### Struts2 + Spring2 + Hibernate3 经典分页技术解析 #### 一、概述 在企业级应用开发中,分页显示是常见的需求之一。对于数据量较大的查询结果,采用分页的方式不仅能减轻服务器的压力,提高用户体验,还能更好...
2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录...
此压缩包含有两个工程,一个工程是struts2+spring2.5+hibernate3.3整合的服务器端技术(全注解)(云端),另一个工程是android的手机应用,包含对ssh整合的云端数据的访问,能够在android输入信息,将数据传递给...
在这个项目中,“spring+struts2+hibernate整合实现分页”是一个基础教程,旨在帮助初学者理解如何在SSH框架下实现数据的分页展示。下面将详细讲解这个主题中的关键知识点。 1. **Spring框架**:Spring是Java应用的...
根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在Struts2与Hibernate框架结合下实现分页功能。接下来将详细解析Struts2与Hibernate如何协作完成这一任务。 ### Struts2与Hibernate...
在本例中,Spring主要负责服务层的管理,它可以帮助我们更好地组织业务逻辑,并与其他组件(如Struts2和Hibernate)进行整合。Spring还提供了事务管理,确保数据操作的一致性和完整性。 在分页功能上,EXT3的Grid ...
根据提供的文件信息,本文将详细解析“Struts2 + Spring2 + Hibernate3”技术栈的集成与应用。本文主要从项目准备、环境搭建、公共类的设计等方面进行深入讲解。 ### 一、项目背景及意义 Struts2、Spring2 和 ...
【Struts2+Spring2+Hibernate3】是一个经典的Java企业级开发组合,常用于构建复杂的Web应用程序,如图书管理系统。这个组合充分利用了每个框架的核心优势,以提高开发效率和代码的可维护性。 **Struts2** 是一个MVC...
通过整合Struts2、Spring与Hibernate,学生成绩管理系统不仅实现了基本的登录、学生信息和成绩管理功能,还通过分页技术增强了用户体验。更重要的是,这一整合展示了如何利用现代Java EE框架构建复杂企业级应用的...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责Web应用程序的不同层面:Struts2专注于表现层,Spring处理业务逻辑和服务层,而Hibernate则是持久化层的重要工具。将这三者进行整合,可以构建...
struts2+spring+hibernate3的简易图书管理系统,特别适合初学者集成! 实现了简单的分页和模糊查询。(基本上涵盖了开发ssh2的包),值得拥有哦! 注:数据库sql文件(mysql 5.5)在里面,要自己配好!
总的来说,这个整合方案展示了如何利用Struts2处理HTTP请求,Spring2管理依赖和事务,以及Hibernate3处理数据持久化,同时还包含了通用的分页和附件上传功能,为开发者提供了一个实用的参考示例。通过深入研究和实践...
总结来说,"Struts1.3+Spring4.x+Hibernate4.x框架整合实现对书籍的增删改查(含分页)"项目展示了如何使用SSH框架来构建一个功能完善的书籍管理系统。Struts处理用户请求,Spring管理应用组件并提供事务支持,...
综上所述,“Struts2+Spring+Hibernate分页显示”解决方案通过合理地整合三大框架的优势,能够高效地处理大量数据的展示,提供良好的用户体验,同时保证了系统的稳定性和扩展性。在实际项目中,开发者应根据具体需求...