Struts2+Spring+Hibernate分页查询

本文详细介绍了如何实现新闻的分页查询功能,并通过页面导航实现数据的前后翻页,包括分页信息的显示与跳转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[img]http://dl.iteye.com/upload/picture/pic/109909/9ffe3ea6-dd6f-381d-8363-63145226d3e6.jpg[/img]
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>百通网后台</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

<script type="text/javascript">
function skip(){
var currentPage=document.getElementById('textfield').value;
document.location="admin/scanNews.action?currentPage="+currentPage;
}
function nextPage(){
document.location="admin/scanNews.action?currentPage=<s:property value="%{pageBean.currentPage+1}"/>";
}
function prePage(){
document.location="admin/scanNews.action?currentPage=<s:property value="%{pageBean.currentPage-1}"/>";
}
</script>
<link href="http://192.168.26.195:8080/btw/css/body.css" rel="stylesheet" type="text/css">
<link href="http://192.168.26.195:8080/btw/css/mTable.css" rel="stylesheet" type="text/css" />
</head>

<body>
<center>
<table border="0" cellspacing="0" class="tables">
<tr>
<td align="center" class="t_mediumText">新闻ID</td>
<td align="center" class="t_mediumText">添加时间</td>
<td align="center" class="t_xlargeText">新闻标题</td>
<td align="center" class="t_mediumText">添加人</td>
<td align="center" class="t_mediumText">新闻类型</td>
<td align="center" class="t_smallText">编辑</td>
<td align="center" class="t_smallText">删除</td>
</tr>
<s:iterator value="resultList" id="news">
<tr style="background-color:#FFFFFF">
<td align="center" class="mediumText" style="color:green"><s:property value="#news.id"/></td>
<td align="center" class="mediumText" style="color:green"><s:property value="#news.createdate"/></td>
<td align="center" class="xlargeText"><a href="admin/scanDetail!ForNews.action?id=${news.id}" class="tableChars"><s:property value="#news.title"/></a></td>
<td align="center" class="mediumText"><s:property value="#news.author"/></td>
<td align="center" class="mediumText" style="color:green"><s:property value="#news.type"/></td>
<td align="center" class="smallText">
<a href="admin/editNews!getNewsDetail.action?id=${news.id}"><span class="tableChars">编辑</span></a>
</td>
<td align="center" class="smallText">
<a onclick="{if(confirm('删除后不可恢复,确实要删除该信息?')){return true;}return false;}"
href="admin/deleteNewsById.action?&id=${news.id}"><span class="tableChars">删除</span></a>
</td>
</tr>
</s:iterator>
</table><br>
<span class="pageInfoChars">
共<span style="color:red"> ${recordSum} </span>条记录 <span style="color:red"> ${PageSum} </span>页
当前位于第<span style="color:red"> ${currentPage} </span>页
<a href="admin/scanNews.action?currentPage=1" class="pageInfoChars">首页</a>
<input type="image" src="images/prePage.gif" onclick="prePage()"/>
<input type="image" src="images/nextPage.gif" onclick="nextPage()"/>
<a href="admin/scanNews.action?currentPage=<s:property value="PageSum"/>" class="pageInfoChars">尾页</a>
<input name="currentPage" type="text" style="width: 25px;height: 20px;" id="textfield" />
<a href="javascript:skip()" class="pageInfoChars">GO</a>
</span>
</center>
</body>
</html>

package com.baitw.utils.entity;

import java.util.List;

/**
*
* 分页查询实体
*
* */

