问题描述
- java代码中没法执行首页、上一页、下一页操作
-
emp_list.jsp调用split_page_plugin.jsp实现对数据库表的分页查询和模糊查询操作,但是最后出来的效果无法实现分页查询中的首页、上一页、下一页操作操作,相应按钮也不亮,如图,我用的是mysql数据库,请高手帮我调试一下,非常感谢,相应代码如下:
emp_list.jsp<%@ page contentType="text/html" pageEncoding="GBK"%> <%@ page import="java.sql.*" %> <html> <head><title>www.mldnjava.cn,MLDN高端Java培训</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.jsp" ; %> <%! public static final String DBDRIVER = "org.gjt.mm.mysql.Driver"; public static final String DBURL = "jdbc:mysql://localhost:3306/mldn"; public static final String DBUSER = "root"; public static final String DBPASSWORD = "toor"; %> <% 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 DATE_FORMAT(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> <TABLE BORDER="1" cellpadding="5" cellspacing="0" bgcolor="F2F2F2" width="100%"> <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> <% sql = " SELECT * FROM emp WHERE empno LIKE ? OR ename LIKE ? OR job LIKE ? OR DATE_FORMAT(hiredate,'yyyy-mm-dd') LIKE ? "+ "OR sal LIKE ? OR comm LIKE ? ORDER BY empno LIMIT ? , ? "; 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 -1)* lineSize) ; pstmt.setInt(8,lineSize) ; rs = pstmt.executeQuery() ; %> <% while(rs.next()){ 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> <% } %> </table> <% conn.close() ; %> </center> </body> </html>
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>
解决方案
目测是页码没有传到服务器端。下个断点跟踪下。
解决方案二:
try{
currentPage = Integer.parseInt(request.getParameter("cp")) ;//关键看看这里有没有取到值,取出来的值是多少,按钮可用不可用都是这个参数决定的
} catch(Exception e) {}
时间: 2024-10-30 09:45:17