自己学jsp也有了一段时间,而且自己现在上的课是java web现在雪儿基础做了一个最简单的jsp页面,代码都放在一个页面,自己准备在改进,一步步来,这里的代码可能不是很完美,没事,下面接下来会有大概两篇关于分页的记载。今天开始我要记载自己学jsp的地点滴滴,学到一个东西觉得有点价值的我就会记载上来,多收年来还可以回忆下自己曾经学这的过程,再过几天就要靠“中级网络工程师”,可惜我们看书啊,这几天在强补以下,希望能过啊,最近是在是太多事了,哎,自己不会懂得舍取现在来说jsp分页吧。
首先要理清自己的对于分页的理解,我在做分页的时候在网上也找了好多资料,记得都一般般,代码复制下来都是运行不了,所以我就记载的想熟悉点吧。
要定义以下几个变量,并且要理解相应的意思,这样代码就好些了。
1 int pageCount =0//所有的页数 2 int pageNow=1//现在显示页数即是现在显示的是第几页 3 int pageSize=2// 每页显示多少条记录 4 int rowCount=0//数据库一共有多少条记录,以便算页数
接着我们就是考虑每一页的显示情况。比如说我们每页要显示两条数据,这样我们的sql语句就要用到limit
1 String sql ="select empno,ename,job,hiredate,sal from emp LIMIT ?,?";
这里的两个问号表示的是起始点,和要查询的行数。再说明白点就是说我要从第五行开始查,那么查询得到的数据就是第五行和第六行,在这我们要得到前一个最后一条数据的编号,即用pageSize*(pageNow-1)
在我的这个代码中,肯可能还有很多缺陷我有的注释了,忘记了怎么些,所以就没改,就是给pageNow赋值的时候有点问题,而且在下一页那里也不挖完美,毕竟是第一次做,还请见谅哦。我的下一篇解说将会好一些。下面就附加上所有代码。
1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <%@ page import="java.sql.*" %> 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 4 <html> 5 <head> 6 <title>My JSP 'index.jsp' starting page</title> 7 <meta http-equiv="pragma" content="no-cache"> 8 <meta http-equiv="cache-control" content="no-cache"> 9 <meta http-equiv="expires" content="0"> 10 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 11 <meta http-equiv="description" content="This is my page"> 12 <!-- 13 <link rel="stylesheet" type="text/css" href="styles.css"> 14 --> 15 </head> 16 <% 17 request.setCharacterEncoding("utf-8"); 18 %> 19 20 <%! 21 public static final String DBDRIVER="org.gjt.mm.mysql.Driver"; 22 public static final String DBURL="jdbc:mysql://localhost:3306/mldn"; 23 public static final String DBUSER="root"; 24 public static final String password="mysqladmin"; 25 26 %> 27 <% 28 Connection conn=null; 29 PreparedStatement pstmt=null; 30 ResultSet rs = null; 31 %> 32 33 <% 34 try{ 35 Class.forName(DBDRIVER); 36 conn=DriverManager.getConnection(DBURL,DBUSER,password); 37 System.out.print(conn); 38 }catch(Exception e){ 39 } 40 41 %> 42 <body> 43 <center> 44 <h1>员工信息</h1> 45 46 <% 47 int pageSize=2;//每页显示多少条记录 48 int pageNow=1;//希望显示第几页,默认是第一页 49 int pageCount=0;//一共有多少页,从数据库获取值 50 int rowCount=0;//数据库一共有多少条记录,以便算页数 51 52 String pageNow1=request.getParameter("pageNow");//接受用户希望显示的页数 53 if(pageNow1!=null) 54 { 55 pageNow=Integer.parseInt(pageNow1);//这里转化位整型 56 } 57 58 // pageNow==null?1:Integer.parseInt(pageNow1); 59 60 if(conn!=null) 61 { 62 String sql="select count(*) from emp"; 63 64 System.out.println(conn); 65 66 67 pstmt=conn.prepareStatement(sql); 68 rs=pstmt.executeQuery(); 69 } 70 if(rs!=null){ 71 while(rs.next()) 72 { 73 rowCount=rs.getInt(1);//获取一共有多少行数据 74 } 75 } 76 //计算总共有多少页 77 if(rowCount/pageSize==0) 78 { 79 pageCount=rowCount/pageSize; 80 } 81 else 82 { 83 pageCount =rowCount/pageSize+1; 84 } 85 86 if(conn!=null){ 87 88 String sql ="select empno,ename,job,hiredate,sal from emp LIMIT ?,?"; 89 90 //这里自己要调试下 91 pstmt=conn.prepareStatement(sql); 92 pstmt.setInt(1,pageSize*(pageNow-1)); 93 pstmt.setInt(2,pageSize); 94 rs=pstmt.executeQuery(); 95 } 96 %> 97 98 99 <table border="1"> 100 <tr> 101 <td>员工ID</td> 102 <td>员工姓名</td> 103 <td>员工工作</td> 104 <td>员工日期</td> 105 <td>员工薪水</td> 106 </tr> 107 108 109 <% 110 if(rs!=null){ 111 while(rs.next()) 112 { 113 %> 114 <tr> 115 <td><%=rs.getInt(1)%></td> 116 <td><%=rs.getString(2)%></td> 117 <td><%=rs.getString(3)%></td> 118 <td><%=rs.getDate(4)%></td> 119 <td><%=rs.getFloat(5)%></td> 120 </tr> 121 <% 122 } 123 } 124 %> 125 126 <% 127 try{ 128 rs.close(); 129 pstmt.close(); 130 conn.close(); 131 }catch(Exception e){} 132 %> 133 134 </table> 135 <% 136 if(pageNow!=1) 137 { 138 out.println("<a href=index.jsp?pageNow="+(pageNow-1)+">上一页</a>"); 139 } 140 141 for(int i=1;i<=pageCount;i++) 142 { 143 out.println("<a href=index.jsp?pageNow="+(pageNow+1)+">下一页</a>"); 144 } 145 %> 146 </center> 147 </body> 148 </html>
代码是在myeclie上运行的,哎,耗费了我好几天的时间,附加上图片,我自己觉得那个好难看呢,if语句那里的问题。
继续努力吧。。。以后会记录的更多。。。
这里主要是按照我自己的想法说明的,有不足请见谅。。。。。