`

两个字母搞定J2EE通用分页标签(一):

    博客分类:
  • ssh
阅读更多

作者:张纪豪(转载请注明出处)

()摘要与设计思想

海水无量,只取一瓢。大量的数据显示,分段提取是通用的做法,是的,这叫分页技术。

<t:p/>,对于WEB程序员,这种标签格式不会陌生。t:代表自定义标签库;p:分页标签。两个字母(具体的说它是6个字符组成)便可以搞定J2EE平台下所有分页功能。当然可以扩充,例如显示总记录数、总页数、当前页数、每页记录数等信息。

效果截图1

效果截图2

是不是很诱人?那好吧,笔者带大家开始艰难之旅吧。

艰难?呵呵,不用害怕,还是那套机制,只是不同的封装。

本文将从图书、新闻两个实体数据显示来详细介绍这种通用分页技术。

J2EE项目架构设计:

最初微软的Asp脚本语言给动态WEB应用程序开发带来广阔的天地,由此互联网更加精采,不过笔者没有用过Asp来架构过大型项目,因为听说中关村的程序员大部分都有颈椎病预期都是因为陷进了微软的泥潭(逗乐!)。对于那种将所有程序代码和网页显示代码混在一个文件中且脱离不了过程化的编程方法,用在大型项目的构建着实有些可怕。因此J2EE规范中将程序与页面代码分离是一次伟大的革新,并在后来演变成多层结构分层治之的思想,随后微软的C#效仿之,这才初步将程序员慢慢解放。

典型的J2EE项目分为模型-视图-控制三层,即MVC(Model-View-Controller),模型是整个项目中最复杂部分,它除了有核心的数据操纵技术,还需要紧密的业务逻辑,所以模型层又可包含模型领域、数据访问层、服务层;控制层有一个经典的框架是Struts,熟悉它的Action就知道控制层的作用;视图层较容易些,例如最广泛使用的JSP。通过MVC概念就知道原来说用JSP做项目就可看出自己还没有入行,现在已经不是微软的ASP时代,因为在J2EE里根本不用JSP就可以强大的WEB项目(例如页面用velocity模板技术而不用JSP)。这也就意味着J2EE项目里的视图不再局限于网页,它可能是ExcelPDFDesktable Window等等。

本文阐述的分页技术围绕一个含数据领域为五层的小项目来展开描述,控制层和模型层都交给Spring管理,属真正的SSH集成开发模式:

表现层为采用JSP技术;

控制层采用当今最热门Struts(版本为1.x,不是Struts2) ,虽然我发现它的牙都快掉光了,但还是选择它以更能熟练掌握本分页方法;

模型层中含有服务层、数据库访问层和数据领域层,其中:

持久层采用Hibernate(版本3.2)Hibernate管理领域对象的配置采用注解方式,与xml方式配置功能是一样。

控制层和模型层全交给Spring容器管理。

数据库管理系统不太关心,因为现在是面向对象编程,你给Hibernate怎么配置,Hibernate就怎么实现。

下一节将介绍工程建立、数据领域模型以及它的映射到数据库必须的配置(上述本例采注解方式)page对象的封装……

()项目工程基础和领域模型



一、工程基础:

1、我们先在MyEclipse开发工具里建一个WEB项目,并将各包建立如下:

com.zhangjihao.domain 存放领域对象,需要持久化到数据库的

com.zhangjihao.bean 存放非持久化到数据库的bean

com.zhangjihao.dao 数据访问层

com.zhangjihao.service 服务层

com.zhangjihao.web WEB层,其中web包下还有strutsfiltertaglib等子包

com.zhangjihao.util 自己的工具包

2、准备所需的jar包:

再将Struts1.2Spring2.5Hibernate3.2Log4jSunApache的工共组件、数据库驱动等等所需的jar包都拷入到WebRoot/WEB-INF/lib目录,并Build PathMyEclipse(一般MyEclipse会自动Build Path)

3xml文件的准备:

web.xml中加上StrutsSpring配置:

struts-config.xml中加上(第四篇将有将更详细的内容)

准备一个Springxml配置文件:

由于web.xml里已经写了beans.xml,我们就用它作为Spring的配置文件,由于Hibernate也交给了Spring管理,我们就不需要给Hibernate写配置文件,而是将Hibernate配置信息写在beans.xml

再在数据库管理系统中开一个库。通过上面的工作,我们的工程基础基本准备好。这些虽然偏主题,但笔者作事偏谨,故嗦了这么多,或许对刚接触SSH集成开发的朋友还是有很大的帮助。

二、实体搭建(Entity Bean)

我们这个主题在前面讲过围绕图书和新闻两个实体来描述分页方法,所以建立这个实体,并将Hibernate映射配置借助JPA标准在实体方法中通过注解来配置:

1、图书实体Book.java

2、新闻实体(News.java)

当然,这仅仅是为了描述分页技术,对于真正的应用,这种数据库设计是不完美的,例如最常用到图书分类、新闻分类、发布人、有效性设定等信息,在此都作省略。

编写java实体Bean时,都要养成几个习惯:

_实现Serializable接口;

_覆盖hashCode()equals(Object obj)方法;

_不再用基本类型定义字段;

_定义了常用字段的构造方法时,一定要定义一个空的构造方法。

上面两个实体类都有两个构造方法,一个空的,一个是用于列表显示时用的。我们知道,当分页显示图书时,其每本书的内容介绍(description字段)是不需要显示出来的,因为当用户点某本书查看更多详细的书内容介绍时才需要显示图书描述(description字段),而往往在数据库中description字段中数据库甚至大于其它所有字段内容之和,所以从性能角度考虑,在分页显示时图书列表则不需要description字段,大家可仔细看看上面的构造方法。

还需要注意类名上和get方法上面的注解,它们功能和*.hbm.xmk文件内容差不多,不熟悉的朋友去看看JPA的书籍。

三、 Page Bean

下面是重点的Page类封装(Page.java)
对于一个分页项,其中有三个重要的属性分别是:总记录数量、每页记录数量、当前页,有了这三个属性便可以计算出总页数,当然有必要再加一个url属性,因为第n页和n±1页对于服务器来讲是两个不同的页面,url便是用于页面的导向,好,下面看看详细的代码:

对于Page类的写法非常灵活,有点将查询结果封闭到该对象上,甚至有点将SQL语句封装里面,笔者认为只要达到功能,越简单越好。

事实上有了Page对象,整个思路就全部明白,后面的工作无非是将Page对象中的数据填充和显示出来

分享到:
评论

相关推荐

    机器学习介绍及在金融领域的应用.zip

    机器学习

    麦肯锡-xx股份组织结构设计方案gl.ppt

    麦肯锡-xx股份组织结构设计方案gl.ppt

    目前机器人基于ChatGPT进行开发 使用机器人可以让你轻松进行对话, 后续机器人的更新升级一个命令即可搞定

    目前机器人基于ChatGPT进行开发 使用机器人可以让你轻松进行对话, 后续机器人的更新升级一个命令即可搞定, 无需再上服务器进行升级机器人.zip

    基于matlab实现的Hilbert-Huang Transform的完整源码EEMD.rar

    基于matlab实现的Hilbert-Huang Transform的完整源码EEMD.rar

    UE4 C++项目,无人机射击小游戏.zip

    无人机最强源码,无人机算法,易于部署和学习交流使用

    ch_PP-OCRv4_rec.onnx

    PP-OCR rec

    node-v6.11.4-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v10.1.0-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v6.12.3-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    单链表的基本操作hahhahaha

    单链表的基本操作hahhahaha

    infrared-remote-controller-master

    mysql安装配置教程

    node-v9.5.0-sunos-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v10.9.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    devanagari_PP-OCRv3_rec.onnx

    PP-OCR rec

    node-v9.6.0-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    利用CNN进行无人售货机的商品识别.zip

    无人机最强算法源码,易于部署和学习交流使用

    控制多架无人机实现图像拼接.zip

    无人机最强算法源码,易于部署和学习交流使用

Global site tag (gtag.js) - Google Analytics