1.page对象:用于对翻页信息的封装
public class Pages {
/**
* 当前页
*/
private int currentPage = 1;
@SuppressWarnings("unused")
/**
* 总页数
*/
private int maxPage = 0;
/**
* 每页记录数
*/
private int pageSize = GlobalConfigContaint.getPageSize();
/**
* 总记录数
*/
private int maxSize = 0;
/**
* 构造Pages对象
* @param currentPage 当前页
*/
public Pages(int currentPage){
this.currentPage = currentPage==0?1:currentPage;
}
/**
* 构造Pages对象
* @param currentPage
* @param pageSize
*/
public Pages(int currentPage,int pageSize){
this.currentPage = currentPage==0?1:currentPage;
this.pageSize = pageSize;
}
public int getCurrentPage() {
return currentPage == 0?1:currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage == 0?1:currentPage;
}
public int getMaxPage() {
return (maxSize+pageSize-1)/pageSize;
}
public void setMaxPage(int maxPage) {
this.maxPage = maxPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getMaxSize() {
return maxSize;
}
public void setMaxSize(int maxSize) {
this.maxSize = maxSize;
}
/**
* 分页包装语句
* @param sql
* @return
*/
public String fenYeSQL(String sql){
int start = (currentPage-1)*pageSize;
int end = currentPage*pageSize;
String str = "select * from (select t1.*,rownum r from (select t.* from ("+sql+") t where rownum<="+end+" ) t1) t2 where t2.r>"+start;
return str;
}
/**
* 获取总记录数包装语句
* @param sql
* @return
*/
public String maxSizeSQL(String sql){
return "select count(*) from ("+sql+")";
}
public Pages() {
}
}
2.PageSession类:对页面查询信息的处理
/**
* 翻页帮助类
* @author mz
*
*/
public class PageSession {
private String requestUri;
public PageSession(HttpServletRequest request){
this.requestUri = request.getRequestURI() + "?method=" + request.getParameter("method");
}
private Pages page = new Pages();
/**
* 查询参数集合
*/
Map<String,String> conditions = new HashMap<String,String>();
public Map<String, String> getConditions() {
return conditions;
}
public void setConditions(Map<String, String> conditions) {
this.conditions = conditions;
}
public String getRequestUri() {
return requestUri;
}
public void setRequestUri(String requestUri) {
this.requestUri = requestUri;
}
public Pages getPage() {
return page;
}
public void setPage(Pages page) {
this.page = page;
}
/**
* 初始化分页
* @param request
* @param keys 查询参数
* @param keys 查询参数值
*/
public static PageSession initPageSession(HttpServletRequest request,String[] keys){
PageSession pageSession = null;
boolean valueIsNull = false;
//从request中获得参数值
String[] values = new String[keys.length];
for (int i=0;i<values.length;i++) {
values[i] = request.getParameter(keys[i]);
if(values[i] == null){
values[i] = "";
valueIsNull = true;
}
}
//如果为空则表示:点击翻页或初次请求action
if(valueIsNull){
pageSession = (PageSession)request.getSession().getAttribute("pageSession");
//判断是否为同一个请求action
if(pageSession != null && pageSession.getRequestUri().indexOf(request.getRequestURI() + "?method=" + request.getParameter("method")) != -1){
for (int i=0;i<values.length;i++) {
values[i] = pageSession.getConditions().get(keys[i]);
}
}else{
pageSession = new PageSession(request);
}
}else{
pageSession = new PageSession(request);
//点击查询
for (int i=0;i<values.length;i++) {
pageSession.getConditions().put(keys[i], values[i]);
}
}
if(request.getParameter("currentPage") != null){
pageSession.page.setCurrentPage(DataUtils.getInt(request.getParameter("currentPage")));
}
request.setAttribute("page",pageSession.page);
request.getSession().setAttribute("pageSession",pageSession);
return pageSession;
}
}
3.jsp翻页代码:
<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="gb2312"%>
<%@ taglib prefix="c" uri="/WEB-INF/c.tld"%>
<div class="split_page">
共${(page.maxPage==0)? 1 : page.maxPage}页 当前第${page.currentPage}页
<c:if test="${page!=null}">
<c:if test="${page.maxPage == 1 || page.maxPage == 0}">
首页 | 上一页 | 下一页 | 尾页
</c:if>
<c:if test="${page.currentPage>1&&page.currentPage<page.maxPage&&page.maxSize!=0}">
<a href="${pageSession.requestUri }¤tPage=1">首页</a> |
<a href="${pageSession.requestUri }¤tPage=${page.currentPage-1}">上一页</a> |
<a href="${pageSession.requestUri }¤tPage=${page.currentPage+1}">下一页</a> |
<a href="${pageSession.requestUri }¤tPage=${page.maxPage}">尾页</a>
</c:if>
<c:if test="${page.currentPage<=1&&page.maxPage!=1&&page.maxSize!=0}">
首页 | 上一页 |
<a href="${pageSession.requestUri }¤tPage=${page.currentPage+1}">下一页</a> |
<a href="${pageSession.requestUri }¤tPage=${page.maxPage}">尾页</a>
</c:if>
<c:if test="${page.currentPage>=page.maxPage&&page.maxPage!=1&&page.maxSize!=0}">
<a href="${pageSession.requestUri }¤tPage=1">首页</a> |
<a href="${pageSession.requestUri }¤tPage=${page.currentPage-1}">上一页</a> |
下一页 | 尾页
</c:if>
</c:if>
</div>
使用方法:
以上3个类在使用中均不用做修改,约束:(只支持struts的DispatchAction,且struts配置文件中 parameter="method")
只需在action中添加如下代码:
CardBiz cardBiz = (CardBizImpl)this.getService("cardBiz");
String[] keys = {"organizeId","status","startTime","endTime"};
PageSession pageSession = PageSession.initPageSession(request,keys);
//获得查询参数值
String organizeId = pageSession.getConditions().get("organizeId");
String status = pageSession.getConditions().get("status");
String startTime = pageSession.getConditions().get("startTime");
String endTime = pageSession.getConditions().get("endTime");
Map<String,Object> conditionMap = new HashMap<String,Object>();
conditionMap.put("organizeId", DataUtils.getInt(organizeId));
conditionMap.put("status", DataUtils.getInt(status));
conditionMap.put("startTime", startTime);
conditionMap.put("endTime", endTime);
//分页查询数据(在查询数据时可使用Pages对象的fenYeSQL,maxSizeSQL方法)
List<CardMO> cardMoList = cardBiz.findMosRukuList(pageSession.getPage(),conditionMap);
request.setAttribute("cardMoList",cardMoList);
分享到:
相关推荐
架构技术: struts2+spring3+hibernate4 + UI 组件(easyui)+Spring_security权限 配置思想: Convention 零配置(不需要任何配置文件) 优点; [1].代码生成器(单表的增删改查完美生成) 注意:包括JSP页面的生成...
Spring 提供了管理业务对象的一致方法,并鼓励注入对接口编程而不是对类编程的良好习惯,使我们的产品在最大程度上解耦。Hibernate 是用来持久化数据的,提供了完全面向对象的数据库操作。Hibernate对JDBC进行了非常...
1.4.2 JSP(Java服务页面) 1.4.3 EJB(企业JavaBean) 1.4.4 JDBC(Java数据库连接) 1.4.5 JTA/JTS(Java事务) 1.4.6 JNDI(Java命名和目录服务) 1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) ...
1.4.2 JSP(Java服务页面) 1.4.3 EJB(企业JavaBean) 1.4.4 JDBC(Java数据库连接) 1.4.5 JTA/JTS(Java事务) 1.4.6 JNDI(Java命名和目录服务) 1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) ...
1.4.2 JSP(Java服务页面) 1.4.3 EJB(企业JavaBean) 1.4.4 JDBC(Java数据库连接) 1.4.5 JTA/JTS(Java事务) 1.4.6 JNDI(Java命名和目录服务) 1.4.7 JavaMail(Java邮件服务) 1.4.8 RMI(远程方法调用) ...
4、写sping的application和applicationservices或者其它配置.(可对些文件分为其它文件,在web.xml中注册即可) 5、配置struts.xml 6、配置sqlmapconfig.xml,如果有include,则配置其它文件. 7、写dao和service类. 8、...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》内容包括Web客户端技术、JSP/Servlet技术、Struts 2(*、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring...
用JAVA编写的指针式圆形电子钟,效果图如下所示,其实代码很简单,希望对你有帮助。 Message-Driven Bean EJB实例源代码 2个目标文件 摘要:Java源码,初学实例,EJB实例 Message-Driven Bean EJB实例源代码,演示...
Struts、Hibernate和Spring是我们Java开发中...但是这种结构仍然存在问题:如JSP页面中需要使用符号嵌入很多的 Java代码,造成页面结构混乱,Servlet和Javabean负责了大量的跳转和运算工作,耦合紧密,程序复用度低等等
用JAVA编写的指针式圆形电子钟,效果图如下所示,其实代码很简单,希望对你有帮助。 Message-Driven Bean EJB实例源代码 2个目标文件 摘要:Java源码,初学实例,EJB实例 Message-Driven Bean EJB实例源代码,演示...
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的...
构建Spring基础代码 Spring 基础语义 Dependency Injection 依赖注入的几种实现类型 Type1 接口注入 Type2 设值注入 Type3 构造子注入 几种依赖注入模式的对比总结 Spring Bean封装机制 Bean Wrapper ...
源码亲自运行测试过,放心使用!...后端主要应用框架技术:Spring+hibernate+struts2+mysql 开发工具:Myeclipse或Eclipse、jdk1.7、tomcat8、mysql5.6或5.7数据库。 温馨提示:有运行文档,带概要设计
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的...
第27章 商业银行设备巡检系统(struts 2.x+spring+hibernate) 27.1 商业银行设备巡检系统概述 27.2 商业银行设备巡检系统前期准备 27.3 商业银行设备巡检系统具体实现——系统管理应用 27.4 商业银行...
javaPPT 从入门到精通 从基础到框架 70个PPT 1.初识java 2.变量、数据类型和运算符和表达式 3运算符和程序流程结构 4.数组 5.类和对象 6.字符串 7.封装,继承,多肽 8.接口与抽象类 9.java集合类 10.jdbc 11 html...
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的...
google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来...