新闻发布系统<分页>
分页实现:
实现数据的分页显示,需要以下几个关键步骤:
①确定每页显示的总页数
②计算显示的总页数
③编写SQL语句
实现效果如图所示:


当点击下一页时,地址栏地址为?pageIndex=2
1、创建util包,Page类,定义相关属性并进行封装:
package cn.news.util;
import java.util.List;
import cn.news.entity.NewsDetail;
public class Page {
//当前页
private int pageIndex;
//页面记录数
private int pageSize;
//本业显示真实数据
private List<NewsDetail> list;
//总页数
private int totalPages;
//总记录数
private int totalRecords;
public int getPageIndex() {
return pageIndex;
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public List<NewsDetail> getList() {
return list;
}
public void setList(List<NewsDetail> list) {
this.list = list;
}
public int getTotalPages() {
return totalPages;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
}
2、在Dao实现类NewsDetailDaoImpl定义获取新闻当前页的数据的方法getonePage,并植入两个参数pageIndex, pageSize
@Override
public List<NewsDetail> getonePage(int pageIndex, int pageSize)
throws Exception {
List<NewsDetail> list=new ArrayList<NewsDetail>();
String sql="select top "+pageSize+" * from newsDetails where newsId not in(select top "+(pageIndex-1)*pageSize+" newsId from newsDetails)";
ResultSet rs=executeQuery(sql); if(rs!=null)
{
while(rs.next())
{
NewsDetail news=new NewsDetail(); news.setNewsId(rs.getInt("newsId"));
news.setNewsTitle(rs.getString("newsTitle"));
news.setNewsContent(rs.getString("newsContent"));
news.setNewsCreateDate(rs.getDate("newsCreateDate"));
news.setNewsAuthor(rs.getString("newsAuthor"));
news.setNewsCategoryId(rs.getInt("newsCategoryId")); list.add(news);
}
}
return list; }
3、在NewsServlet类中把数据传递给Jsp页面
package cn.news.servlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import cn.news.entity.NewsDetail;
import cn.news.impl.NewsDetailDaoImpl;
import cn.news.util.Page; public class NewsServlet extends HttpServlet { /** */
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request,response); } /** */
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { //实例化dao
NewsDetailDaoImpl dao=new NewsDetailDaoImpl(); try {
Page page=new Page();
//默认3条数据
int pageSize=3;
page.setPageSize(pageSize);
//当前页
int myindex=1;
String pageIndex=request.getParameter("pageIndex");
if(pageIndex!=null&&(!pageIndex.equals("")))
{
myindex=Integer.parseInt(pageIndex);
}else {
myindex=1;
}
//当前页赋值
page.setPageIndex(myindex); int mytotalPages=0;
int totalPages=dao.getAllCount();
if(totalPages%pageSize==0)
{
mytotalPages=totalPages/pageSize;
}
else
{
mytotalPages=totalPages/pageSize+1;
}
page.setTotalPages(mytotalPages); //泛型数据
List<NewsDetail> list= dao.getonePage(page.getPageIndex(), pageSize);
page.setList(list); request.setAttribute("list", page);
request.getRequestDispatcher("/index.jsp").forward(request, response); //List<NewsDetail> list=dao.getAllNews(); } catch (Exception e) {
e.printStackTrace();
} } }
4、在index.jsp页面得到泛型集合,并获取当前页数和下一页
<%
Page page2=(Page)request.getAttribute("list");
for(NewsDetail item:page2.getList())
{ %>
<li><a href='newspages/news_read.jsp'><%=item.getNewsTitle() %></a><span><%=item.getNewsCreateDate() %></span></li> <%
} %> <p align="right"> 当前页数:[<%=page2.getPageIndex() %>/<%=page2.getTotalPages() %>] <a href="<%=path %>/servlet/NewsServlet?pageIndex=<%=page2.getPageIndex()+1%>">下一页</a> <a href="#">末页</a> </p>
</ul>
新闻发布系统<分页>的更多相关文章
- News新闻发布系统
News新闻发布系统分页的实现 1.首先我们要在NewsDAO中创建一个方法,返回List<NewsEntity>集合,其中pageIndex表示当前页,pageSize表 ...
- 【NodeJS 学习笔记04】新闻发布系统
前言 昨天,我们跟着这位大哥的博客(https://github.com/nswbmw/N-blog/wiki/_pages)进行了nodeJS初步的学习,最后也能将数据插入数据库了 但是一味的跟着别 ...
- 2016.6.23 PHP实现新闻发布系统主体部分
1.新闻发布系统的列表: <html><meta http-equiv="Content-Type" content="text/html; chars ...
- DRP PK 牛腩新闻发布系统
一.JSP与ASP (1)Web服务器的支持:大多数通用的Web服务器如:Apache.Netscape和Microsoft IIS都支持JSP页面,只有微软本身的Microsoft IIS和Pers ...
- 安卓项目-利用Sqlite数据库,开发新闻发布系统
本教程致力于程序员可以快速的学习安卓移动端手机开发. 适合于已经习得一种编程语言的同仁. 更多志同道合,想要学习更多编程技术的大神们. 小弟不才,麻烦关注一下我的今日头条号-做全栈攻城狮. 本文章是基 ...
- 牛腩新闻发布系统--学习Web的小技巧汇总
2014年11月10日,是个难忘的日子,这一天,小编的BS学习开始了,BS的开头,从牛腩新闻发布系统开始,之前学习的内容都是CS方面的知识,软考过后,开始学习BS,接触BS有几天的时间了,跟着牛腩老师 ...
- 基于JSP+SERVLET的新闻发布系统(一)
本系统使用的是基于JSP+SERVLET+TOMCAT6 数据库使用的是MYSQL IDE是MYECLIPSE8.5,页面编辑使用的是百度的ueditor,比较适合咱国人 采用MVC模式,使用的关键技 ...
- JSP新闻发布系统
1.主页面 1.1登录 1.2 分页 2.注销 3.代码如下 package cn.news.dao.impl; import java.sql.SQLException; import org ...
- 牛腩新闻发布系统(五):VS网站发布及常见问题
导读:在千万个回眸中,终于看见了牛腩的归途.好吧,牛腩该整合的都整合完毕了,到了发布的时候了.这时候,不得不再次感慨那句不知道感慨了多少次的感慨:为什么,我要遭遇这么多的坎坷?下面,结合自己的情况,说 ...
随机推荐
- [deviceone开发]-QQ分享、微信分享和新浪微博分享
一.简介 该demo主要实现QQ分享.微信分享和新浪微博分享.(调试包请到论坛扫描对应二维码下载) 二.效果图 三.相关讨论 http://bbs.deviceone.net/forum.php?mo ...
- JS中取整以及随机颜色问题
前言:感觉自己已经好久好久没有写博客了,最近都是在写在线笔记比较多.现在来到新公司了,昨天刚刚完成一个项目所以今天有空研究研究一下前端方面的技术.下午在看一个游戏代码的时候,发现了几个别人留下的不错的 ...
- 为Autodesk Viewer添加自定义工具条的更好方法
上一篇文章中我介绍了使用Autodesk Viewer的UI API来给viewer添加自定义工具条的方法,看起来很简单是吧.不过有个问题,就是关于自定义工具条的信息(包括按钮的文本.图标.样式.ca ...
- html前端总结
1.设置图片的最大宽高的css<style> .img-max { max-height:50px; width:expression(document.body.clientHeight ...
- RxJava 和 RxAndroid 三(生命周期控制和内存优化)
rxjava rxandroid 赵彦军 前言:对Rxjava.Rxandroid不了解的同学可以先看看 RxJava 和 RxAndroid RxJava 和 RxAndroid 二(操作符的使用) ...
- Android 中的Json解析工具fastjson 、序列化、反序列化
Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备 ...
- Swfit 字符与字符串
Swfit 字符与字符串 OC 定义字符 char charValue = 'a'; Swift 定义字符 var charValue:Character = "a" Unicod ...
- Spark:一个高效的分布式计算系统
概述 什么是Spark ◆ Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥 ...
- 【转】JavaScript 异步进化史
前言 JS 中最基础的异步调用方式是 callback,它将回调函数 callback 传给异步 API,由浏览器或 Node 在异步完成后,通知 JS 引擎调用 callback.对于简单的异步操作 ...
- 后台管理UI皮肤的选择
后台管理UI的选择 目录 一.EasyUI 二.DWZ JUI 三.HUI 四.BUI 五.Ace Admin 六.Metronic 七.H+ UI 八.Admin LTE 九.INSPINIA 十. ...