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);
分享到:
相关推荐
本资源"零基础学Java[1].Web开发:JSP.Servlet.Struts.Spring.Hibernate.Ajax(PPT).rar"提供了一套完整的入门教材,涵盖了从基础到进阶的关键知识点。 首先,我们从基础开始,讲解【HTML相关技术基础知识】。HTML...
JSP(JavaServer Pages)是Java的动态网页技术,将Java代码嵌入到HTML中,用于服务器端的编程。面试中可能涉及JSP指令、脚本元素、EL(表达式语言)和JSTL(JavaServer Pages Standard Tag Library)。 Hibernate是...
1. JSP(JavaServer Pages):JSP是一种动态网页技术,允许开发者在HTML页面中嵌入Java代码,从而实现服务器端的逻辑处理。在本论文中,JSP用于展示用户界面,负责接收用户的请求并呈现响应结果。 2. Struts:...
首先,JSP(JavaServer Pages)是Java Servlet的一种扩展,允许开发者在HTML页面中嵌入Java代码,从而实现动态网页的创建。在物流配货网中,JSP主要负责生成和展示用户界面,处理用户的输入请求,并将数据传递给后台...
Spring、Struts和Hibernate是Java开发中非常经典的三大框架,它们各自负责应用程序的不同层面:Spring作为全面的容器和依赖注入框架,负责管理对象和提供事务处理;Struts则是一个MVC(模型-视图-控制器)框架,主要...
本项目"JAVA spring+struts+hibernate开发的留言板"便是这种经典组合的应用实例。 Spring框架是Java EE应用程序的核心组件,它提供了全面的依赖注入(DI)和面向切面编程(AOP)功能,简化了开发过程。Spring还包含...
Spring、Struts和Hibernate是Java开发中的三大框架,它们各自负责不同的职责,组合起来可以构建出功能强大且架构清晰的企业级应用。在这个“Spring+Struts+Hibernate经典注册”项目中,我们将深入探讨这三个框架如何...
【标题】:Ibatis+Spring+Struts1框架搭建 在Web开发中,Ibatis、Spring和Struts1是三个非常重要的组件,它们分别负责不同的职责。Ibatis是一个优秀的持久层框架,Spring是一个全面的后端应用框架,而Struts1则是一...
根据提供的标题、描述、标签及部分内容,我们可以总结出以下与Java、Java EE、Struts2、Spring、Hibernate相关的学习知识点: ### Java基础 - **Java语言特性**:介绍Java的基本语法,包括变量、数据类型、流程...
SSH框架,全称为Struts+Spring+Hibernate,是Java Web开发中广泛应用的开源框架组合。这一框架集成了解决Web层、业务层和持久层问题的三个核心组件。 首先,Struts是一个基于Servlet和JSP技术的MVC(Model-View-...
"Java相关课程系列笔记之十JSP学习笔记"是关于JavaServer Pages(JSP)的,JSP是Java Web开发中的视图层技术,允许在HTML中嵌入Java代码,实现动态网页的生成。学习JSP,需要理解EL表达式、脚本元素、指令标签和...
架构技术: struts2+spring3+hibernate4 + UI 组件(easyui)+Spring_security权限 配置思想: Convention 零配置(不需要任何配置文件) 优点; [1].代码生成器(单表的增删改查完美生成) 注意:包括JSP页面的生成...
JSP是Java平台上的动态网页技术,它允许开发者在HTML页面中嵌入Java代码,实现了视图和逻辑的分离。在公告管理系统中,JSP主要负责展示用户界面,通过EL(Expression Language)和JSTL(JavaServer Pages Standard ...
在Spring+Struts2整合中,Spring可以作为Action的依赖注入容器,为Struts2的Action类注入所需的依赖。 **iBatis 框架** iBatis 是一种持久层框架,它将SQL与Java代码分离,避免了传统的DAO(Data Access Object)...
MyBatis通过XML或注解方式定义SQL语句,将SQL与Java代码分离,提供了更灵活的数据库访问。它支持预编译参数和动态SQL,可以处理复杂的查询需求。同时,MyBatis与Spring的集成使得事务管理变得更加容易。 在这个项目...
JSP结合了HTML和Java代码,允许开发者在页面上嵌入Java表达式和脚本片段。 3. **JavaBean**:JavaBean是一种符合特定规范的Java类,通常用来封装业务逻辑或数据。在Struts1.2中,JavaBean常作为模型层的实体类,...
在这个"Spring+struts1+ibatis案例"中,我们将深入探讨这三个框架如何相互配合,以及它们各自的核心功能。 首先,Spring框架是Java企业级应用的核心组件,它提供了依赖注入(Dependency Injection, DI)和面向切面...
在IT行业中,集成Spring、Struts2和Hibernate这三大框架是构建企业级Java Web应用程序的常见方式。这个项目源码提供了这样一个集成实例,名为"整合spring4+struts2+hibernate4项目源码",它展示了如何将这三个框架...
在这个小例子中,Struts可能负责处理用户的图书查询、添加、删除和修改等操作,通过ActionForm或Struts2的Action类来封装请求数据。 Spring框架则是Java企业级应用的核心,它提供了依赖注入(DI)和面向切面编程...
总结来说,"Spring+Hibernate+Struts+XFire的WebService实例"提供了一个完整的Java Web服务解决方案,涵盖了从数据持久化到用户界面,再到Web服务的整个开发流程。这个实例对于学习和理解企业级Java应用的开发具有很...