Hibernate+Struts分页代码

实现Struts+Hibernate框架下的高效分页功能 本文还有配套的精品资源,点击获取 简介:通过结合Struts和Hibernate这两个Java开源框架,本项目展示了如何实现Web应用程序中的数据分页。Struts负责处理用户请求并管理流程,而Hibernate用于数据库操作与业务逻辑解耦。项目中首先在Hibernate DAO层编写带有分页条件的查询方法,然后通过Struts的Action类调用这些方法,并在JSP页面利... 阅读详情
Hibernate+Struts分页代码
 
关于分页显示方面的文章,网上搜索会有好几大箩,当然每个人都有自己的思路和出发点。我的基本思路也很简单,就是将搜索过程分为两个部分:“预搜索”和“分页显示”。预搜索负责查询记录主键ID集,并且在整个查询分页过程中只执行一次;分页显示负责从预搜索的主键ID集中找出当前要显示的记录,每进行一次翻页操作便执行一次,从而实现分页显示功能。由于查询的Where条件为主键ID,并且每次只查询当页显示的记录数(比如:20条),所以在重量级查询中有着一定的性能优势。
本文主要从以下三个方面(三篇文章)来进行讲解:
1. 构建生成分页变量实体、存储查询结果实体
2. 预搜索类、分页搜索类、HibernateUtil工具类部分关联代码
3. 实现预搜索、分页搜索的两个类及用Struts的Action调用分页实例
注:View视图层的JSP代码未贴出来,相信大家在得到Result后都知道如何用Struts标签显示
首先我们为查询分页构建三个基础类:Page(保存分页的当前状态值)、PageUtil(生成Page)、Result(保存查询结果),代码都有详细的文档解释,就不再另作说明了,这三个类的代码分别如下:
/**********************************Page类*********************************************/
package com.nyhr.struts.page;
/**
 * 分页实体类,保存当前分页状态变量
 * @author Yeno.hhr
*/
public class Page {
    /** imply if the page has previous page */
    private boolean hasPrePage;
  
    /** imply if the page has next page */
    private boolean hasNextPage;
      
    /** the number of every page */
    private int everyPage;
  
    /** the total page number */
    private int totalPage;
   
    /** the total record number */
    private int totalRecords;
      
    /** the number of current page */
    private int currentPage;
  
    /** the begin index of the records by the current query */
    private int beginIndex;
  
  
    /** The default constructor */
    public Page(){
      
    }
  
    /** construct the page by everyPage
     * @param everyPage
     * */
    public Page(int everyPage){
        this.everyPage = everyPage;
    }
  
    /** The whole constructor */
    public Page(boolean hasPrePage, boolean hasNextPage,
                    int everyPage, int totalPage, int totalRecords,
                    int currentPage, int beginIndex) {
        this.hasPrePage = hasPrePage;
        this.hasNextPage = hasNextPage;
        this.everyPage = everyPage;
        this.totalPage = totalPage;
        this.totalRecords = totalRecords;
        this.currentPage = currentPage;
        this.beginIndex = beginIndex;
    }
    /**
     * @return
     * Returns the beginIndex.
     */
    public int getBeginIndex() {
        return beginIndex;
    }
  
    /**
     * @param beginIndex
     * The beginIndex to set.
     */
    public void setBeginIndex(int beginIndex) {
        this.beginIndex = beginIndex;
    }
  
    /**
     * @return
     * Returns the currentPage.
     */
    public int getCurrentPage() {
        return currentPage;
    }
  
