找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 137|回复: 8

JSP分页简单例子

[复制链接]
发表于 2009-9-15 02:57:31 | 显示全部楼层 |阅读模式 IP:江苏扬州
复制代码 package servlet;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class Database {                 
     
    private static Statement stmt=null;
    private static ResultSet rs=null;
    private static Connection con;
    private static Connection con1;
    private static Database dbms;
    public Database(){
         String url = "jdbc:sqlserver://";
          String serverName= "127.0.0.1";
          String portNumber = "1433";
          String databaseName= "db_cd";
          String userName = "dragon";
          String password = "123";
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            con = DriverManager.getConnection(url+serverName+":"+portNumber+";"+"DatabaseName="+databaseName,userName,password);
            
        } catch(ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
     
    public static void init_dbms(){
        if(dbms==null){
            dbms=new Database();
        }
    }
    public static Connection getcon(){
        return con;         
    }
    public static ResultSet stmt_select(String sql){
        init_dbms();
        try {
            stmt=con.createStatement();
            rs=stmt.executeQuery(sql);
            
        } catch (SQLException e) {
            e.printStackTrace();
            
        }
        return rs;
    }
    public static boolean stmt_uporin(String sql){
        init_dbms();
        boolean f=false;
        try {
            stmt=con.createStatement();
            stmt.executeUpdate(sql);
            f=true;
        } catch (SQLException e) {
            e.printStackTrace();
            f=false;
        }
        return f;
    }
   public static Connection con()
   {
       String url = "jdbc:sqlserver://";
         String serverName= "127.0.0.1";
         String portNumber = "1433";
         String databaseName= "db_cd";
         String userName = "dragon";
         String password = "123";
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            con1 = DriverManager.getConnection(url+serverName+":"+portNumber+";"+"DatabaseName="+databaseName,userName,password);
            
        } catch(ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }   
    return con1;
      
   }
     
   
}



上面是一个数据库的单类
复制代码 <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
<!--
.STYLE1 {
    font-size: 18px;
    font-family: "新宋体";
}
.STYLE2 {font-family: "宋体"}
-->
</style>
</head>

<body>
<ul class="STYLE1">
<li><span class="STYLE2"><a href="CDtype?name=6">最新影音</a></span></li>
<li class="STYLE2" ><a href="CDtype?name=1">北美影音</a></li>
<li class="STYLE2"><a href="CDtype?name=2">大陆影音</a></li>
<li class="STYLE2"><a href="CDtype?name=3">日韩影音</a></li>
<li class="STYLE2"><a href="CDtype?name=4">港台影音</a></li>
<li><span class="STYLE2"><a href="CDtype?name=5">怀旧影音</a></span></li>
</ul>
</body>
</html>


上面这个是简单树导航的页面


复制代码 package bean;

public class CDtypebean {
     int page;

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

}
上面这个是JAVABEAN 文件,很简单不详细说了







复制代码 package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import bean.CDtypebean;

public class CDtype extends HttpServlet {

    /**
     * Constructor of the object.
     */
    public CDtype() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        if (request.getParameter("name") != null) {//接收left.jsp传递过来的请求参数
            int page = Integer.parseInt(request.getParameter("name"));//把值转化成INT型
            CDtypebean cdtypebean = new CDtypebean();//创建并初始化 JABABEAN对象
            cdtypebean.setPage(page);//把PAGE值存入到JAVABEAN里
            HttpSession session = request.getSession();//创建SESSION对象,并调用方法把
            session.setAttribute("name", cdtypebean);//把CDtypebean对象存到session里
            response.sendRedirect("FenPage.jsp");//跳转页面
        }

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");

    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException
     *             if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
    }

}
这个是SERVELET文件







