新闻发布系统(分页显示)

根据上次的新闻发布展示页面效果,进行分页操作:

分页实现:

实现数据的分页显示,需要以下几个关键步骤:

①确定每页显示的总页数

②计算显示的总页数

③编写SQL语句

  一.页面效果图

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() %>]&nbsp; <a href="<%=path %>/servlet/NewsServlet?pageIndex=<%=page2.getPageIndex()+1%>">下一页</a> <a href="#">末页</a> </p>
      </ul>

时间: 2024-11-05 06:21:44

新闻发布系统(分页显示)的相关文章

新闻发布系统&lt;分页&gt;

分页实现: 实现数据的分页显示,需要以下几个关键步骤: ①确定每页显示的总页数 ②计算显示的总页数 ③编写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; //页面记录数

新闻发布系统 分页实现

实现效果图: 当点击下一页时地址变成?pageIndex =2: 因为是分页,所以可以根据分页的需求定制出页面类代码如图: package cn.news.util; import java.util.List; import cn.news.entity.NewsDetail; public class Page { //泛型 private List<NewsDetail> list; public List<NewsDetail> getList() { return lis

新闻发布系统,B/S模式下的三层应用

三层的学习已接触四五个月了,最早是在学习VB.NET视频中开始接触的,那时候跟着视频敲了两个例子.再后来,个人机房重构的时候,从三层进步到了七层,此后就觉得我们不能仅仅局限于三层之上. 不过,那些都是C/S模式之下的编程.到现在,接触了B/S模式也一个多月了,第一个牛腩新闻发布系统觉得很是有趣,还是从最基本的开始,下面就一起看看B/S模式下,三层是怎样应用的.这篇博客就以添加新闻的实例来总结. 对于三层的整个过程大家都是很熟悉的了,那么在这里就不再赘述了,直接一层一层来分析. 一.思路整理. U

牛腩新闻发布系统——真假分页

牛腩新闻发布系统已近尾声,牛老师重磅推出真假分页作为压轴,足以见得分页的重要性.我们就一起看一下真假分页的实现以及各自的特点. 一.分页简介 当我们显示足够大的数据量时,所有数据显示在一页上,会造成不必要的麻烦,本着为用户服务的态度,我们往往采用分页显示的处理办法.分页主要分为真分页与假分页. 假分页: 从数据库一次性取出所有数据绑定到控件上,再将所有数据根据每页显示记录条数进行分页.当数据量 比较大时,这种分页方法会造成查询速度, 使用户体验度降低,但是跳页速度较快. 真分页:在执行查询操作的

牛腩新闻发布系统总结——网站发布和分页制作

牛腩新闻发布系统的视频看了将近半个月的时间,今天成功地把它发布了,哈哈.第一次看教学视频看得这么专注,都不带走思的,很不错.给小牛老师赞一个,嘿嘿! 言归正传,每学完一个阶段,最重要的就是总结,所以就允许我以倒序的形式,颗粒归仓吧! 牛腩新闻发布系统的发布 参考博文: win7下IIS的安装和配置 http://www.jb51.net/article/29787.htm VS2010网站发布详解 http://wanghaitaoboke.blog.163.com/blog/static/17

牛腩新闻发布系统-真假分页

牛腩新闻发布系统在新闻管理页面出现这么一个问题,当新闻条数非常多的时候,表格会很长,如下图,圆角矩形就会出现一个缺口.在这里就引出了分页技术. 具体解决办法如下: 1.我们首先在Web窗体源中拉入一个GridView控件,然后在设计中设置其属性.AllowPaging:True,,PageSize:5(可根据自己意愿来). <span style="font-size:18px;"><asp:GridView ID="GridView1" runa

安卓项目-利用Sqlite数据库,开发新闻发布系统

本教程致力于程序员可以快速的学习安卓移动端手机开发. 适合于已经习得一种编程语言的同仁. 更多志同道合,想要学习更多编程技术的大神们. 小弟不才,麻烦关注一下我的今日头条号-做全栈攻城狮. 本文章是基于上篇文章基础之上进行深入学习的.程序员带你学习安卓开发-XML文档的创建与解析 Sqlite数据库: Sqlite数据库是在安卓中使用较广泛的数据库.其为简单.轻巧的Sql类文件型数据库.因以简单的文本形式保存,所以安全性不是很高.只要拿到sqlite数据库文件就可以得到数据.所以这就决定了sql

浅谈牛腩新闻发布系统

结束了漫长的C/S之旅,跨入B/S的学习,一切又是崭新的,充满希望. B/S的学习首先接触的便是牛腩老师的新闻发布系统,看了这么多年的网页终于要自己来编写一个网页了着实还是让我小小激动了一把.但是敲这个系统的时候总是有一种走迷宫,迷迷茫茫的感觉,什么跟什么啊... 于是,我机智的决定我要先把视频看一遍,至少要看一多半,至少得让我直到这个系统大概的框架吧.看了一半多终于形成了一个模糊的框架: 牛腩新闻发布系统分为前台和后台两部分,个人理解其实就像我们机房收费的UI层和B,D层的关系,前台负责显示给

牛腩新闻发布系统总结(四)--知识点滴

紧接上篇博客:牛腩新闻发布系统总结(三)----知识点滴,继续我们的总结: 第五,在回复评论后如何保持滚动条的位置不变: <%@ Page Title="新闻内容-牛腩新闻发布系统" Language="C#" MasterPageFile="~/common.Master" AutoEventWireup="true" CodeBehind="newsContent.aspx.cs" Inherit

【牛腩新闻发布系统】----你的验证码正确么

前言 这是一个神奇的网站--牛腩新闻发布系统,虽然做的不咋地,但毕竟是自己动手敲出来,还是有一点点的满足感.同时这也是小编的第一个雠小鸭,长相不算漂亮,发育还是挺健全的. 终有一天我的丑小鸭会变成白天鹅. 一步一步的进化,一步一步的蜕变-- 你的验证码正确么 哎呀--为什么我的牛腩新闻发布系统   请输入验证码的图片一直为这个样子呀--不显示,就是不显示图片,图片加载出错呀.想想估计是图片路径不正确. 尝试一:牛老师说的图片加载路径 <img src="handler/WaterMark.