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

摘要:
=空&&(!

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

分页实现:

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

①确定每页显示的总页数

②计算显示的总页数

③编写SQL语句

  一.页面效果图

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

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='http://t.zoukankan.com/newspages/news_read.jsp'><%=item.getNewsTitle() %></a><span><%=item.getNewsCreateDate() %></span></li>
      
      <%
      }
      
      %>
      
      
      
    <p align="right"> 当前页数:[<%=page2.getPageIndex() %>/<%=page2.getTotalPages() %>]&nbsp; <a href="http://t.zoukankan.com/<%=path %>/servlet/NewsServlet?pageIndex=<%=page2.getPageIndex()+1%>">下一页</a> <a href="http://www.youmatou.com/182862.html">末页</a> </p>
      </ul>
复制代码

免责声明:文章转载自《新闻发布系统(分页显示)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ubuntu 10.04的教育网源(亲自测试可用的,删除了不可用的源).NET作品集:linux下的博客程序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

02_编程规约——集合处理

1.【强制】关于hashCode和equals的处理,必须遵循如下规则 1.1 只要重写equals,就必须重写hashCode。 1.2 因为Set存储的是不重复对象,依据hashCode和equals进行判断,所以Set存储的对象必须重写这两个方法。 1.3 如果自定义对象为Map的键,那么必须重写hashCode和equals。 说明:String重...

daocke镜像批量导出脚本

脚本作用 1.批量导出Docker Images;2.部分导出,通过指定Docker Images ID 到脚本“LIST”变量;3.支持相同ID,不同REPOSITORY名称备份; 例如: docker images kry1702/coredns 1.3.1 eb516548c1...

Java List与树的互转

  平时工作中都会遇到包含层级关系的List数据转换成树形结构,或者数据已是树形结构了,需要我们处理成普通的单层list结构。以下代码均为本人实际开发所写代码,可能不是最优解、复杂度也比较高,在此和大家一起分享学习!   注:该工具类支持将list转换成树/森林。可自行测试,有疑问或更优方案,可私聊我。     TreeNode@Data @JsonInc...

ClosedXML导出Excel简单使用

c#经常会用到导出excel。 ClosedXML是一个.NET库,用于读取,操作和写入Excel 2007+(.xlsx,.xlsm)文件。它旨在提供一个直观且用户友好的interface来处理基础的OpenXML API。 ClosedXML许可证是MIT。 示例: using ClosedXML.Excel; using DoExcel.Models...

ViewPager+TabLayout+Fragment刷新Fragment中的数据

1.ViewPager与TabLayout的初始化: 1 private void initData() { 2 mTabFragmentAdapter = new TabFragmentFirstAdapter(getSupportFragmentManager(), mDeptType); 3 mVp.setAdapte...

SpringBoot + MyBatis(注解版),常用的SQL方法

一、新建项目及配置 1.1 新建一个SpringBoot项目,并在pom.xml下加入以下代码   <dependency>    <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starte...