News新闻发布系统分页的实现

1.首先我们要在NewsDAO中创建一个方法,返回List<NewsEntity>集合,其中pageIndex表示当前页,pageSize表示新闻数量

public List<NewsEntity> GetSelect(int pageIndex,int pageSize);

2.NewsDAOImpl类实现了NewsDAO,所以自然继承了GetSelect()方法

public List<NewsEntity> GetSelect(int pageIndex,int pageSize)
{
List<NewsEntity> list=new ArrayList<NewsEntity>();
String sql="select top "+pageSize+" * from newsDetial where newsId not in(select top "+(pageIndex-1)*pageSize+" newsId from newsDetial)";
ResultSet rs=executeQuery(sql);
if(rs!=null)
{
    while(rs.next())
   {
    NewsEntity entity=new NewsEntity();
    entity.setNewsId(rs.getInt("newsId"));    entity.setNewsTitle(rs.getString("newsTitle"));                        entity.setNewsContent(rs.getString("newsContent"));        entity.setNewsCreateDate(rs.getDate("newsCreateDate"));                entity.setNewsAuthor(rs.getString("newsAuthor"));              entity.setNewsCateforyId(rs.getInt("newsCategoryId"));    list.add(entity);
   }
}
    return list;
}    

3.然后我们新建一个Util包,包中有page方法,来存储向用户展示的数据

public class page
{
    //当前页
    private int pageIndex;
    //页面记录数
    private int pageSize;
    //本页显示真实数据
    private List<NewsEntity> list;
    //总页数
    private int totalPages;
    //总记录数
    private int totalRecords;

}

4.在NewsServlet类中,实现其功能(当给总页数赋值时,需要在NewsDAO中新建一个getAllCount方法,在NewsDaoImpl中实现其方法)

public int getAllCount() throws Exception {
            int result=0;
            String sql="select count(1) as num from newsDetails";
            ResultSet rs=executeQuery(sql);
            if(rs!=null)
            {
                if(rs.next())
                {
                    result=rs.getInt("num");
                }
                closeAll();
            }
            return result;
        }
public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            NewsDAOImpl news=new NewsDAOImpl();
            try {
                page pages=new page();
                //默认显示三条数据
                int pageSize=3;
                pages.setPageSize(pageSize);
                //当前页
                int myIndex;
                String pageIndex=request.getParameter("pageIndex");
                if(pageIndex!=null)
                {
                    myIndex=Integer.parseInt(pageIndex);
                }
                else
                {
                    myIndex=1;
                }
                //给当前页赋值
                pages.setPageIndex(myIndex);
                //总页数
                int mytotalPage=0;
                int totalPage=news.getAllCount();
                if(totalPage%pageSize==0)
                {
                    mytotalPage=totalPage/pageSize;
                }
                else
                {
                    mytotalPage=totalPage/pageSize+1;
                }
                pages.setTotalPages(mytotalPage);
                //查询所有
                //List<NewsEntity> list=news.Select();
                //request.setAttribute("list", list);
                //泛型数据
                List<NewsEntity> list=news.getSelect(pages.getPageIndex(), pageSize);
                pages.setList(list);
                request.setAttribute("list", pages);
                //登录
                String name=request.getParameter("uname");
                String pwd=request.getParameter("upwd");
                boolean flag= news.Login(name, pwd);
                if(flag)
                {

                    response.sendRedirect("newspages/admin.jsp");
                }
                else
                {
                    request.getRequestDispatcher("/index.jsp").forward(request, response);
                }
                request.getRequestDispatcher("/index.jsp").forward(request, response);
                } catch (Exception e) {

                e.printStackTrace();
                }
    }
