- 浏览: 243261 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
3w1h:
"2.对于外部查询中的每一行分别执行一次子查询,而且 ...
浅说:in、not in、exists和not exists的区别 -
danielhjd:
shishuang 写道[size=large][/size] ...
(SSH框架)Spring 和Struts的配置说明... -
shishuang:
[size=large][/size] 没有出来你strut ...
(SSH框架)Spring 和Struts的配置说明... -
daven1314:
不错,学习了!
(oracle)如何创建和使用procedure
总所周知,JavaEE软件开发三层构架分别是:显示层(JSP页面/html页面/aspx页面),业务逻辑层(Servlet/Action),数据访问层(DAO).三层构架之间的逻辑关系和数据流构成了软件的基本内容。此部分主要研究在Spring&Hibernate的整合分页中之间的数据流和逻辑跳转的关系;
业务介绍:由添加产品直接跳转到所有产品的显示页面(add.jsp---Sumbit--->add.action---redirect--->list.action--->list.jsp)...在这里,我们关注的是(list.action--->list.jsp)
1:显示层,在这里我们是用JSP页面做为显示并引用S-Tag。
2:业务逻辑层,由add.action重定向到list.action。这次逻辑跳转很明显没有数据流通过add.jsp页面传到业务层面。
3:数据访问层,list.action访问数据库的数据。如list.action的代码所显示:从数据中获取数据的总条数:
this.buygoodsDao.getRows() //从数据库中获取数据的总条数
获取一个Pager对象pager (获取这个对象的作用是什么了?接下来会给详细的解释),此出Class PagerService,这里的paperService作用是为了获取一个Pager的对象(作用访问页面的数据,在动态的通过一个对象实现页面的传递)
this.pager = this.pageService.getPager(this.getCurrentPage(), this.getPagerMethod(), Integer.parseInt(this.getTotalRows()));
这里我们来看Class Pager(点击查看代码),Paper中有很多类似于javabean中的get&set方法(在这里的作用无非是实现数据流的作用),另外还有构造方法public Pager(int _totalRows) {}(在这里的作用是获取第一页得数据源),public void first() {}等方法(在这里的作用是控制currentPages的数据变化);
this.setCurrentPage(String.valueOf(pager.getCurrentPage())); //this.setTotalPages(String.valueOf(pager.getTotalPages())); this.setBuygoods(this.buygoodsDao.getPageAllBuyGoods(pager.getPageSize(),pager.getStartRow()));
4:数据显示(显示层)。将从数据库中获取的数据传到JSP以实现显示的功能。
在这里,值得注意的是" 由于这是第一次作用于list.action,并没有jsp页面到业务逻辑层面的数据的传递"。
public String list(){ this.setTotalRows(String.valueOf(this.buygoodsDao.getRows())); System.out.println("A获取的TotalRows="+this.getTotalRows()); System.out.println("A获取的CurrentPage="+this.getCurrentPage()); System.out.println("A获取的PagerMethod="+this.getPagerMethod()); this.pager = this.pageService.getPager(this.getCurrentPage(), this.getPagerMethod(), Integer.parseInt(this.getTotalRows())); System.out.println(this.getTotalRows()); System.out.println("B获取的TotalRows="+this.getTotalRows()); System.out.println("B获取的CurrentPage="+this.getCurrentPage()); System.out.println("B获取的PagerMethod="+this.getPagerMethod()); this.setCurrentPage(String.valueOf(pager.getCurrentPage())); // this.setTotalPages(String.valueOf(pager.getTotalPages())); this.setBuygoods(this.buygoodsDao.getPageAllBuyGoods(pager.getPageSize(),pager.getStartRow())); } return "success"; }
输出的结果是:
(在这里pager这个对象通过get&set的方法传到了list.jsp上)
A获取的TotalRows=33 A获取的CurrentPage=null A获取的PagerMethod=null B获取的TotalRows=33 B获取的CurrentPage=null B获取的PagerMethod=null
由上面的结果可以看的出 CurrentPage PagerMethod并不是从页面取得的,这就是为上面在PagerService中要判断这两个数据是不是空值的原因。new 一个Pager的对象;
Pager pager = new Pager(totalRows);
转到Pager上,Pager有一个含参数的构造方法,确定了第一页。
public Pager(int _totalRows) { totalRows = _totalRows; totalPages=totalRows/pageSize; int mod=totalRows%pageSize; if(mod>0){ totalPages++; } currentPage = 1; startRow = 0; }
此时赋值了的currentPage 传到list.jsp上。
看看jsp中的代码,中的属性元素:totalRows;currentPage;pager;
<td colspan="7"> 共<s:property value="totalRows"/>行 第<s:property value="currentPage"/>页 共<s:property value="pager.getTotalPages()"/>页 <a href="<s:url value="listBuyGoods.action"> <s:param name="currentPage" value="currentPage"/> <s:param name="pagerMethod" value="'first'"/> </s:url>">首页</a> <a href="<s:url value="listBuyGoods.action"> <s:param name="currentPage" value="currentPage"/> <s:param name="pagerMethod" value="'previous'"/> </s:url>">上一页</a> <a href="<s:url value="listBuyGoods.action"> <s:param name="currentPage" value="currentPage"/> <s:param name="pagerMethod" value="'next'"/> </s:url>">下一页</a> <a href="<s:url value="listBuyGoods.action"> <s:param name="currentPage" value="currentPage"/> <s:param name="pagerMethod" value="'last'"/> </s:url>">尾页</a> </td>
疑问一:为什么一下三个的取值的方法不同?
共<s:property value="totalRows"/>行 第<s:property value="currentPage"/>页 共<s:property value="pager.getTotalPages()"/>页
疑问二:Pager的对象pager有totalRows;currentPage这两个属性,同时也增加了set&get的方法;
共<s:property value="pager.getTotalRows()"/>行 第<s:property value="pager.getCurrentPage()"/>页 共<s:property value="pager.getTotalPages()"/>页
这样的取值方式可以吗? 操作证明,这种方法也是可以去到值的...
疑问三:为什么在Action中要把CurrentPage set出去?不是通过Pager这个对象可以去到....
this.setCurrentPage(String.valueOf(pager.getCurrentPage()));
带着三个疑问回到list.action中...我们会发现一下代码:
this.pager = this.pageService.getPager(this.getCurrentPage(), this.getPagerMethod(), Integer.parseInt(this.getTotalRows()));
CurrentPage PagerMethod这两个属相的值是用页面获取的到,通过pageService.getPager()方法返回一个pager的对象。再通过这个对象在页面上取值。当CurrentPage PagerMethod为空的时候,就是第一次得初始值。
这个情况是程序这样设计的关键....第一次初始值的需要
在分页中,往往是在页面上点击“首页,前一页,后一页,尾页”按键触发一个事件,这时将触发的数据传到servlet中,通过pageService获取一个对象pager,通过pager控制数据的变化,最后通过servet将数据传出去。
假设一:如果action中的这段程序截掉......
this.setCurrentPage(String.valueOf(pager.getCurrentPage()));
那么“首页,前一页,后一页,尾页”将会失效...因为currentpage将取不到值
假设二:在假设一的基础上,将程序改成这样:
<a href="<s:url value="listBuyGoods.action"> <s:param name="currentPage" value="pager.getCurrentPage()"/> <s:param name="pagerMethod" value="'first'"/> </s:url>">首页</a>
这样程序仍然为正确。
这里就设计到程序的优化问题....可惜小弟还没学...哈哈
发表评论
-
(SSH框架)Spring 和Struts的配置说明...
2011-06-28 11:32 1532Struts2的配置: <?xml version=& ... -
提问:为什么在Operate这个方法中运行后,X的值改变,但Y没有?
2011-06-14 18:36 1307代码: package test; public c ... -
(Linux)Vi的常用命令的整理
2011-06-07 11:36 1594Vi is short for Visualedit... ... -
(Ajax) Ajax的运行轨迹
2011-06-04 21:47 932一段Ajax的代码 function check ... -
(Spring&Hibernate )Spring & Hibernate的整合分页问题之一:代码部分
2011-06-04 15:28 873list.jsp的分页跳转的代码: <tr alig ... -
(笔记)如何在java中调用procedure & function
2011-05-27 10:17 6479第一:调用函数的例子: package daniel.tes ... -
有关日期Date 和String型相互转换
2011-05-20 16:49 962SimpleDateFormat sdf=new Simple ... -
(笔记)HashCode() 和Equals()对比代码之2
2011-05-19 16:31 881package Hash; public class Dem ... -
(笔记)HashCode() 和Equals()对比代码之1
2011-05-19 16:27 726package Hash; public class Dem ... -
(笔记)关于刷新添加数据的Bug存在的原因
2011-05-18 19:55 11761)many to one 关系表中cacsade属性,将属性 ... -
(笔记)J2EE中的同步和异步
2011-05-18 19:10 914在学习java过程中很多人对同步(Synchronized)和 ... -
(笔记)有关thread的相关知识之2---运行顺序
2011-05-18 16:29 2842example1: package Thread; publi ... -
(笔记)有关thread的相关知识理解1
2011-05-18 16:21 2839-------Thread------ 线程(Thread)是 ... -
(笔记) Struts 中PassValue 的代码实现
2011-05-17 19:13 909--Struts的配置-- <struts> ... -
在同一Form表单中双Submit的传值和预览
2011-05-17 18:03 2819-- 引入C&S标签-- <%@ taglib ... -
笔记temp
2011-05-13 12:02 651在什么情况下需要lazy loading 对象调用对象的属性 ... -
ssh+tomcat+myeclipse6.5配置项目时异常
2011-05-10 16:05 926在利用框架设计时注意: 先配置 Hibernate 然后配置S ... -
SHH框架下Struts的配置
2011-05-10 16:00 968SHH框架下Struts的配置 Struts的配置: 先导 ... -
SHH框架下Spring的配置
2011-05-10 15:43 916SHH框架下Spring的配置: ---MyEclipse- ... -
SHH框架下Hibernater的配置
2011-05-10 15:19 1097Hibernate的配置 首先已经通过MyEclipse D ...
相关推荐
struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页
STRUTS2+HIBERNATE分页 实现代码详细的分页实现代码实现代码详细的分页实现代码实现代码详细的分页实现代码实现代码详细的分页实现代码
ssh分页 ssh分页ssh分页ssh分页ssh分页ssh分页
springMVC+spring+hibernate+jquery分页完整项目,完整代码
struts,spring,hibernate整合增删改查以及分页功能
传统的网页设计只在一个JSP或者ASP页面中书写所有关于数据库操作的代码,那样做分页可能简单一点,但当把网站分层开发后,分页就比较困难了,下面是我做Spring+Hibernate+Struts2项目时设计的分页代码,与大家分享...
下载后请修改数据库用户名和密码,即springAnnotation-hibernate.xml...分页显示,编辑更新,多行删除等更功能,使用了MVC设计模式,结构清晰明了,适合初学者, 入口地址:http://localhost:8080/mvcDemo/user/turnadd
Spring+Hibernate的完整分页代码,本例用的是Mysql数据库,可用于Sturts和Webwork,稍经改编,即可应用于各种Project.
Spring提供了org.springframework.orm.hibernate3.HibernateTemplate类和org.springframework.orm.hibernate3.HibernateCallback接口来方便和Hibernate整合。 HibernateTemplate类封装了Hibernate的主要类,它提供了...
spring+hibernate 分页 +mysql 可以当做模板用。
spring+hibernate+分页+mysql 分页是用c标签写的。不是java代码
struts2 spring 2.5 hibernate3整合 CRUD实例含分页 整合版本struts2 spring 2.5 hibernate3 简单的实现了一个用户的CRUD操作(列表展示有分页版本) 设计到了Validate效验,excel生成下载
使用Struts + Spring + Hibernate完成分页笔记使用Struts + Spring + Hibernate完成分页笔记使用Struts + Spring + Hibernate完成分页笔记
JAVA分页大全.doc Hibernate分页查询.doc hibernate实现分页技术.txt struts实现分页技术源代码txt Struts+hibernate制作分页的问题txt spring+struts+hibernate ...spring+hibernate分页技术.txt jsp实现分页技术.txt
Struts2 Spring3 Hibernate 注解功能 DAO 泛型 通用分页
JSF+Spring+Hibernate 分页显示 SQL Server数据库
1.通过google ehcache-spring-annotatios.jar自动注解方式实现整合Spring+Ehcache。 2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。...
前段时间时间当我在学习SSH框架技术的时候,在网上很难找到关于SSH的完整例子,比如最基本的CRUD操作和用的比较多的查询分页技术。为了让SSH初学者更清楚全面的学习,不再像我初学时候迷失方向。特花了2天时间做一个...
spring 、 Spring MVC 、 Hibernate 4.x 整合案例 增删查改的封装,,里面是代码包括简单的框架搭建,只需下载后就可以允许,,正在对分页查询进行封装
Struts2 + Spring2 + Hibernate3经典分页(包含java及jsp源码) Struts2 + Spring2 + Hibernate3经典分页(包含java及jsp源码) Struts2 + Spring2 + Hibernate3经典分页(包含java及jsp源码)