- 浏览: 887498 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
在上一个介绍里面主要讲到了分页标签的配置,逻辑处理,引用。
我们在action中:
// JSP中引用此attribute分页处理
request.setAttribute( " page " ,page);
request.setAttribute( " page " ,page);
然后在JSP中引用此page。
这次主要看如何能过对DB操作实现此page。
处理逻辑:
1:根据SQL语句,当前页面,页面大小等参数,得到一系统data。
2:根据得到的data,再加上当前页面,页面大小可以实例化一个page类实体。
3:将此实体转换成便于到前台显示的DTO。
具体如下:
首先,我们根据查询语句从DB中得到一系列相关数据
......
Query query = getSession().createQuery(sql);
setParams(query, paramNames, params);
if (pageSize > -1) {
query.setFirstResult(PageManager.getStartIndex(pageNumber,
totalCount, pageSize));
query.setMaxResults(pageSize);
}
List data = doQuery(query);
if (pageSize < 0) {
totalCount = data.size();
}
......
Query query = getSession().createQuery(sql);
setParams(query, paramNames, params);
if (pageSize > -1) {
query.setFirstResult(PageManager.getStartIndex(pageNumber,
totalCount, pageSize));
query.setMaxResults(pageSize);
}
List data = doQuery(query);
if (pageSize < 0) {
totalCount = data.size();
}
......
可以看到其中除了createQuery,setFirstResult,setMaxResults外其实都是用户自定义的一些函数。
其它函数,顾名思义应该知道它想实现一个什么功能,象doQuery(query)就是得到一个结果集也许是得到一个按列表方式抽取结果集 query.list(),or 按迭代方式抽取结果集query.iterate().函数getStartIndex(args[])返回数据第一条记录的起点位置。其它的也都差不多!
其次得到一个page的实体类(entity),或者说得到其DAO对象。
其实得到一个DTO的page对象比较简单。前面列出了page,而上面已经从DB中得到了一系列数据(data),再加上页面的相关信息就可以实例化一个page实体了:
.
public DefaultPage( int pageSize, int pagesCount, int pageNumber, Collection data,
int totalSize) {
this .pageSize = pageSize;
this .pagesCount = pagesCount;
this .pageNumber = pageNumber;
this .totalSize = totalSize;
this .data = data;
}
.
public DefaultPage( int pageSize, int pagesCount, int pageNumber, Collection data,
int totalSize) {
this .pageSize = pageSize;
this .pagesCount = pagesCount;
this .pageNumber = pageNumber;
this .totalSize = totalSize;
this .data = data;
}
.
当然在此前,对面页数据得处理一下,象pageNumber可能如下:
/** */ /**
* @param pageNumber
* @param pageSize
* @param totalCount
* Return PageNumber
*/
protected static int calcPageNumber( int pageNumber, int pageSize, int totalCount) {
int maxPageNumber = calcMaxPageNumber(pageSize, totalCount);
pageNumber = pageNumber > maxPageNumber ? maxPageNumber:pageNumber;
if (pageNumber <= 0 )
pageNumber = 1 ;
return pageNumber;
}
* @param pageNumber
* @param pageSize
* @param totalCount
* Return PageNumber
*/
protected static int calcPageNumber( int pageNumber, int pageSize, int totalCount) {
int maxPageNumber = calcMaxPageNumber(pageSize, totalCount);
pageNumber = pageNumber > maxPageNumber ? maxPageNumber:pageNumber;
if (pageNumber <= 0 )
pageNumber = 1 ;
return pageNumber;
}
easy吧!
最后将此实体转换成适合前台显示的DTO对象。
这个侧是依据不同的需求去做相应的转换了,一般来说从DB取出来的实体(DAO)直接与DB中的数据对应。而在DTO中我们可以提供许多更加符合实际的字段与方法,使得我们的JSP页面显示更加得心应手!同时也避免了直与DB交互。它们之间的关系, 我乱七八糟写过些东西(欢迎指正!)。
“一般人的标签我不看,高手写的东西真的值得借鉴,学习!”
发表评论
-
UrlRewriteFilter--动态URL静态化
2011-04-25 13:38 2039版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声 ... -
Java框架数据库连接池比较(c3p0,dbcp和proxool)
2011-04-08 22:34 703现在常用的开源数据连 ... -
Java Proxool 源代码分析
2011-04-03 00:31 1087入口点:ProxoolFacade. 启动顺序: ... -
一个相当好的自定义标签---分页(一)
2011-04-02 22:21 1441发现在系统中有好多写得很好的代码,也不知道是哪位前辈留下来的. ... -
恢复被CVS被Override and Update后的代码
2011-04-02 20:45 2020今天做了件相当愚蠢的事,把一个新的功能(之前未提交过代码)写完 ... -
MD5加密
2011-03-07 09:03 858因为用到所以就写了个加密的方法 如您发现有任何错误请Mailt ... -
抓取谷歌网页问题
2011-03-02 11:52 880当使用 URL url = new URL("htt ... -
readme
2011-03-01 15:57 7922011-3-1 /** * 循环创建父目录 * @ ... -
proxool配置文档(一)
2011-02-21 22:16 1103一、 所需要包 conmmons-loggin ... -
proxool配置文档(一)
2011-02-21 22:10 953一、 所需要包 conmmons-loggin ... -
总结一些常用功能源码
2011-02-18 09:32 908最近比较闲,总结一些开发中常用到的功能源码,把它挂出来;这样一 ... -
jboss + JMS 开发实例
2011-02-14 17:07 1797核心提示:异步进程通信是面向服务架构(SOA)一个重要的组 ... -
成为软件架构师
2011-02-01 21:48 914现在软件架构师满天飞 ... -
log4j中配置日志文件相对路径
2011-01-28 16:52 1156方法一、 解决的办法自然是用相对路径代替绝对路径,其实log4 ... -
HttpClient|HttpClient请求详解
2011-01-28 12:50 1138HttpClient 是 Apache Jakarta Com ... -
Log4J通用配置|注意问题 笔记
2011-01-28 12:46 1121关于日志的等级 那些去 百度就知道了! 这几天 要搭个新框架 ... -
JAVA WEB学习笔记(一)-Cookie和Session专题
2011-01-27 12:46 1080一、cookie机制和session机制的区别******** ... -
深入 理解 Statement 和 PreparedStatement
2011-01-26 22:05 1062一、使用Statement而不是PreparedState ... -
培析J2EE分层结构
2011-01-20 22:56 933http://hi.baidu.com/gabe2008/bl ... -
j2EE 分层模式中的异常架构设计
2011-01-20 22:45 1568Java引入了异常处理给 ...
相关推荐
标题中的“一个封装好的分页控件”指的是在软件开发中用于处理大量数据展示的UI组件,这种控件能够将大量的记录分割成多个小部分,每次只加载一部分数据到界面上,提高用户浏览效率和应用性能。在.NET环境中,这样的...
分页标签通常是一个自定义标签库,可以接受页码、每页记录数等参数,并返回相应的查询结果。这种方式提高了代码的可读性和可维护性。 总的来说,MySQL和Oracle都提供了有效的分页解决方案,但它们的语法略有不同。...
Struts2.0是Struts框架的一个重大升级版本,它在继承了Struts1.x的优良特性基础上,引入了大量的新功能和改进,特别是在标签库方面,提供了更为强大、灵活和易于使用的标签集,大大简化了Web应用的开发过程。...
`searchList`应该是一个包含各种表单字段配置的对象数组,包括类型(type)、标签(label)、属性(prop)、宽度(labelWidth)等信息。根据字段类型,可以创建不同类型的输入控件,如`el-input`、`el-date-picker`...
1. **PageBreak**: 在ReportLab中,`PageBreak`对象被用来插入一个新的页面。当你想要在某个特定点结束当前页面并开始新的一页时,可以使用它。例如: ```python from reportlab.pdfgen import canvas from ...
Magento默认的分页功能已经相当完善,但该插件可能提供了更高级的定制选项,如自定义每页显示的商品数量、动态加载(懒加载)以减少页面加载时间,以及更美观的分页样式,这些都可以提高用户的浏览效率和满意度。...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...
- PageControl通常包含多个TabPages,每个TabPage相当于一个独立的界面。 - 分页切换:处理WM_NOTIFY消息,响应TCN_SELCHANGE通知,更新当前显示的页面。 - 自定义分页样式:调整分页按钮的外观,例如使用圆角...
eXtremeComponents 是一个功能强大的组件库,尤其以其在JSP中的extremetable标签而闻名,它提供了一种类似于displaytag的便捷方式来处理表格展示,极大地提高了开发效率和用户体验。本文将深入探讨eXtremeComponents...
YxB2B商务网是易想网络旗下的门户型B2B行业网站系统,采用先进的标签技术和静态生成技术,通过网站后台管理轻松实现网站前台多种风格和会员网站多风格,让每一个只要懂得简单网页制作常识的网友,轻松制作出精美专业...
针对程序员: 模板 API | 自定义标签(tags)和过滤器(filters) 表单 Django 提供了一个丰富的框架来帮助创建表单和处理表单数据。 基础: 概览 | 表单 API | 内建字段 | 内建 widgets 进阶: 针对模型的表单 | 整合媒体...
**WordPress滑动图相册插件ML...无论你是希望提升网站视觉吸引力,还是需要一个高效展示产品或内容的工具,ML-Slider都是一个值得信赖的选择。在实际使用中,请确保自行测试以熟悉各项设置,以充分利用这款插件的优势。
MyBatis 是一个基于 Java 的持久层框架,它简化了对数据库的操作,通过 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 2. **MyBatis...
│ 13-zTree树形结构-Demo4-一次加载数据,避免多次数据库交互,提高效率7 M) d& `5 L5 T2 d7 R$ s │ 14-zTree树形结构-Demo5-一次加载数据,Map集合解决双层for性能问题 │ 0 D% f8 ?. j2 W( U' z, e ├─众筹项目-第...
例如,可以创建一个PageInterceptor插件实现分页功能。 6. **事务管理**:MyBatis支持手动和自动事务管理。在Spring集成中,通常会使用Spring的事务管理,但在简单的应用中,MyBatis也可以独立处理事务。 7. **...
同时,Firefox还支持分页浏览,允许用户在一个窗口内打开多个网页,便于多任务处理。 总的来说,Firefox 78.0b8-win32版本提供了一流的浏览体验,无论是对于普通用户还是高级用户,都是一款值得信赖的浏览器。它的...
-一个典型应用,在Window控件中打开新页面,如果传递的参数不正确,则首先提示参数不对然后关闭此弹出窗口。 -ExtAspNet.Alert.Show("参数错误!", String.Empty, ExtAspNet.ActiveWindow.GetCloseReference());...
在MFC中,`CTabSheet`类是用于实现Tab控件的一个关键组件,它允许你在同一个窗口内创建多个分页,每个分页可以展示不同的内容。`CTabSheet`是`CPropertySheet`类的一部分,常用于创建多页对话框式的应用程序。 标题...
`cms4j` 是一个内容管理系统,其 `article` 标签是用于在页面中展示或操作文章内容的核心组件。这个标签提供了丰富的参数和功能,使得开发者能够灵活地控制文章的展示方式和筛选条件。下面将详细介绍 `cms4j:article...