括号不匹配
result.absolute((intPage-1)*intPageSize+1);
result.absolute((intPage-1)*intPageSize+1);
解决方案 »
- 怎么在BBS回帖中添加一些表情
- 点击保存按钮,提交表单数据,当前页面不跳转
- myeclipse下的struts+hibernate问题.
- 做个人网站怎么才能写好分析??
- 如何使用valuelist
- jsp页中关于定义form时所使用的enctype="multipart/form-data"是什么意思?
- 使用java进行XSLT转换时报:Open quote is expected for attribute "rel".
- 求助:根据URL不同JSP页面现实不同语言
- 麻烦各位一个问题
- JSP中什么语句相当于ASP中的response.end
- 我该怎么办???
- 当多个请求同一个servlet时,servlet的生命周期是怎样的?
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)--------------------------------------------------------------------------------
注释掉此句之后的所以涉及数据库操作的得语句,如果还有问题,注释掉此句,如果没有问题了,说明你的jdbc版本过低,还不支持absolute(),last()等高级方法,如果不是这样,那就是你的语句有问题
<%@ 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>
先将result.last();后面的代码都剪切掉看有没有问题(当然你好保证基本的括号和%>等匹配)
<%@ 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();
%>
<%@ 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>
jsp是建立在java基础上的,所以一定要了解java的基础知识,可以将二者的学习同时进行,至于调试,最基本的方法便是加注释,先把认为有错误的地方注释掉,然后逐步缩小包围圈,肯定能找到错误所在