热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spring+Struts2+Hibernate(SSH)回调函数实现分页查询功能

使用的工具:eclipse4.7.3mysqljar包实体类packagecom.ssh.entity;publicclassProduct{privatein

使用的工具:


  1. eclipse 4.7.3
  2. mysql

jar包


实体类

package com.ssh.entity;public class Product {private int id; //idprivate String productname; //商品名称private String Descs; //商品描述private Integer cid; //类别编号public int getId() {return id;}public void setId(int id) {this.id = id;}public String getProductname() {return productname;}public void setProductname(String productname) {this.productname = productname;}public String getDescs() {return Descs;}public void setDescs(String descs) {Descs = descs;}public Integer getCid() {return cid;}public void setCid(Integer cid) {this.cid = cid;}}

hibernate.hbm.xml 


"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">



hibernate.cfg.xml



com.mysql.jdbc.Driver

123456

jdbc:mysql://127.0.0.1:3306/hibernate

root

org.hibernate.dialect.MySQLDialect

true

thread

 Dao层

package com.ssh.dao;
import java.util.List;
import java.util.Map;
import com.ssh.entity.Product;public interface ProductDao {/*** 分页查询* @param map* @return*/public List

findPage(Map map);}

DaoImpl

package com.ssh.dao;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
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.ssh.entity.Product;public class ProductDaoImpl extends HibernateDaoSupport implements ProductDao {/*** 分页查询* @param map* @return*/@Overridepublic List

findPage(final Map map) {//在这里就不用find(),用execute()实现//调用new HibernateCallback()接口实现里面的方法,是指定findPage的返回类型return this.getHibernateTemplate().execute(new HibernateCallback>() {@Overridepublic List

doInHibernate(Session session) throws HibernateException, SQLException {Query query = session.createQuery("from Product");//pageNo是指第几页,pageSize是指当前显示数目//doInHibernate(Session session)里面是属性是不变的,因此在findPage()里面的参数前面设置finalquery.setFirstResult(Integer.parseInt(map.get("pageNo").toString()) );query.setMaxResults(Integer.parseInt(map.get("pageSize").toString()));return query.list();}});}}

 Service层

package com.ssh.service;import java.util.List;
import java.util.Map;import com.ssh.entity.Product;public interface ProductService {/*** 分页查询* @param map* @return*/public List

findPage(Map map);}

ServiceImpl

package com.ssh.service;
import java.util.List;
import java.util.Map;
import com.ssh.dao.ProductDao;
import com.ssh.entity.Product;public class ProductServiceImpl implements ProductService {private ProductDao ProductDao;public ProductDao getProductDao() {return ProductDao;}public void setProductDao(ProductDao productDao) {ProductDao = productDao;}/*** 分页查询* @param map* @return*/@Overridepublic List

findPage(Map map) {return ProductDao.findPage(map);}}

 Action层

package com.ssh.action;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.ssh.service.ProductService;public class ProductAction {//get,setprivate List

list;private Integer pageNo = 1;private ProductService productService;/*** 分页查询Product* @return*/public String showProduct() {int pageSize = 4;Map map=new HashMap();map.put("pageNo", (pageNo-1)*pageSize);map.put("pageSize", pageSize);list = productService.findPage(map);return "showProductSuccess";}public List

getList() {return list;}public void setList(List

list) {this.list = list;}public Integer getPageNo() {return pageNo;}public void setPageNo(Integer pageNo) {this.pageNo = pageNo;}public ProductService getProductService() {return productService;}public void setProductService(ProductService productService) {this.productService = productService;}}

applicationContext.xml



struts.xml


/main.jsp

web.xml


sshindex.jsp

contextConfigLocation

classpath:applicationContext.xmlorg.springframework.web.context.ContextLoaderListenerstrutsorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts*.actionopenSessionInVieworg.springframework.orm.hibernate3.support.OpenSessionInViewFilteropenSessionInView/*

main.jsp

<%@ page language="java" cOntentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="s" uri="/struts-tags"%>







商品名称商品描述类别操作
删除添加
当前产品数个上一页下一页



效果图


推荐阅读
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
  • 提升Android开发效率:Clean Code的最佳实践与应用
    在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过Clean Code的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 在Eclipse中批量转换Java源代码文件的编码格式从GBK到UTF-8是一项常见的需求。通过编写简单的Java代码,可以高效地实现这一任务。该方法不仅适用于Java文件,还可以用于其他类型的文本文件编码转换。具体实现可以通过导入`java.io.File`类来操作文件系统,从而完成批量转换。此外,建议在转换过程中添加异常处理机制,以确保代码的健壮性和可靠性。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • Deepin 20 系统源更换指南及基础设置教程
    配置目标:创建一个适合基本娱乐、办公和直播的环境。安装方法:手动分区。系统要求:EFI分区需大于500MB,根分区建议至少20GB,以确保系统稳定运行和足够的存储空间。此外,建议分配适量的交换分区,以提升系统性能和响应速度。 ... [详细]
author-avatar
挚爱—fruit
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有