复制代码 <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="bean.FenPage"%>
<%@ page import="bean.CDtypebean"%>
<%@ page import="java.sql.*"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <base href="<%=basePath%>">

        <title>My JSP 'FenPage.jsp' starting page</title>

        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

    </head>

    <body>
        <%
            int curpage = 1; //当前页
            int allpage = 0; //总页数
            int allrecord = 0; //总记录数
            int page_record = 5; //分页单位
            int pages = 0; //用户请求的页面
            int lick = 0;
            CDtypebean typebean = (CDtypebean) session.getAttribute("name");//取出session值,用CDtypebean对象接收
            lick = typebean.getPage();//取出值附给变量lick
            String countSQL = "select   count(*)   from  a where typeID="
                    + lick;//SQL语句,主要是用来查询表里数据的条数
            if (request.getParameter("page") != null) {
                pages = Integer.parseInt(request.getParameter("page"));
            }
            FenPage fenpage = new FenPage(pages, page_record, countSQL, lick);//调用FenPage构造函数,把当前页面值、页面单位、查询条数SQL语句、树导航传递过来的值传到FenPage.java类
            Vector vector = fenpage.Fenye();
            allrecord = Integer.parseInt(vector.get(0).toString());
            allpage = Integer.parseInt(vector.get(1).toString());
            curpage = Integer.parseInt(vector.get(2).toString());
            ResultSet rs = (ResultSet) vector.get(3);
        %>
        <%
            while (rs.next()) {
        %>

        <table border="1">
            <tr align="center">
                <td align="center" width="95">
                    <a href=""><%=rs.getString(2)%></a>
                </td>
                <td align="center" width="95"><%=rs.getString(3)%></td>
                <td align="center" width="95"><%=rs.getString(4)%></td>
                <td align="center" width="95"><%=rs.getString(5)%></td>
                <td>

                </td>
            </tr>
        </table>
        <%
            }
        %>
        <p align=center>
            <a href=FenPage.jsp?page=1> 首页 </a>
            <a href="FenPage.jsp?page=<%=curpage - 1%>"> 上一页 </a>
            <a href=FenPage.jsp?page= <%=curpage + 1%>> 下一页 </a>
            <a href=FenPage.jsp?page= <%=allpage%>> 尾页 </a> 共
            <%=allpage%>
            页数 第
            <%=curpage%>
            页 共
            <%=allrecord%>
            条记录 每页显示
            <%=page_record%>
            条
        </p>

    </body>
</html>




上面这个是页面文件




复制代码 package bean;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import servlet.Database;

public class FenPage {
    public int curPage;// 当前页面
    public int maxPage;// 总共页面
    public int countRows;// 总共页数
    public int showRows;// 显示条数
    public String SQL;// SQL语句
    public String countSQL;// 计算条数SQL
    public int lick;
    Vector v;

    public FenPage(int curPage, int showRows, String countSql, int l) {
        this.curPage = curPage;
        this.showRows = showRows;
        this.countSQL = countSql;
        this.lick = l;
    }

    public Vector Fenye() {
        int allpage = 0;
        int allrecord = 0;
        // 总记录数
        ResultSet rs0 = Database.stmt_select(countSQL);
        try {
            if (rs0.next()) {
                allrecord = rs0.getInt(1);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        // 总的页数
        allpage = (int) Math.ceil((allrecord + showRows - 1) / showRows);
        // 根据用户提交的请求页判断应该显示的当前页
        if (curPage > allpage) {
            curPage = allpage;
        } else if (curPage < 1) {
            curPage = 1;
        } else {
            curPage = curPage;
        }
        System.out.println("curPage" + curPage);
        // 得到符合条件页面的显示记录的结果集rs;
        SQL = "SELECT TOP "
                + showRows
                + " * FROM (SELECT ROW_NUMBER() OVER (ORDER BY ID) AS RowNumber,* FROM a  where  typeID="
                + lick + ") A WHERE RowNumber > " + showRows * (curPage - 1);

        rs0 = Database.stmt_select(SQL);
        // 声明一个容器实例vector
        Vector vector = new Vector();
        vector.add(0, new Integer(allrecord));
        vector.add(1, new Integer(allpage));
        vector.add(2, new Integer(curPage));
        vector.add(3, rs0);
        return vector;
    }
}



上面这个是分页BEAN文件   我觉得写分页还真要看看这文件,有点数据库分页算法,把语句放到SQL里多运行下
只要明白分页原理,其实分页想怎么写就怎么,我的代码虽然简陋,封装得不好,但对于初学来说,这应该是个好的例子,希望对需要的人有点帮助。
发表于 2010-3-6 10:05:04 | 显示全部楼层 IP:澳大利亚
够震撼!够创新!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 15:26 , Processed in 0.102074 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表