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

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

 

分页实现:

 

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

 

①确定每页显示的总页数

 

②计算显示的总页数

 

③编写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>
复制代码

 

转载于:https://www.cnblogs.com/hq-123/p/5647332.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
新闻发布系统是一种用来发布新闻和信息的在线平台。实现这样一个系统需要考虑以下几个方面。 首先,需要创建一个用户注册和登录系统,以确保只有授权用户才能发布新闻。用户可以通过填写个人信息来注册账号,或者通过集成第三方登录服务来简化注册流程。 其次,需要一个新闻编辑页面,用于输入新闻的标题、内容和相关标签。编辑页面应该提供富文本编辑功能,让用户能够添加图片、链接和格式化文本。此外,还可以添加一些额外功能,比如自动保存和草稿箱等,以提高用户的编辑体验。 然后,需要一个新闻列表页面,用于展示已发布的新闻。列表应该按照最新发布的新闻排序,并提供分页功能,以便用户能够浏览和查看更多的新闻。每篇新闻应该显示标题、发布时间、作者和部分内容,用户点击标题后可以查看完整内容。 另外,还可以添加一些其他功能来增强新闻发布系统的实用性。比如,可以在新闻列表页面添加搜索功能,让用户能够根据关键词来查找感兴趣的新闻。还可以添加评论功能,让用户能够对新闻进行讨论和交流。 最后,还需要考虑系统的安全性和性能优化。对用户提交的新闻内容进行合法性检验,防止恶意篡改或发布不当信息。同时,对系统进行优化,确保用户在浏览新闻和发布新闻时的体验流畅而高效。 综上所述,实现一个新闻发布系统需要考虑用户注册和登录、新闻编辑和发布、新闻列表和浏览、搜索和评论功能,同时还需要保证系统的安全性和性能优化。这样的系统可以为用户提供一个方便、快捷的在线新闻发布和阅读平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值