    /**
     * @param currentPage
     * The currentPage to set.
     */
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }
  
    /**
     * @return
     * Returns the everyPage.
     */
    public int getEveryPage() {
        return everyPage;
    }
  
    /**
     * @param everyPage
     * The everyPage to set.
     */
    public void setEveryPage(int everyPage) {
        this.everyPage = everyPage;
    }
  
    /**
     * @return
     * Returns the hasNextPage.
     */
    public boolean getHasNextPage() {
        return hasNextPage;
    }
  
    /**
     * @param hasNextPage
     * The hasNextPage to set.
     */
    public void setHasNextPage(boolean hasNextPage) {
        this.hasNextPage = hasNextPage;
    }
  
    /**
     * @return
     * Returns the hasPrePage.
     */
    public boolean getHasPrePage() {
        return hasPrePage;
    }
  
    /**
     * @param hasPrePage
     * The hasPrePage to set.
     */
    public void setHasPrePage(boolean hasPrePage) {
        this.hasPrePage = hasPrePage;
    }
  
    /**
     * @return Returns the totalPage.
     *
     */
    public int getTotalPage() {
        return totalPage;
    }
  
    /**
     * @param totalPage
     * The totalPage to set.
     */
    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }
   
    /**
     * @param totalRecords
     * The totalRecords to set.
     */
    public void settotalRecords(int totalRecords)
    {
        this.totalRecords = totalRecords;
    }
    /**
     * @return Returns the totalRecords.
     *
     */
    public int getTotalRecords()
    {
        return this.totalRecords;
    }
}
/**********************************PageUtil类*********************************************/
package com.nyhr.struts.page;
/**
 * 分页工具类,初始化Page对象
 * @author Yeno.hhr
*/
public class PageUtil {
     
    /**
     * Use the origin page to create a new page
     * @param page
     * @param totalRecords
     * @return
     */
    public static Page createPage(Page page, int totalRecords){
        return createPage(page.getEveryPage(), page.getCurrentPage(), totalRecords);
    }
  
    /**
     * the basic page utils not including exception handler
     * @param everyPage
     * @param currentPage
     * @param totalRecords
     * @return page
     */
    public static Page createPage(int everyPage, int currentPage, int totalRecords){
        everyPage = getEveryPage(everyPage);
        currentPage = getCurrentPage(currentPage);
        int beginIndex = getBeginIndex(everyPage, currentPage);
        int totalPage = getTotalPage(everyPage, totalRecords);
        boolean hasNextPage = hasNextPage(currentPage, totalPage);
        boolean hasPrePage = hasPrePage(currentPage);
      
        return new Page(hasPrePage, hasNextPage,
                                everyPage, totalPage, totalRecords,
                                currentPage, beginIndex);
    }
  
    private static int getEveryPage(int everyPage){
        return everyPage == 0 ? 10 : everyPage;
    }
  
    private static int getCurrentPage(int currentPage){
        return currentPage == 0 ? 1 : currentPage;
    }
  
    private static int getBeginIndex(int everyPage, int currentPage){
        return (currentPage - 1) * everyPage;
    }
      
    private static int getTotalPage(int everyPage, int totalRecords){
        int totalPage = 0;
              
        if(totalRecords % everyPage == 0)
            totalPage = totalRecords / everyPage;
        else
            totalPage = totalRecords / everyPage + 1 ;
              
        return totalPage;
    }
  
    private static boolean hasPrePage(int currentPage){
        return currentPage == 1 ? false : true;
    }
  
    private static boolean hasNextPage(int currentPage, int totalPage){
        return currentPage == totalPage || totalPage == 0 ? false : true;
    }
  
}
/**********************************Result类*********************************************/
package com.nyhr.struts.page;
import java.util.List;
/**
 * <p>Title: 检索结果集实体类</p>
 * <p>Description: 保存分页参数及数据库查询的结果,用于页面显示</p>
 * <p>Copyright: Copyright (c) 2006</p>
 * <p>Company: 四方人才网</p>
 * @author Yeno.hhr
 * @version 1.0
 */
public class Result {
    /**分页状态变量实体*/
    private Page page;
    /**数据库检索到的当前页结果集*/
    private List content;
    /**
     * The default constructor
     */
    public Result() {
        super();
    }
    /**
     * The constructor using fields
     *
     * @param page
     * @param content
     */
    public Result(Page page, List content) {
        this.page = page;
        this.content = content;
    }
    /**
     * @return Returns the content.
     */
    public List getContent() {
        return content;
    }
    /**
     * @return Returns the page.
     */
    public Page getPage() {
        return page;
    }
    /**
     * The content to set.
     * @param content
     */
    public void setContent(List content) {
        this.content = content;
    }
    /**
     * The page to set.
     * @param page
     */
    public void setPage(Page page) {
        this.page = page;
    }
}
 现在展示在大家面前的是查询分页两个核心类 :AbstractSearch(预查询初始化程序)、AbstractList(分页及初始化分页程序),代码如下:
