前面的文章实现了分页显示,现在把分页显示的进行了整合,整合到了一个单独的页面中,加入了按关键字查询,具体实现如下:
用于实现分页和查询的页面文件:
split_page_plugin.jsp
<%@ page contentType="text/html" pageEncoding="GBK"%> <% int currentPage = 1 ; // 为当前所在的页,默认在第1页 int lineSize = 3 ; // 每次显示的记录数 long allRecorders = 0 ; // 表示全部的记录数 long pageSize = 1 ; // 表示全部的页数(尾页) int lsData[] = {1,3,5,7,9,10,15,20,25,30,50,100} ; String keyWord = request.getParameter("kw") ; // 接收查询关键字 String url = request.getParameter("url") ; %> <% try{ currentPage = Integer.parseInt(request.getParameter("cp")) ; } catch(Exception e) {} try{ lineSize = Integer.parseInt(request.getParameter("ls")) ; } catch(Exception e) {} try{ allRecorders = Long.parseLong(request.getParameter("allRecorders")) ; } catch(Exception e) {} if(keyWord == null){ keyWord = "" ; // 如果模糊查询没有关键字,则表示查询全部 } %> <% pageSize = (allRecorders + lineSize -1) / lineSize ; if(pageSize == 0){ pageSize = 1 ; } %> <script language="javascript"> function go(num){ document.getElementById("cp").value = num ; document.spform.submit() ; // 表单提交 } </script> <form name="spform" action="<%=url%>" method="post"> 输入查询关键字:<input type="text" name="kw" value="<%=keyWord%>"> <input type="submit" value="查询"><br> <input type="button" value="首页" onclick="go(1)" <%=currentPage==1?"DISABLED":""%>> <input type="button" value="上一页" onclick="go(<%=currentPage-1%>)" <%=currentPage==1?"DISABLED":""%>> <input type="button" value="下一页" onclick="go(<%=currentPage+1%>)" <%=currentPage==pageSize?"DISABLED":""%>> <input type="button" value="尾页" onclick="go(<%=pageSize%>)" <%=currentPage==pageSize?"DISABLED":""%>> 跳转到第<select name="selcp" onchange="go(this.value)"> <% for(int x=1;x<=pageSize;x++){ %> <option value="<%=x%>" <%=x==currentPage?"SELECTED":""%>><%=x%></option> <% } %> </select>页 每页显示 <select name="ls" onchange="go(1)"> <% for(int x=0;x<lsData.length;x++){ %> <option value="<%=lsData[x]%>" <%=lsData[x]==lineSize?"SELECTED":""%>><%=lsData[x]%></option> <% } %> </select> 条 <input type="hidden" name="cp" value="1"> </form>
emp_list_true.jsp进行数据库操作和显示的页面文件:
emp_list_true.jsp
<%@ page contentType="text/html" pageEncoding="GBK"%> <%@ page import="java.sql.*" %> <html> <head><title>雇员列表显示</title> <style type="text/css"> <!-- .STYLE6 {font-size: 12px} .STYLE10 {font-size: 14px; font-weight: bold; } --> </style> </head> <script language="javascript"> function changeColor(obj,color){ obj.bgColor = color ; } </script> <body> <%! public static final String URL = "emp_list_true.jsp" ; %> <%! public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ; public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:ORACLE" ; public static final String DBUSER = "scott" ; public static final String DBPASSWORD = "tiger" ; %> <% Connection conn = null ; PreparedStatement pstmt = null ; ResultSet rs = null ; %> <% int currentPage = 1 ; // 为当前所在的页,默认在第1页 int lineSize = 3 ; // 每次显示的记录数 int allRecorders = 0 ; // 表示全部的记录数 String keyWord = request.getParameter("kw") ; // 接收查询关键字 %> <% try{ currentPage = Integer.parseInt(request.getParameter("cp")) ; } catch(Exception e) {} try{ lineSize = Integer.parseInt(request.getParameter("ls")) ; } catch(Exception e) {} if(keyWord == null){ keyWord = "" ; // 如果模糊查询没有关键字,则表示查询全部 } %> <% Class.forName(DBDRIVER) ; conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ; String sql = "SELECT COUNT(empno) FROM emp " + " WHERE empno LIKE ? OR ename LIKE ? OR job LIKE ? OR TO_CHAR(hiredate,'yyyy-mm-dd') LIKE ? " + " OR sal LIKE ? OR comm LIKE ? " ; pstmt = conn.prepareStatement(sql) ; pstmt.setString(1,"%"+keyWord+"%") ; pstmt.setString(2,"%"+keyWord+"%") ; pstmt.setString(3,"%"+keyWord+"%") ; pstmt.setString(4,"%"+keyWord+"%") ; pstmt.setString(5,"%"+keyWord+"%") ; pstmt.setString(6,"%"+keyWord+"%") ; rs = pstmt.executeQuery() ; if(rs.next()){ // 取得全部的记录数 allRecorders = rs.getInt(1) ; } %> <center> <h1>雇员列表</h1> <jsp:include page="split_page_plugin.jsp"> <jsp:param name="allRecorders" value="<%=allRecorders%>"/> <jsp:param name="url" value="<%=URL%>"/> </jsp:include> <% sql = "SELECT * FROM ( " + " SELECT empno,ename,job,hiredate,sal,comm,ROWNUM rn " + " FROM emp WHERE (empno LIKE ? OR ename LIKE ? OR job LIKE ? OR TO_CHAR(hiredate,'yyyy-mm-dd') LIKE ? OR sal LIKE ? OR comm LIKE ?) AND " + " ROWNUM<=? ORDER BY empno) temp " + " WHERE temp.rn>? " ; pstmt = conn.prepareStatement(sql) ; pstmt.setString(1,"%"+keyWord+"%") ; pstmt.setString(2,"%"+keyWord+"%") ; pstmt.setString(3,"%"+keyWord+"%") ; pstmt.setString(4,"%"+keyWord+"%") ; pstmt.setString(5,"%"+keyWord+"%") ; pstmt.setString(6,"%"+keyWord+"%") ; pstmt.setInt(7,currentPage * lineSize) ; pstmt.setInt(8,(currentPage-1) * lineSize) ; rs = pstmt.executeQuery() ; %> <TABLE BORDER="1" cellpadding="5" cellspacing="0" bgcolor="F2F2F2" width="80%"> <TR onMouseOver="changeColor(this,'white')" onMouseOut="changeColor(this,'F2F2F2')"> <td align="center" valign="middle"><span class="STYLE10">编号</span></td> <td align="center" valign="middle"><span class="STYLE10">姓名</span></td> <td align="center" valign="middle"><span class="STYLE10">职位</span></td> <td align="center" valign="middle"><span class="STYLE10">雇佣日期</span></td> <td align="center" valign="middle"><span class="STYLE10">工资</span></td> <td align="center" valign="middle"><span class="STYLE10">奖金</span></td> </TR> <% int count = 0 ; while(rs.next()){ count ++ ; int empno = rs.getInt(1) ; String ename = rs.getString(2) ; String job = rs.getString(3) ; Date hiredate = rs.getDate(4) ; double sal = rs.getDouble(5) ; double comm = rs.getDouble(6) ; %> <TR onMouseOver="changeColor(this,'white')" onMouseOut="changeColor(this,'F2F2F2')"> <td align="center" valign="middle"><span class="STYLE6"><%=empno%></span></td> <td align="center" valign="middle"><span class="STYLE6"><%=ename%></span></td> <td align="center" valign="middle"><span class="STYLE6"><%=job%></span></td> <td align="center" valign="middle"><span class="STYLE6"><%=hiredate%></span></td> <td align="center" valign="middle"><span class="STYLE6"><%=sal%></span></td> <td align="center" valign="middle"><span class="STYLE6"><%=comm%></span></td> </TR> <% } %> <% if(count == 0){ // 没有任何的数据 %> <TR onMouseOver="changeColor(this,'white')" onMouseOut="changeColor(this,'F2F2F2')"> <td align="center" valign="middle" colspan="6"><span class="STYLE6">没有任何的查询结果!</span></td> </TR> <% } %> </table> <% conn.close() ; %> </center> </body> </html>
- 2楼cselmu96天前 13:49
- 是的,厉害,一眼就看出了!
- 1楼ynxts6天前 00:06
- 跟着MLDN学的吧,呵呵。