2 xiaomi817 xiaomi817 于 2015.07.06 20:50 提问

java代码中没法执行首页、上一页、下一页操作 15C

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>

2个回答

caozhy
caozhy   Ds   Rxr 2015.07.06 20:54

目测是页码没有传到服务器端。下个断点跟踪下。

xiaomi817
xiaomi817 那currentPage应该怎么修改呢?不知道怎么修改,谢谢
2 年多之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2015.07.06 21:09
 try{
        currentPage = Integer.parseInt(request.getParameter("cp")) ;//关键看看这里有没有取到值,取出来的值是多少,按钮可用不可用都是这个参数决定的
    } catch(Exception e) {}
xiaomi817
xiaomi817 不知道这里应该怎么修改,能给我看看吗?谢谢
2 年多之前 回复
xiaomi817
xiaomi817 那怎么改呢?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片