输入框实现新闻列表分页显示(一)

今天学了新闻发布系统中的使用分页技术实现页面的分页显示,感觉开始很难做,渐渐的需要动手,慢慢透析。
分页显示的步骤
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>

 

转载于:https://www.cnblogs.com/wlx520/p/4506871.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值