新闻发布系统<分页>

分页实现:

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

①确定每页显示的总页数

②计算显示的总页数

③编写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() %>]&nbsp; <a href="<%=path %>/servlet/NewsServlet?pageIndex=<%=page2.getPageIndex()+1%>">下一页</a> <a href="#">末页</a> </p>
      </ul>
时间: 2024-10-12 12:12:21

新闻发布系统<分页>的相关文章

新闻发布系统,添加新闻+++文件上传

1.新闻发布系统 2.文件上传+++ ①首先在index.jsp的界面上初始化一个表单. <body> <form enctype="multipart/form-data" action="<%=path%>/1.jsp" method="post"> 姓名:<input type="text" name="username"/> 选择文件:<inpu

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

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

牛腩新闻发布系统---外键约束下如何删除记录

一.为什么使用外键? 查了些资料,八个字"保持完整性.一致性",结合我之前做的重构机房收费系统,我的理解是"防止相关表中数据没有关联而变得孤立,最终导致数据冗余",得出这个结论是上次让贾丽敏帮忙点系统时候我最深刻的感受,因为我的数据库关系图中辣么多张表却没有丝毫关系-- 既然官方解释是"完整性和一致性",就先来说明一下: 对于完整性和一致性,不少人都混为一谈了. 完整性(integrity)更多是针对实际业务来说的,比如说一个职员ID,不能在一个

牛腩新闻发布系统概要

开始了B/S项目学习,第一个学习内容就是开发新闻发布系统,跟着牛腩老师的视频学习有几天了,在这个过程 中也积累了点知识,在这里把新闻发布系统的一个轮廓叙述一下了. 系统说明 1.系统的整体功能 就是能够实现后台人员添加新闻,在前台可以浏览新闻并发表评论 2.功能图 3.数据库设计图 4.建表 --建立数据库 create database newssystem --建立类别表 create table category ( id int identity(1,1) primary key, [n

牛腩新闻发布系统笔记——怎么写CSS

根据这牛腩学习敲新闻发布系统已经有一段时间了,挺佩服牛腩的,讲那么多东西,我听着也不觉得枯燥,反而有种,一不留神就会错过很多东西的感觉,所以有些地方也是重复又重复的在看. 这篇博客就总结总结小编在学习牛腩新闻发布系统的时候一些笔记.可能知识还比较原生态,but who cares.现在先提炼出来,以后慢慢的体会和升华吧. 牛腩一部分可以说是和机房相似,也是让我从.net到c#的一个过渡.中间一部分就是讲div +css了.里面的知识说多也不多的,根据不同的需求,它又有各种变形和组合,这加起来就有

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

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

新闻发布系统后台

作为第一个进行的Web系统,新闻发布系统的后台代码和之前编写的机房没有太大的区别,下面主要通过SQLHelper()方法的创建和重构总结下新闻系统的后台. 首先是画用例图.类图.进行数据库的设计!这里不做详细说明每个系统开始的工作.然后编写D层代码SQLHelper(),以ExecuteNonQuery()方法来简单描述SQLHelper()的几次重构 1.主要结构 原来是针对单个的一个功能写一个方法,这里将方法的主要结构拿出,通过传入sql语句来执行类似的操作. public int Exec

浅谈牛腩新闻发布系统

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

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

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

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

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