/********************************AbstractSearch类************************************/
package com.nyhr.struts.frame;
import java.util.List;
import com.nyhr.struts.beans.HibernateUtil;
/**
 * <p>Title: 预查询初始化程序</p>
 * <p>Description: 所有的初始化查询必须继承此类,本类只负责预查询ID集和Page对象的初始化,不实现显示逻辑</p>
 * <p>Copyright: Copyright (c) 2006</p>
 * <p>Company: 四方人才网</p>
 * @author Yeno.hhr
 * @version 1.0
 */
public abstract class AbstractSearch {
    public AbstractSearch()
    {
        super();
    }
    /**
     * 根据HQL查询出记录的主键ID(主索引)集合
     * 注:此hql必须是只检索主键及复合主键的查询语句,具体见应用实例
     * @param hql 不带查询的查询语句
     * @return idArray 主索引集合(可以主键ID,也可以是复合ID)
     */
    public Object[] getIDList(String hql)
    {
        List list = HibernateUtil.query(hql);
        if (list==null || list.size()==0)
            return null;
        return list.toArray();
    }
    /**
     * 根据HQL查询出记录的主键ID(主索引)集合
     * 注:此hql必须是只检索主键及复合主键的查询语句,具体见应用实例
     * @param hql 带参数的查询语句
     * @param bean 参数设置实体类
     * @return Object[] 主索引集合(可以主键ID,也可以是复合ID)
     */
    public Object[] getIDList(String hql, Object bean)
    {
        List list = HibernateUtil.query(hql,bean);
        if (list==null || list.size()==0)
            return null;
        return list.toArray();
    }
    /**子类方法:根据子类的需要选择调用AbstractSearch的“带参”和“不带参”两种查询中的一种返回主键ID的数组集*/
    abstract public Object[] getList();
    /**子类方法:设定查询条件*/
    abstract protected void condition();
}
/********************************AbstractList类************************************/
package com.nyhr.struts.frame;
import com.nyhr.struts.page.*;
import com.nyhr.struts.constant.SysConstant;
import com.nyhr.struts.hibernate.HibernateSessionFactory;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import java.util.List;
import java.util.ArrayList;
/**
 * <p>Title: 分页及初始化分页程序</p>
 * <p>Description: 所有的初始化分页必须继承此类,如果是预查询调用,同时会初始化Page实体,否则Page实体会由FormBean提交生成</p>
 * <p>Copyright: Copyright (c) 2006</p>
 * <p>Company: 四方人才网</p>
 * @author Yeno.hhr
 * @version 1.0
 */
abstract public class AbstractList {
    private Page page;
    /**查询结果的主键ID集*/
    private Object[] idList;
   
