zoukankan      html  css  js  c++  java
  • 输入框实现新闻列表分页显示(一)

    今天学了新闻发布系统中的使用分页技术实现页面的分页显示,感觉开始很难做,渐渐的需要动手,慢慢透析。
    分页显示的步骤
    1、确定每页显示的数据数量
    2、计算显示的页数
    3、编写SQL语句
     
    第一步:连接数据库
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    
    
    /**
     * 数据库连接帮助类
     * @author zql_pc
     * 单例设计模式
     */
    public class DbHelp {
    
        
        //数据库连接对象
        private Connection conn = null;
    
    
        //数据库连接帮助
        public Connection lianjie() {
            
            if(conn==null){
            
                //数据库配置
                String driver = "oracle.jdbc.driver.OracleDriver";//驱动
                String url = "jdbc:oracle:thin:@localhost:1521:NEWS";//url
                String username = "epet";//用户名
                String password = "123456";//密码
                
                //1.加载驱动类
                try {
                    Class.forName(driver);
                    //2.建立连接
                    conn = DriverManager.getConnection(url,username,password);
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                
            }
            
            return conn;
            
        }
        
        
    }

    第二步:编写新闻实体类,进行封装

    /**
     * 新闻实体类
     * @author zql_pc
     *
     */
    public class news {
    
        private int id;
        private int t_id;
        private String title;
        private String author;
        private String createdate;
        private String picpath;
        private String content;
        private String modifydate;
        private String summay;
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public int getT_id() {
            return t_id;
        }
        public void setT_id(int tId) {
            t_id = tId;
        }
        public String getTitle() {
            return title;
        }
        public void setTitle(String title) {
            this.title = title;
        }
        public String getAuthor() {
            return author;
        }
        public void setAuthor(String author) {
            this.author = author;
        }
        public String getCreatedate() {
            return createdate;
        }
        public void setCreatedate(String createdate) {
            this.createdate = createdate;
        }
        public String getPicpath() {
            return picpath;
        }
        public void setPicpath(String picpath) {
            this.picpath = picpath;
        }
        public String getContent() {
            return content;
        }
        public void setContent(String content) {
            this.content = content;
        }
        public String getModifydate() {
            return modifydate;
        }
        public void setModifydate(String modifydate) {
            this.modifydate = modifydate;
        }
        public String getSummay() {
            return summay;
        }
        public void setSummay(String summay) {
            this.summay = summay;
        }
    }

    第三步:查询新闻

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 查询新闻
     * @author zql_pc
     *
     */
    public class SelectNews {
        
        DbHelp help = new DbHelp();
        
        //查询新闻数目
        public int newsCount() throws SQLException{
            //查询新闻条目
            Connection con = help.lianjie();
            
            //创建数据库操作对象
            Statement st = con.createStatement();
            
            String sql = "select count(*) from news";
            
            //获得结果集
            ResultSet rs = st.executeQuery(sql);
            
            //新闻数目
            int newsCount = 0;
            
            while(rs.next()){
                
                newsCount = rs.getInt(1);
                
            }
            
            return newsCount;
        }
        
        //计算分页
        public int getPages(int newsSize) throws SQLException{
            
            
            int newsCount = newsCount();
            
            int num = (newsCount%newsSize==0)?newsCount/newsSize:newsCount/newsSize+1;
            
            return num;
        }
        
        //根据要求查询新闻
        public List<news> getList(int pageIndex,int newsSize) throws SQLException{
            
            //计算上限和下限 
            //第1页  1 - 5
            //  2   6 - 10
            int up = newsSize * pageIndex;
            
            int down = newsSize * (pageIndex-1)+1;
            
            //获取数据库连接对象
            Connection con = help.lianjie();
            
            String sql = "select * from " +
                    "(select n.*,rownum r from " +
                    "(select * from news order by ncreatedate desc) n " +
                    "where rownum<=?) where r>=?";
            
            PreparedStatement pst = con.prepareStatement(sql);
            
            pst.setInt(1, up);
            pst.setInt(2, down);
            
            //获取结果集
            ResultSet rs =  pst.executeQuery();
            
            //创建集合装新闻对象
            List<news> list = new ArrayList<news>(); 
            
            while(rs.next()){
                
                //创建新闻对象
                news news = new news();
                
                news.setTitle(rs.getString("ntitle"));
                news.setCreatedate(rs.getString("ncreatedate"));
                
                list.add(news);
            }
            
            return list;
        }
    }


    第四步:在页面分页显示

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@page import="tools.SelectNews"%>
    <%@page import="tools.news"%>
    
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      </head>
      <body>
        <table align="center" border="0">
            
            
            
            <%
                //展示新闻条数
                int newsSize = 5;
            
                //实例化新闻帮助对象
                SelectNews sn = new SelectNews();
                
                //获取页面数量
                int pages = sn.getPages(newsSize);
                
                //当前页码
                int pageIndex = 1;
                
                //获取提交页码
                String Pagetemp = request.getParameter("pageIndex");
                
                //判断页面是否是当前页提交
                if(Pagetemp!=null){
                    
                    pageIndex = Integer.parseInt(Pagetemp);
                    
                }
                
                //=============查询新闻
                //获取装有新闻的集合
                List<news> NewsList = sn.getList(pageIndex,newsSize);
                
                //遍历打印
                for(news temp : NewsList){
                    
                    
                
            %>
                <tr>
                    <td><%=temp.getTitle() %></td>
                    <td><%=temp.getCreatedate() %></td>
                </tr>
            
            <%    } %>
            
            <tr>
                <td colspan="2">
                    <%if(!(pageIndex<=1)){ %>
                        <a href="index.jsp?pageIndex=<%=1 %>">首页</a>
                        <a href="index.jsp?pageIndex=<%=pageIndex-1 %>">上一页</a>
                    <%}
                    if(!(pageIndex>=pages)){
                    %>
                        <a href="index.jsp?pageIndex=<%=pageIndex+1 %>">下一页</a>
                        <a href="index.jsp?pageIndex=<%=pages %>">尾页</a>
                    <%} %>
                    
                    <form action="index.jsp" method="post">
                        <input type="text" name="pageIndex" value="<%=pageIndex %>"/>
                        <input type="submit" />
                    </form>
                     
                </td>
            </tr>
        </table>
        
        
        
      </body>
    </html>
  • 相关阅读:
    根据人脸关键点实现平面三角剖分和最近邻搜索 ( KNN, K=1 ), opencv3.4.2, C++
    KDTree  C++实现
    python 保留小数
    Clion提示:Single-argument constructors must be marked explicitly to avoid unintentional implicit conversions 解法办法
    二叉搜索树的C++ 实现
    排列组合之组合问题 网易深度学习工程师面试题 C++ 使用10方法
    OS X 安装命令行看图工具 chafa 以及其依赖libtool
    leetcode704 C++ 72ms 二分查找
    Deep Interest Network for Click-Through Rate Prediction
    归并排序
  • 原文地址:https://www.cnblogs.com/wlx520/p/4506871.html
Copyright © 2011-2022 走看看