括号不匹配
result.absolute((intPage-1)*intPageSize+1);

解决方案 »

  1.   

    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: [Microsoft][ODBC 驱动程序 管理器] 无效的光标状态
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:248)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
    at java.lang.Thread.run(Thread.java:484)
    root cause javax.servlet.ServletException: [Microsoft][ODBC 驱动程序 管理器] 无效的光标状态
    at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:497)
    at org.apache.jsp.index2_jsp._jspService(index2_jsp.java:206)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:204)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
    at java.lang.Thread.run(Thread.java:484)--------------------------------------------------------------------------------
      

  2.   

    result.absolute((intPage-1)*intPageSize+1);
    注释掉此句之后的所以涉及数据库操作的得语句,如果还有问题,注释掉此句,如果没有问题了,说明你的jdbc版本过低,还不支持absolute(),last()等高级方法,如果不是这样,那就是你的语句有问题
      

  3.   

    我把result.absolute((intPage-1)*intPageSize+1);注释掉后还有同样的问题,那你说我的哪个语句有问题呢?我把这个jsp贴上去,你看卡
      

  4.   

    index2.jsp
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page language="java"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="java.net.*"%><%
    String WebmasterIP="10.0.0.1";
    boolean IsWebmasterIP=false;
    String RemoteAddr=new String();
    RemoteAddr=request.getRemoteAddr();
    if(RemoteAddr.equals(WebmasterIP))
    {
    IsWebmasterIP=true;
    }int intPageSize;
    int intRowCount=5;
    int intPageCount;
    int intPage;
    String strPage;int i;intPageSize=5;strPage=request.getParameter("page");
    if(strPage==null){
    intPage=1;
    }
    else
    {
    intPage=Integer.parseInt(strPage);
    if(intPage<1) intPage=1;
    }String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
    try
    {
    Class.forName(sDBDriver);
    }
    catch(java.lang.ClassNotFoundException ae)
    {
    System.err.println("ae:"+ae.getMessage());
    }
    String sConnStr="jdbc:odbc:jspdb";
    Connection conn=null;
    conn=DriverManager.getConnection(sConnStr,"sa","");
    String strSQL;
    strSQL="SELECT * FROM guestbook WHERE flag=1";
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    ResultSet result=null;
    try
    {
    result=stmt.executeQuery(strSQL);
    }
    catch(SQLException be)
    {
    System.err.println("be.executeQuery:"+be.getMessage());
    }
    result.last();
    intPageCount=(intRowCount+intPageSize-1)/intPageSize;if(intPage>intPageCount) intPage=intPageCount;
    %>
    <html>
    <head>
    <title>留言显示</title>
    <meta content="text/html;charset=gb2312" http-equiv=Content-Type>
    </head><body bgcolor=pink>
    <center>
    <h4>留言列表<h4/>
    <table border="1" cellspacing="2" cellpadding="5">
    <tr>
    <%
    if(IsWebmasterIP){
    out.println("<th>留言管理</th>");
    }
    %>
    <th>留言者</th>
    <th>留言者登陆ip</th>
    <th>email地址</th>
    <th>留言内容</th>
    <th>留言日期</th>
    </tr>
    <%
    out.println("<a href=addmsg.jsp>新增留言....</a><p>\n");if(intPageCount>0){
    try{
               //result.absolute((intPage-1)*intPageSize+1);
    }
    catch(Exception e){
    out.println("error:"+e.getMessage());
    }
    i=0;
    while(i<intPageSize&&!result.isAfterLast()){
    %>
    <tr>
    <%
    if(IsWebmasterIP){
    out.println("<td><a href=erase.jsp?id="+result.getString(1)+">删除本篇</a></td>");
    }
    %>
    <td><%=result.getString(2)%></td>
    <td><%=result.getString(3)%></td>
    <td><%=result.getString(4)%></td>
    <td><%=result.getString(5)%></td>
    <td><%=result.getString(6)%></td>
    </tr><%
    result.next();
    i++;
    }
    }
    %>
    </table><br>
    result.close();
    conn.close();
    %>
    第<%=intPage%>页<br>
    共<%=intPageCount%>页<br>
    <%if(intPage<intPageCount){%><a href="index2.jsp?page=<%=intPage+1%>">下一页</a><%}%>
    <br>
    <%if(intPage>1){
    %><a href="index2.jsp?page=<%=intPage-1%>">上一页</a><%}%>
    </center></body></html>
      

  5.   

    你单注释掉result.absolute()这一句当然有错啰
    先将result.last();后面的代码都剪切掉看有没有问题(当然你好保证基本的括号和%>等匹配)
      

  6.   

    你看一看下面的代码有没有问题
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page language="java"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="java.net.*"%><%
    String WebmasterIP="10.0.0.1";
    boolean IsWebmasterIP=false;
    String RemoteAddr=new String();
    RemoteAddr=request.getRemoteAddr();
    if(RemoteAddr.equals(WebmasterIP))
    {
    IsWebmasterIP=true;
    }int intPageSize;
    int intRowCount=5;
    int intPageCount;
    int intPage;
    String strPage;int i;intPageSize=5;strPage=request.getParameter("page");
    if(strPage==null){
    intPage=1;
    }
    else
    {
    intPage=Integer.parseInt(strPage);
    if(intPage<1) intPage=1;
    }String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
    try
    {
    Class.forName(sDBDriver);
    }
    catch(java.lang.ClassNotFoundException ae)
    {
    System.err.println("ae:"+ae.getMessage());
    }
    String sConnStr="jdbc:odbc:jspdb";
    Connection conn=null;
    conn=DriverManager.getConnection(sConnStr,"sa","");
    String strSQL;
    strSQL="SELECT * FROM guestbook WHERE flag=1";
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    ResultSet result=null;
    try
    {
    result=stmt.executeQuery(strSQL);
    }
    catch(SQLException be)
    {
    System.err.println("be.executeQuery:"+be.getMessage());
    }
    result.last();result.close();
    conn.close();
    %>
      

  7.   

    那就知道问题所在了,运行下面的代码,注意加注释的地方,要学会调试!
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page language="java"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="java.net.*"%><%
    String WebmasterIP="10.0.0.1";
    boolean IsWebmasterIP=false;
    String RemoteAddr=new String();
    RemoteAddr=request.getRemoteAddr();
    if(RemoteAddr.equals(WebmasterIP))
    {
    IsWebmasterIP=true;
    }int intPageSize=5;//每页显示的记录数
    int intRowCount=0;//应初始化为0!
    int intPageCount;
    int intPage;
    String strPage;int i;//intPageSize=5;去掉这句strPage=request.getParameter("page");
    if(strPage==null){
    intPage=1;
    }
    else
    {
    intPage=Integer.parseInt(strPage);
    if(intPage<1) intPage=1;
    }String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
    try
    {
    Class.forName(sDBDriver);
    }
    catch(java.lang.ClassNotFoundException ae)
    {
    System.err.println("ae:"+ae.getMessage());
    }
    String sConnStr="jdbc:odbc:jspdb";
    Connection conn=null;
    conn=DriverManager.getConnection(sConnStr,"sa","");
    String strSQL;
    strSQL="SELECT * FROM guestbook WHERE flag=1";
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    ResultSet result=null;
    try
    {
    result=stmt.executeQuery(strSQL);
    }
    catch(SQLException be)
    {
    System.err.println("be.executeQuery:"+be.getMessage());
    }
    result.last();
    intRowCount=result.getRow();//少了这句,获得记录数目
    intPageCount=(intRowCount+intPageSize-1)/intPageSize;if(intPage>intPageCount) intPage=intPageCount;
    %>
    <html>
    <head>
    <title>留言显示</title>
    <meta content="text/html;charset=gb2312" http-equiv=Content-Type>
    </head><body bgcolor=pink>
    <center>
    <h4>留言列表<h4/>
    <table border="1" cellspacing="2" cellpadding="5">
    <tr>
    <%
    if(IsWebmasterIP){
    out.println("<th>留言管理</th>");
    }
    %>
    <th>留言者</th>
    <th>留言者登陆ip</th>
    <th>email地址</th>
    <th>留言内容</th>
    <th>留言日期</th>
    </tr>
    <%
    out.println("<a href=addmsg.jsp>新增留言....</a><p>\n");if(intPageCount>0){
    try{
              result.absolute((intPage-1)*intPageSize+1);
    }
    catch(Exception e){
    out.println("error:"+e.getMessage());
    }
    i=0;
    while(i<intPageSize&&!result.isAfterLast()){
    %>
    <tr>
    <%
    if(IsWebmasterIP){
    out.println("<td><a href=erase.jsp?id="+result.getString(1)+">删除本篇</a></td>");
    }
    %>
    <td><%=result.getString(2)%></td>
    <td><%=result.getString(3)%></td>
    <td><%=result.getString(4)%></td>
    <td><%=result.getString(5)%></td>
    <td><%=result.getString(6)%></td>
    </tr><%
    result.next();
    i++;
    }
    }
    %>
    </table><br>
    result.close();
    conn.close();
    %>
    第<%=intPage%>页<br>
    共<%=intPageCount%>页<br>
    <%if(intPage<intPageCount){%><a href="index2.jsp?page=<%=intPage+1%>">下一页</a><%}%>
    <br>
    <%if(intPage>1){
    %><a href="index2.jsp?page=<%=intPage-1%>">上一页</a><%}%>
    </center></body></html>
      

  8.   

    你怎么对jsp这么熟练,是不是一定要对java很熟练呢?我就是不太会调试?您能说一下秘诀吗?
      

  9.   

    还有没有错误呀?你用的是jdbc-odbc桥,建立了odbc数据源吗?
    jsp是建立在java基础上的,所以一定要了解java的基础知识,可以将二者的学习同时进行,至于调试,最基本的方法便是加注释,先把认为有错误的地方注释掉,然后逐步缩小包围圈,肯定能找到错误所在
      

  10.   

    都见好啦!我自己在数据库中手写的可以显示再页面上,现在我觉得问题出在提交页面,addmsg.jsp有问题,现在没有错误提示,就是不能提交到库里?
      

  11.   

    应该是这样,注释掉addmsg.jsp中插入数据库的语句,然后把sql语句用out.println()打印出来看看,主要检查字段名称和类型与数据中的是否一致
      

  12.   

    你把addmsg.jsp中需要注释和添加打印的地方帮我写一下啦,我没调试过?不太懂,以后我会照着这个自己调试的?