    public AbstractList(){}
    /**
     * 预查询初始化分页构造(初次查询)
     * @param hql 查询语句
     * @param search 预查询类
     */
    public AbstractList(AbstractSearch search){
        this.idList=search.getList();
    }
    /**
     * 查询分页构造(分页查询)
     * @param page 分页状态实体
     * @param idList
     */
    public AbstractList(Page page, Object[] idList){
        this.idList=idList;
        this.page=page;
    }
    /**子类方法:设置分页查询的查询语句*/
    abstract protected String getHql();
    /**
     * 返回查询结果
     * @return Result
     */
    public Result getResult(){
        if(page==null){
            if(idList==null)
                this.page = PageUtil.createPage(SysConstant.PAGE_SIZE,1,0);
            else
                this.page = PageUtil.createPage(SysConstant.PAGE_SIZE,1,idList.length);
        }
        return new Result(page, getListByPage());
    }
    /**
     * 分页查询,返回当前页的查询结果集
     * @param hql
     * @return list 结果集
     */
    public List getListByPage(){
        List list = null;
        if (page.getTotalPage() < 1)
            return list;
        try{
            String hql=getHql();
            if(hql==null || hql.equals(""))
                return list;
            Object[] bean=getCurrentIds();
            if(bean!=null)
                list=HibernateUtil.query(hql,bean);
            else
                list=HibernateUtil.query(hql);
        }catch(Exception e){
            System.out.println(e.getMessage());
            throw new RuntimeException(e);
        }
        return list;
    }
    /**
     * 从查询结果的ID集中找出当前页的ID集
     * @param arr 所有查询结果的主键ID集
     * @return Object[]
     */
    private Object[] getCurrentIds(){
        if(idList==null)    return null;
        ArrayList<Object> list = new ArrayList<Object>();
        int begin = page.getBeginIndex();
        int ends = page.getTotalRecords();
        int end = begin+page.getEveryPage();
        if (end >= ends)
            end = ends;
        for (int l=begin;l<end;l++){
            list.add(idList[l]);
        }       
        return list.toArray();
    }
    /**
     * 返回查询结果主键ID集的字符串组合形式
     * @return String
     */
    public String getIdList(){
        String ids="";
        if(idList == null)
            return ids;
        for(int x=0; x<idList.length; x++){
            ids+=idList[x].toString();
            if(x<idList.length-1)
                ids+=",";
        }
        return ids;
    }
}
/********************************HibernateUtil类************************************/
public class HibernateUtil {
    private HibernateUtil(){}  
    /**
     * 执行数据库查询,返回结果集List
     * @param hsql HSQL查询语句
     * @return list 结果集
     */
    public static List query(String hql) {
        List list = null;
        Query query = null;     
        Session sess = HibernateSessionFactory.currentSession();
        try{
            //创建一条HQL查询语句
            if (hql.toLowerCase().contains("from "))
                query = sess.createQuery(hql);
            else
                 query = sess.getNamedQuery(hql);
           
            list = query.list();
           
        }catch(HibernateException e)  {
            System.out.println("Hibernate Exception:@"+e.getMessage());
            throw new RuntimeException(e);
        }finally {
            HibernateSessionFactory.closeSession();
        }
        return list;
    }
    public static List query(String hql, Object bean){
        List list = null;
        Query query = null;
       
        Session sess = HibernateSessionFactory.currentSession();
        try {
            //创建一条HQL查询语句
            if (hql.toLowerCase().contains("from "))
                query = sess.createQuery(hql);
            else
                 query = sess.getNamedQuery(hql);
           
            query.setProperties(bean);
            list = query.list();
        }catch(HibernateException e) {
            System.out.println("Hibernate Exception:@"+e.getMessage());
            throw new RuntimeException(e);
        } finally {
            HibernateSessionFactory.closeSession();
        }
        return list;
    }
}
 
Python语言在工业控制中的简单应用 在工业控制中,经常需要对采集到的数据进行分析和处理,Python的这些库可以简化这一过程。传统的工业控制系统多依赖于专用的控制硬件和软件,但随着技术的发展,开放性和灵活性成为了新的需求焦点。还有,Python社区活跃,提供了大量的开源代码和模块,这对于工业控制领域来说是一个巨大的资产。Python作为一种高级编程语言,因其简洁的语法、强大的库支持和广泛的社区资源而在工业界获得了快速的发展和广泛的应用。在工业控制领域,Python的应用日益增多,这得益于其跨平台性、脚本语言的灵活性以及与硬件设备交互的能力。 阅读详情

相关推荐

变焦跟踪理论基础(如何在变焦过程中保持清晰)

如何在整个变焦过程中一直保持图像的清晰度或焦点是变焦跟踪的主要挑战。 当用户在缩放跟踪的情况下改变缩放时,设备保持对焦。 然而,在没有变焦跟踪的情况下,图像变得失焦,图像在变焦跟踪后由于自动对焦(AF)算法才最终对焦。...................................................

ChenYX的博客 20万+

struts2 mysql 分页代码_struts2+spring+hibernate分页代码[比较多]第5/7页

