`
mizhao1984
  • 浏览: 91676 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

对java翻页查询代码的封装(jsp+struts+spring)

阅读更多

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}页&nbsp;当前第${page.currentPage}页&nbsp;
<c:if test="${page!=null}">
    <c:if test="${page.maxPage == 1 || page.maxPage == 0}">
            首页&nbsp;|&nbsp;上一页&nbsp;|&nbsp;下一页&nbsp;|&nbsp;尾页
    </c:if>
 <c:if test="${page.currentPage>1&&page.currentPage<page.maxPage&&page.maxSize!=0}">
   <a href="${pageSession.requestUri }&currentPage=1">首页</a>&nbsp;|&nbsp;  
  <a href="${pageSession.requestUri }&currentPage=${page.currentPage-1}">上一页</a>&nbsp;|&nbsp;
  <a href="${pageSession.requestUri }&currentPage=${page.currentPage+1}">下一页</a>&nbsp;|&nbsp;
  <a href="${pageSession.requestUri }&currentPage=${page.maxPage}">尾页</a>
 </c:if> 
 <c:if test="${page.currentPage<=1&&page.maxPage!=1&&page.maxSize!=0}">
  首页&nbsp;|&nbsp;上一页&nbsp;|&nbsp;
  <a href="${pageSession.requestUri }&currentPage=${page.currentPage+1}">下一页</a>&nbsp;|&nbsp;
  <a href="${pageSession.requestUri }&currentPage=${page.maxPage}">尾页</a>
 </c:if> 
 <c:if test="${page.currentPage>=page.maxPage&&page.maxPage!=1&&page.maxSize!=0}">
  <a href="${pageSession.requestUri }&currentPage=1">首页</a>&nbsp;|&nbsp;
  <a href="${pageSession.requestUri }&currentPage=${page.currentPage-1}">上一页</a>&nbsp;|&nbsp;
  下一页&nbsp;|&nbsp;尾页
 </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);

分享到:
评论

相关推荐

    零基础学Java[1].Web开发:JSP.Servlet.Struts.Spring.Hibernate.Ajax(PPT).rar

    本资源"零基础学Java[1].Web开发:JSP.Servlet.Struts.Spring.Hibernate.Ajax(PPT).rar"提供了一套完整的入门教材,涵盖了从基础到进阶的关键知识点。 首先,我们从基础开始,讲解【HTML相关技术基础知识】。HTML...

    HTML+Java+JavaOOP+JQuery+JSP+Hibernate+Spring+Struts+人事面试

    JSP(JavaServer Pages)是Java的动态网页技术,将Java代码嵌入到HTML中,用于服务器端的编程。面试中可能涉及JSP指令、脚本元素、EL(表达式语言)和JSTL(JavaServer Pages Standard Tag Library)。 Hibernate是...

    网上购物系统论文JSP+Struts+Hibernate+Spring

    1. JSP(JavaServer Pages):JSP是一种动态网页技术,允许开发者在HTML页面中嵌入Java代码,从而实现服务器端的逻辑处理。在本论文中,JSP用于展示用户界面,负责接收用户的请求并呈现响应结果。 2. Struts:...

    物流配货网(jsp+struts2+mysql)

    首先,JSP(JavaServer Pages)是Java Servlet的一种扩展,允许开发者在HTML页面中嵌入Java代码,从而实现动态网页的创建。在物流配货网中,JSP主要负责生成和展示用户界面,处理用户的输入请求,并将数据传递给后台...

    Spring + Struts +Hibernate简单学习源码

    Spring、Struts和Hibernate是Java开发中非常经典的三大框架,它们各自负责应用程序的不同层面:Spring作为全面的容器和依赖注入框架,负责管理对象和提供事务处理;Struts则是一个MVC(模型-视图-控制器)框架,主要...

    JAVA spring+struts+hibernate开发的留言板

    本项目"JAVA spring+struts+hibernate开发的留言板"便是这种经典组合的应用实例。 Spring框架是Java EE应用程序的核心组件,它提供了全面的依赖注入(DI)和面向切面编程(AOP)功能,简化了开发过程。Spring还包含...

    Spring+struts+hibernate经典注册

    Spring、Struts和Hibernate是Java开发中的三大框架,它们各自负责不同的职责,组合起来可以构建出功能强大且架构清晰的企业级应用。在这个“Spring+Struts+Hibernate经典注册”项目中,我们将深入探讨这三个框架如何...

    Ibatis+Spring+struts1框架搭建

    【标题】:Ibatis+Spring+Struts1框架搭建 在Web开发中,Ibatis、Spring和Struts1是三个非常重要的组件,它们分别负责不同的职责。Ibatis是一个优秀的持久层框架,Spring是一个全面的后端应用框架,而Struts1则是一...

    java javaee struts2 spring hibernate免费学习视频教程

    根据提供的标题、描述、标签及部分内容,我们可以总结出以下与Java、Java EE、Struts2、Spring、Hibernate相关的学习知识点: ### Java基础 - **Java语言特性**:介绍Java的基本语法,包括变量、数据类型、流程...

    spring+struts2+hibernate框架说明

    SSH框架,全称为Struts+Spring+Hibernate,是Java Web开发中广泛应用的开源框架组合。这一框架集成了解决Web层、业务层和持久层问题的三个核心组件。 首先,Struts是一个基于Servlet和JSP技术的MVC(Model-View-...

    java学习资料集合梁建全老师(js+jsp+jqurey+Struts2+hibernate+Spring+jdbc+java基础等)

    "Java相关课程系列笔记之十JSP学习笔记"是关于JavaServer Pages(JSP)的,JSP是Java Web开发中的视图层技术,允许在HTML中嵌入Java代码,实现动态网页的生成。学习JSP,需要理解EL表达式、脚本元素、指令标签和...

    struts2+spring3+hibernate4 + UI 组件(easyui)+代码生成器+共通封装+Spring_security权限

    架构技术: struts2+spring3+hibernate4 + UI 组件(easyui)+Spring_security权限 配置思想: Convention 零配置(不需要任何配置文件) 优点; [1].代码生成器(单表的增删改查完美生成) 注意:包括JSP页面的生成...

    JSP+Struts公告管理系统

    JSP是Java平台上的动态网页技术,它允许开发者在HTML页面中嵌入Java代码,实现了视图和逻辑的分离。在公告管理系统中,JSP主要负责展示用户界面,通过EL(Expression Language)和JSTL(JavaServer Pages Standard ...

    Spring+Struts2+Ibatis整合例子

    在Spring+Struts2整合中,Spring可以作为Action的依赖注入容器,为Struts2的Action类注入所需的依赖。 **iBatis 框架** iBatis 是一种持久层框架,它将SQL与Java代码分离,避免了传统的DAO(Data Access Object)...

    Spring+Struts+MyBatis完整项目

    MyBatis通过XML或注解方式定义SQL语句,将SQL与Java代码分离,提供了更灵活的数据库访问。它支持预编译参数和动态SQL,可以处理复杂的查询需求。同时,MyBatis与Spring的集成使得事务管理变得更加容易。 在这个项目...

    jsp+struts小项目-3

    JSP结合了HTML和Java代码,允许开发者在页面上嵌入Java表达式和脚本片段。 3. **JavaBean**:JavaBean是一种符合特定规范的Java类,通常用来封装业务逻辑或数据。在Struts1.2中,JavaBean常作为模型层的实体类,...

    SSI Spring+struts1+ibatis案例

    在这个"Spring+struts1+ibatis案例"中,我们将深入探讨这三个框架如何相互配合,以及它们各自的核心功能。 首先,Spring框架是Java企业级应用的核心组件,它提供了依赖注入(Dependency Injection, DI)和面向切面...

    整合spring4+struts2+hibernate4项目源码

    在IT行业中,集成Spring、Struts2和Hibernate这三大框架是构建企业级Java Web应用程序的常见方式。这个项目源码提供了这样一个集成实例,名为"整合spring4+struts2+hibernate4项目源码",它展示了如何将这三个框架...

    ext+struts+spring小例子

    在这个小例子中,Struts可能负责处理用户的图书查询、添加、删除和修改等操作,通过ActionForm或Struts2的Action类来封装请求数据。 Spring框架则是Java企业级应用的核心,它提供了依赖注入(DI)和面向切面编程...

    spring+hibernate+struts+XFire的webService实例

    总结来说,"Spring+Hibernate+Struts+XFire的WebService实例"提供了一个完整的Java Web服务解决方案,涵盖了从数据持久化到用户界面,再到Web服务的整个开发流程。这个实例对于学习和理解企业级Java应用的开发具有很...

Global site tag (gtag.js) - Google Analytics