public class PageBean {

/*==============================================================*/
private List resultList;//结果集
private int recordSUM;//总记录数
private int pageSUM;//总页数
private int currentPage;//当前页
private int pageSize;//页记录数
private boolean isFirstPage;//是否是第一页
private boolean isLastPage;//是否是最后一页
private boolean hasPreviousPage;//是否有上一页
private boolean hasNextPage;//是否有下一页
/*===========================初始化===================================*/
public void init(){
this.isFirstPage = isFirstPage();
this.isLastPage = isLastPage();
this.hasPreviousPage = isHasPreviousPage();
this.hasNextPage = isHasNextPage();
}
/*=============================总页数=================================*/
public static int countTotalPage(int pageSize,int recordSUM){

int totalPage = recordSUM % pageSize == 0 ? recordSUM/pageSize : recordSUM/pageSize+1;

return totalPage;
}
/*============================当前页开始记录号 ==================================*/
public static int countOffset(final int pageSize,final int currentPage){

final int offset = pageSize*(currentPage-1);

return offset;
}
/*=============================当期页=================================*/
public static int countCurrentPage(int page){

final int curPage = (page==0?1:page);

return curPage;
}
/*============================判断当前页的状态==================================*/
public boolean isFirstPage() {
return currentPage == 1;
}
public boolean isLastPage() {
return currentPage == pageSUM;
}
public boolean isHasPreviousPage() {
return currentPage != 1;
}
public boolean isHasNextPage() {
return currentPage != pageSUM;
}
/*===========================Get/Set方法===================================*/
public List getResultList() {
return resultList;
}
public void setResultList(List resultList) {
this.resultList = resultList;
}
public int getRecordSUM() {
return recordSUM;
}
public void setRecordSUM(int recordSUM) {
this.recordSUM = recordSUM;
}
public int getPageSUM() {
return pageSUM;
}
public void setPageSUM(int pageSUM) {
this.pageSUM = pageSUM;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
/*==============================================================*/

}

package com.baitw.service.impl;

import java.util.List;

import com.baitw.dao.PageDao;
import com.baitw.service.PageService;
import com.baitw.utils.entity.PageBean;

/**
*
* 分页查询Service
*
* */

public class PageServiceImpl implements PageService {

public PageBean TabbedBrowsing(PageDao pageDao, int pageSize, int currentPage,
String sql) {
// TODO Auto-generated method stub
int recordSum = pageDao.getAllRowCount(sql);//总记录数
int pageSum = PageBean.countTotalPage(pageSize, recordSum);//总页数
final int currentRecordIndex = PageBean.countOffset(pageSize, currentPage);//当前页开始记录
final int resultMaxSize = pageSize;//每页记录数
final int page = PageBean.countCurrentPage(currentPage);//当前页
List list = pageDao.QueryForPage(sql, currentRecordIndex, resultMaxSize);//"一页"的记录

//把分页信息保存到Bean中
PageBean pageBean = new PageBean();
pageBean.setPageSize(pageSize);
pageBean.setCurrentPage(page);
pageBean.setRecordSUM(recordSum);
pageBean.setPageSUM(pageSum);
pageBean.setResultList(list);
pageBean.init();
return pageBean;
}
}

//新闻分页查询
public List QueryForNews(String hql, int currentRecordIndex, int resultMaxSize) {
// TODO Auto-generated method stub
List list=new ArrayList();
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Session session=HibernateSessionFactory.getSession();
Query query=session.createQuery(hql);
query.setFirstResult(currentRecordIndex);
query.setMaxResults(resultMaxSize);
list=query.list();
List resultList=new ArrayList();
for(Iterator iter=list.iterator();iter.hasNext();){
TNews n=(TNews) iter.next();
MNews m=new MNews();
m.setId(n.getId()+"");
m.setAuthor(n.getTUser().getFullname());
m.setCreatedate(format.format(n.getCreatetime()));
m.setState(n.getState().toString());
m.setTitle(n.getTitle());
m.setType(getNewsType(n.getType()));
resultList.add(m);
}
session.close();
return resultList;
}

package com.baitw.struts.action;

import java.util.ArrayList;
import java.util.List;

import test.com.baitw.hibernate.CreateActivityForDB;
import test.com.baitw.hibernate.CreateNewsForDB;

import com.baitw.dao.PageDao;
import com.baitw.service.PageService;
import com.baitw.utils.entity.PageBean;
import com.opensymphony.xwork2.ActionSupport;

/**
*
* 新闻分页查询
*
* */

public class ScanNews extends ActionSupport {

//通过applicationContext.xml配置文件注入UserService的值

private PageService pageService;//PAGE服务类
private int currentPage; //当第几页
private PageBean pageBean;//包含分布信息的bean
private PageDao pageDao;//用户PageDao实现
private String hql;//查询SQL
private int pageSize;//每页记录数
private List pageNumber;//分页页码
private int recordSum;//总记录数
private int PageSum;//总页数
List resultList=new ArrayList();//查询结果

public int getRecordSum() {
return recordSum;
}

public void setRecordSum(int recordSum) {
this.recordSum = recordSum;
}

public int getPageSum() {
return PageSum;
}

public void setPageSum(int pageSum) {
PageSum = pageSum;
}

public int getPageSize() {
return pageSize;
}

public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}

public List getResultList() {
return resultList;
}

public void setResultList(List resultList) {
this.resultList = resultList;
}

public PageService getPageService() {
return pageService;
}

public void setPageService(PageService pageService) {
this.pageService = pageService;
}

public int getCurrentPage() {
return currentPage;
}

public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}

public PageBean getPageBean() {
return pageBean;
}

public void setPageBean(PageBean pageBean) {
this.pageBean = pageBean;
}

public PageDao getPageDao() {
return pageDao;
}

public void setPageDao(PageDao pageDao) {
this.pageDao = pageDao;
}

public String getHql() {
return hql;
}

public void setHql(String hql) {
this.hql = hql;
}

public List getPageNumber() {
return pageNumber;
}

public void setPageNumber(List pageNumber) {
this.pageNumber = pageNumber;
}

@Override
public String execute() throws Exception {
// TODO Auto-generated method stub

pageBean = pageService.TabbedBrowsing(pageDao, pageSize, currentPage, hql);

resultList=pageDao.QueryForNews(hql, getFirstNum()-1, pageSize);

pageNumber=pageDao.getPageNumber(hql, pageSize);

recordSum=pageDao.getAllRowCount(hql);

PageSum=pageNumber.size();

return "news_List";

}

private int getFirstNum(){
if(currentPage==1){
return 1;
}else{
return (currentPage-1)*pageSize+1;
}
}
}

<!-- 新闻分页查询 -->
<!-- =================================================== -->
<bean id="scanNews" class="com.baitw.struts.action.ScanNews">
<property name="pageService" ref="pageService"/>
<property name="pageBean" ref="pageBean"/>
<property name="pageDao" ref="pageDao"/>
<property name="currentPage" value="1"/>
<property name="pageSize" value="16"/>
<property name="hql" value="from TNews t where t.state=1 order by t.id desc"/>
</bean>
<!-- =================================================== -->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值