struts2+spring+hibernate分页代码[比较多]第5/7页更新时间:2008年09月27日 15:27:36 作者:J2EE系统中分页显示,修改dao层,service层,action层,两个分页类文件,代码如下分页辅助工具类:Java代码package com.last999.im.news.web;public class PageTool{private int cur...

weixin_33124479的博客 105

Unity3D 2022版如何一键安装Newtonsoft.Json?最新Package Manager教程

本文详细介绍了在Unity3D 2022及以上版本中,如何通过Package Manager一键安装和配置Newtonsoft.Json(Json.NET)。教程涵盖了从打开Package Manager、搜索并安装正确包源,到验证安装和基础使用的完整流程,旨在帮助开发者以现代化、可靠的方式集成这一强大的JSON处理框架,提升开发效率并规避手动导入的常见问题。

lg888的博客 920

hibernate+struts2的详细分页代码

hibernate+struts2做的分页: 首先导入jar包和配置struts.xml: /WEB-INF/jsp/message.jsp /WEB-INF/jsp/error.jsp 核心: 第一步持久化层: package domain; import java.util.Date; public class Mess

皮蛋小粥的博客 408

HFSS仿真的后处理结果,如何根据天线表面的电流密度分布对天线进行优化?

在HFSS仿真中,天线表面的Jsurf​是最直观、最有价值的诊断工具之一。它不仅告诉你天线“能不能工作”,还能告诉你“为什么工作”以及“哪里出了问题”。

degogmy的博客 1156

五、e2studio VS STM32CubeIDE之汉化

介绍stm32cubeide汉化方案和汉化包e2studio自带汉化包,在安装过程中可选择安装e2studio STM32CubeIDE切换中英文。

cl234583745的博客 1766

本人求一个Struts+Hibernate分页的代码

求一个Struts+Hibernate分页的代码,最好有一个清晰的注解...越简单越好 :cry: :cry: :cry:

89

LLM大模型基础知识【一】

大语言模型(LLM):是指在自然语言处理(Natural Language Processing,NLP)领域中的一类大模型,通常用于处理文本数据和理解自然语言。这类大模型的主要特点是它们在大规模语料库上进行了训练,以学习自然语言的各种语法、语义和语境规则。例如:GPT系列(OpenAI)、Bard(Google)、文心一言(百度)。视觉大模型:是指在计算机视觉(Computer Vision,CV)领域中使用的大模型,通常用于图像处理和分析。

lin_xi_xi的博客 2872

hibernate mysql分页_求struts+hibernate实现mysql分页的详细代码

展开全部分页不难 我分3段代码给你(dao 分页辅助业务类 Struts的Action 这写做完以后JSP里就可以随e69da5e887aa62616964757a686964616f31333236383537意使用了) 对于楼主没写过分页 要看的比较仔细 注释我也的不多 都是根据自己的思路写的分页辅助类-----------------------------package biz;/**...

weixin_39955154的博客 148

来!简单了解一下计算机发展史!

​ 1936年,英国数学家阿兰・麦席森・图灵提出了一种抽象的计算模型——图灵机( Turing machine)。图灵机,又称图灵计算机,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。​ 图灵机是一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。

m0_57290404的博客 2902

Ubuntu系统等保3级配置核查与加固

虽然这种方法在某些老旧的系统中仍然有效,但现代Linux发行版通常不推荐使用hosts.deny和hosts.allow文件来管理防火墙规则,因为它们的功能已经被更现代的防火墙管理工具(如iptables或firewalld)所取代。如果你想禁止特定的环境变量,可以从这个列表中移除它们,或者如果你想完全阻止所有环境变量的传递,可以将其设置为空。你可以通过ssh-keygen生成密钥对,并将公钥添加到用户的~/.ssh/authorized_keys文件中。修改配置后,需要重启SSH服务以使更改生效。

悦分享 183

分享:Hibernate+Struts分页代码(三)

这里是分页段的实现代码,分别继承AbstractSearch和AbstractList,实现预查询和分页查询:SearchCompany(预查询)、BaseComSearch(分页查询),代码如下:/*****************************SearchCompany类******************************/package com.nyhr.struts.se

2934

19、英国模式:银行体系的演变与现代金融架构

本文深入探讨了英国银行体系从专业化向全能银行的演变过程,分析了自律监管模式的优劣,并解析了围栏制度对金融稳定的影响。同时,文章还介绍了信用合作社、建筑协会和投资银行的角色与转型,全面展示了英国金融体系的多样性与复杂性,以及其在全球金融市场中的重要作用。

embedding5hiker的博客 104

Struts 2+Hibernate分页代码

nano214223894的专栏 2696

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Hibernate+Struts分页代码(zhuan)

Hibernate+Struts分页代码 关于分页显示方面的文章,网上搜索会有好几大箩,当然每个人都有自己的思路和出发点。我的基本思路也很简单,就是将搜索过程分为两个部分:“预搜索”和“分页显示”。预搜索负责查询记录主键ID集,并且在整个查询分页过程中只执行一次;分页显示负责从预搜索的主键ID集中找出当前要显示的记录,每进行一次翻页操作便执行一次,从而实现分页显示功能。由于查询的Wh...

Gabriel 152

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

struts+hibernate的分页代码

package com.sict.employeeManagement.help; import java.util.ArrayList; import java.util.Iterator; import com.sict.employeeManagement.data.SzEmployee; public class PageBean { int curren...

Pretender 133

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Struts+Hibernate分页代码:从dao到jsp

listMessage.jsp:&lt;table border="1" align="center" width="600" style="border-collapse:collapse;font-size:10pt" &gt; &lt;caption&gt; 电子留言系统 &lt;/caption&gt; &lt;tr&gt; &a

afeitech的专栏 275

分享:Hibernate+Struts分页代码(一)

关于分页显示方面的文章,网上搜索会有好几大箩,当然每个人都有自己的思路和出发点。我的基本思路也很简单,就是将搜索过程分为两个部分:“预搜索”和“分页显示”。预搜索负责查询记录主键ID集,并且在整个查询分页过程中只执行一次;分页显示负责从预搜索的主键ID集中找出当前要显示的记录,每进行一次翻页操作便执行一次,从而实现分页显示功能。由于查询的Where条件为主键ID,并且每次只查询当页显示的记录数(比

2899

Spring+Hibernate+Struts2项目时设计的分页代码

      分页显示一直是web开发中一大烦琐的难题,传统的网页设计只在一个JSP或者ASP页面中书写所有关于数据库操作的代码,那样做分页可能简单一点,但当把网站分层开发后,分页就比较困难了,下面是我做Spring+Hibernate+Struts2项目时设计的分页代码,与大家分享交流。1、DAO层接口的设计,在MemberDao接口中定义了如下两个方法:<img id="Codehighli

wkwanglei的专栏 1411

Struts2+Hibernate分页显示实例

下面是一个struts2+hibernate的分页显示,主要是用到了hibernate的相应分页方法大大简单了分页的代码版本:Struts2.1.8         Hibernate3.2         Oracle9g具体代码如下:1.Plan.javapackage com.creattech.plan;public class Plan { priva

路人甲的专栏 1万+

分享:Hibernate+Struts分页代码(二)

现在展示在大家面前的是查询分页两个核心类 :AbstractSearch(预查询初始化程序)、AbstractList(分页及初始化分页程序),代码如下:/********************************AbstractSearch类************************************/package com.nyhr.struts.frame;import j

2523

struts2 mysql 分页代码,Struts2.1.6+Spring2.5.6+Hibernate3.3.2+mysql调整+分页模板

Struts2.1.6+Spring2.5.6+Hibernate3.3.2+mysql整合+分页模板1、导入29个JAR包JAR包名称作用Struts2.1.6(7个)struts2-core-2.1.6.jarstruts2开发的核心类库freemarker-2.3.13.jarstruts2的UI标签的模板使用freemarker编写commons-logging-1.0.4.jarASF出...

weixin_31832223的博客 191

Struts + Hibernate分页显示

Struts + Hibernate分页显示 v1.0这是我学习Struts半个月以来,在开发第一个留言簿的时候,参考了网上很多的方案,然后做的一套Web分页机制,使用Struts的MVC方式,利用Hibernate的分段查询的机制来实现,JSP页面干净不含Java代码,逻辑结构清晰,易于扩展。是一个比较好的完整的分页解决方案。 目前为第一个版本,以后会逐步完善,在这里希望能起到一

漠海林峰 968

Struts2+Hibernate3+Spring三大框架技术实现MySQL数据分页

Struts2+Hibernate3+Spring三大框架技术实现MySQL数据分页 源代码下载地址:http://www.zuidaima.com/share/1550463494638592.htm

springmvc_springdata的专栏 1638
上一篇: Hibernate中的Criteria条件查询[转]
下一篇: Java Web项目开发到底需要掌握哪些技术?
sunappro
博客等级 码龄20年 3粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值