<ul class="classlist">
        <%
            //从作用域中取出一个泛型
              page page2=  (page)request.getAttribute("list");
            for(NewsEntity item :page2.getList()){
            //一个item就是一个新闻对象

        %>
            <li><a href='<%=path %>/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>

其中,page2.getPageIndex()代表当前页码,page2.getTotalPages()代表了总页码,当点击下一页的时候page2.getPageIndex()要加1

News新闻发布系统的更多相关文章

  1. 【NodeJS 学习笔记04】新闻发布系统

    前言 昨天,我们跟着这位大哥的博客(https://github.com/nswbmw/N-blog/wiki/_pages)进行了nodeJS初步的学习,最后也能将数据插入数据库了 但是一味的跟着别 ...

  2. 2016.6.23 PHP实现新闻发布系统主体部分

    1.新闻发布系统的列表: <html><meta http-equiv="Content-Type" content="text/html; chars ...

  3. DRP PK 牛腩新闻发布系统

    一.JSP与ASP (1)Web服务器的支持:大多数通用的Web服务器如:Apache.Netscape和Microsoft IIS都支持JSP页面,只有微软本身的Microsoft IIS和Pers ...

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

    本教程致力于程序员可以快速的学习安卓移动端手机开发. 适合于已经习得一种编程语言的同仁. 更多志同道合,想要学习更多编程技术的大神们. 小弟不才,麻烦关注一下我的今日头条号-做全栈攻城狮. 本文章是基 ...

  5. 牛腩新闻发布系统--学习Web的小技巧汇总

    2014年11月10日,是个难忘的日子,这一天,小编的BS学习开始了,BS的开头,从牛腩新闻发布系统开始,之前学习的内容都是CS方面的知识,软考过后,开始学习BS,接触BS有几天的时间了,跟着牛腩老师 ...

  6. 牛腩新闻发布系统(五):VS网站发布及常见问题

    导读:在千万个回眸中,终于看见了牛腩的归途.好吧,牛腩该整合的都整合完毕了,到了发布的时候了.这时候,不得不再次感慨那句不知道感慨了多少次的感慨:为什么,我要遭遇这么多的坎坷?下面,结合自己的情况,说 ...

  7. 第一章使用JSP/Server技术开发新闻发布系统第一章动态网页开发基础

      一:为什么需要动态网页    由于静态网页的内容是固定的,不能提供个性化和定制化得服务,使用动态网页可真正地与用户实现互动. 二:什么是动态网页  ①:动态网页是指在服务器端运行的,使用程序语言设 ...

  8. 新闻发布系统<分页>

    分页实现: 实现数据的分页显示,需要以下几个关键步骤: ①确定每页显示的总页数 ②计算显示的总页数 ③编写SQL语句 实现效果如图所示: 当点击下一页时,地址栏地址为?pageIndex=2 1.创建 ...

  9. 基于JSP+SERVLET的新闻发布系统(三)

    拖了这么久..今天把栏目管理还有新闻管理模块的也挂出来.. 栏目管理跟用户管理一样. 这里重点讲解新闻管理. 效果图如上: 1,可选择栏目类别,且栏目类别是动态生成的. 默认生成的文章是未审核状态的. ...

随机推荐

  1. CRM 2013 中业务流程的

    在CRM 2013 中有一个新功能就业务流程,它可以引导用户在既定好的业务规则下操作表单,实现业务之前的衔接.并且让衔接可以视化,能清楚定位到当前的流程在那个节点.我们在配置视图的时候可以将流程阶段放 ...

  2. JS魔法堂:jsDeferred源码剖析

    一.前言 最近在研究Promises/A+规范及实现,而Promise/A+规范的制定则很大程度地参考了由日本geek cho45发起的jsDeferred项目(<JavaScript框架设计& ...

  3. 对称密码-DES和3DES

    最近在看信息安全的知识,就总结了一下自己所学到知识. 先说一下什么是对称密码算法,什么是对称密码算法呢?对称密码算法是指有了加密密钥就可以推算出解密密钥,有了解密密钥就可以推算出加密密钥的的算法. 那 ...

  4. iis7.5安装配置php环境

    前言 iis7.5是安装在win7.win8里的web服务器,win2003.win2000的web服务器使用的是iis6.0,由于win7.win8系统相比win2003.win2000有了改新革面 ...

  5. Android Studio常用快捷键

    Ctrl+U :如果你的光标在重写父类的一个方法内(如:Activity#onCreate()),这个将会跳到父类的实现上. 如果你的光标在类名上,它将会跳到父类. Ctrl+Alt+Home:它可以 ...

  6. 实现微信浏览器内打开App Store链接(已被和谐,失效了)

    微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”http://itunes.apple.com/us/app/id399608199″& ...

  7. Android 手机卫士--弹出对话框

    在<Android 手机卫士--解析json与消息机制发送不同类型消息>一文中,消息机制发送不同类型的信息还没有完全实现,在出现异常的时候,应该弹出吐司提示异常,代码如下: private ...

  8. mvc上传到云虚拟机的问题解决

    我用vs2015写了个小网站,.Net Framework4.5. mvc 5,发布到本机iis上正常,在美橙申请了一个云虚拟机,发布过程中遇到的一些问题记录如下: 1.服务器支持的版本比较低 上传后 ...

  9. 有效解决 iOS The document “(null)” requires Xcode 8.0 or later.

    下载了一个 xocde8beta版本   运行之后   结果 在xcode7.3上再运行 就报这句错误   以下链接 是非常有效的解决办法 不信你试试 [链接]Thisversiondoesnotsu ...

  10. OC中面向对象2

    一. 定义OC的类和创建OC的对象 接下来就在OC中模拟现实生活中的情况,创建一辆车出来.首先要有一个车子类,然后再利用车子类创建车子对象 要描述OC中的类稍微麻烦一点,分2大步骤:类的声明.类的实现 ...