top.jsp: <%ResultSet rs = data.executeQuery("select * from sort");%> <%for(int i=0; i<6 ;i++){rs.next(); %><a href="./Sort?sortId=<%=rs.getInt("sortId")%>"><%out.print("|"+rs.getString("sortName"));%></a> <%}%> </td> ------------------------------------------------------------------- <%ResultSet rs = data.executeQuery("select top 6 * from sort");%> <%while(rs.next()){ %><a href="./Sort?sortId=<%=rs.getInt("sortId")%>"><%out.print("|"+rs.getString("sortName"));%></a> <%}%> </td>
错误日志:500错误 type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: java.lang.NullPointerException org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) org.apache.jsp.index_jsp._jspService(index_jsp.java:56) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root cause java.lang.NullPointerException bean.Data.executeQuery(Data.java:34) org.apache.jsp.top_jsp._jspService(top_jsp.java:72) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) org.apache.jsp.index_jsp._jspService(index_jsp.java:56) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
我再设置一次数据库连接,有出现了另一个错误: HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: javax.servlet.ServletException: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position. org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) org.apache.jsp.index_jsp._jspService(index_jsp.java:60) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root cause javax.servlet.ServletException: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position. org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781) org.apache.jsp.topLeft_jsp._jspService(topLeft_jsp.java:104) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) org.apache.jsp.index_jsp._jspService(index_jsp.java:60) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root cause java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position. com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source) com.microsoft.jdbc.base.BaseResultSet.validateCursorPosition(Unknown Source) com.microsoft.jdbc.base.BaseResultSet.getInt(Unknown Source) com.microsoft.jdbc.base.BaseResultSet.getInt(Unknown Source) org.apache.jsp.topLeft_jsp._jspService(topLeft_jsp.java:87) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) org.apache.jsp.index_jsp._jspService(index_jsp.java:60) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.这个是什么问题?
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position. 有你这么遍历ResultSet的么ResultSet rs2 = data.executeQuery("select * from sort"); while(rs2.next()) { rs2.getXXX(); }
明显的Null 错误
樓主是玩C#出身的吧,哈哈.異常:空指針異常 你那數據庫連接用STATIC 測試下 是不是為NULL還有用完了 CONNECTION STATEMENT RESULT 記得關閉.
<%for(int i=0; i<6 ;i++){rs.next();
%><a href="./Sort?sortId=<%=rs.getInt("sortId")%>"><%out.print("|"+rs.getString("sortName"));%></a>
<%}%> </td>
-------------------------------------------------------------------
<%ResultSet rs = data.executeQuery("select top 6 * from sort");%>
<%while(rs.next()){
%><a href="./Sort?sortId=<%=rs.getInt("sortId")%>"><%out.print("|"+rs.getString("sortName"));%></a>
<%}%> </td>
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
org.apache.jsp.index_jsp._jspService(index_jsp.java:56)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.lang.NullPointerException
bean.Data.executeQuery(Data.java:34)
org.apache.jsp.top_jsp._jspService(top_jsp.java:72)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
org.apache.jsp.index_jsp._jspService(index_jsp.java:56)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
bean.Data.executeQuery(Data.java:34)
34行是哪行? try
{
Statement statement = conn.createStatement();
rs = statement.executeQuery(s);
}
?
Statement statement = conn.createStatement();Debug一下看看吧
你第一次打开该页的时候,并没有赋予user值,所以回报空指针异常。
可以这样,我觉得:String user = session.getAttribute("user");
if(user == null){
....
}
空指针问题,数据库连接失败。
JSP 56行ean.Data.executeQuery(Data.java:34)
Data.java的34行
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: javax.servlet.ServletException: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position.
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
org.apache.jsp.index_jsp._jspService(index_jsp.java:60)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause javax.servlet.ServletException: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.topLeft_jsp._jspService(topLeft_jsp.java:104)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
org.apache.jsp.index_jsp._jspService(index_jsp.java:60)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid operation for the current cursor position.
com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.base.BaseResultSet.validateCursorPosition(Unknown Source)
com.microsoft.jdbc.base.BaseResultSet.getInt(Unknown Source)
com.microsoft.jdbc.base.BaseResultSet.getInt(Unknown Source)
org.apache.jsp.topLeft_jsp._jspService(topLeft_jsp.java:87)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
org.apache.jsp.index_jsp._jspService(index_jsp.java:60)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.这个是什么问题?
<td width="680"><a href="index.jsp">主页</a>
<jsp:useBean id="data" class="bean.Data"/>
<%ResultSet rs = data.executeQuery("select * from sort");%>
<%for(int i=0; i<6 ;i++){rs.next();
%><a href="./Sort?sortId=<%=rs.getInt("sortId")%>"><%out.print("|"+rs.getString("sortName"));%></a>
<%}%> </td>
</tr>
這段代碼中的結果集取值问题游标下标问题,改成
<tr>
<td width="680"><a href="index.jsp">主页</a>
<jsp:useBean id="data" class="bean.Data"/>
<%ResultSet rs = data.executeQuery("select * from sort");%>
<%while(rs.next()){%><a href="./Sort?sortId=<%=rs.getInt("sortId")%>"><%out.print("|"+rs.getString("sortName"));%></a>
<%}%> </td>
</tr>
没有特别指向哪句
34行这句吗?Statement statement = conn.createStatement();
应该是数据库没连接上。conn应该是null
top.jsp
<%@ page contentType="text/html;charset=gb2312" import="java.sql.*"%>
<html>
<body>
<div align="center">
<table width="686" border="0">
<tr>
<td width="680"><a href="index.jsp">主页</a>
<jsp:useBean id="data" class="bean.Data"/>
<%ResultSet rs = data.executeQuery("select * from sort");%>
<%for(int i=0; i<6 ;i++){
if(rs!=null&&rs.next()){
%><a href="./Sort?sortId=<%=rs.getInt("sortId")%>"><%out.print("|"+rs.getString("sortName"));%></a>
<%}
}
%> </td>
</tr>
</table>
<table width="685" border="0">
<tr>
<td width="679"><a href="kehufuwu.jsp">客户服务</a>|<a href="fukuanfangshi.jsp">付款方式|</a><a href="./XinWen">新闻中心|</a><a href="./Order">我的订单|</a><a href="charge.jsp">收银台</a>|<a href="forsearch.jsp">查询</a>|<%= new java.util.Date().getYear()+1900%>年</td>
</tr>
</table>
</div>
</body>
</html>
topleft.jsp
<%@ page contentType="text/html;charset=gb2312" import="java.sql.*"%>
<jsp:useBean id="data" class="bean.Data"/>
<table width="251" border="0">
<tr>
<td width="154">
<%if(session.getAttribute("user")==null){%><a href="login.jsp">登陆</a> <a href="register.jsp">注册</a>
<%}else{%>欢迎您,<%= session.getAttribute("user").toString()%><br><a href="logout.jsp">退出</a><%}%><tr>
<td>分类<br>
<%ResultSet rs2 = data.executeQuery("select * from sort");%>
<%for(int i=0; i<5; i++){
if(rs2!=null&&rs2.next()){
%><a href="./Sort?sortId=<%=rs2.getInt("sortId")%>"><%out.print("|"+rs2.getString("sortName"));%></a><br>
<%}
}
%></td></tr>
<tr>
<td><a href="./XinWen">新闻中心</a></td>
</tr>
</table>
topright.jsp
<%@ page contentType="text/html;charset=gb2312" import="java.sql.*"%>
<jsp:useBean id="data" class="bean.Data"/>
<table border="0">
<%ResultSet rs1 = data.executeQuery("select * from book");%>
<%for(int i=0; i<6; i++){if(rs1!=null&&rs1.next()){%><%if(i%2==0){%><tr><%}%><td>
封面:<img src=<%=rs1.getString("pic")%>><br>
书名:<a href="BookDetails?bookId=<%=rs1.getInt("bookId")%>"><%= rs1.getString("bookName")%></a><br>
作者:<%=rs1.getString("author")%><br>
<%}}%>就是判断了一下,rs是不是空,如果是空还取值的话,会有空指针的错误。
SQL异常。
楼主你这代码哪来的。
不要到网上乱拷代码。
建议楼主删除重写
要么你new Data();
要么你用静态初始化快:static{
try
{
Class.forName(driver);
conn = DriverManager.getConnection(url,name,pass);
}
catch(ClassNotFoundException classnotfoundexception)
{
System.err.println("db(): " + classnotfoundexception.getMessage());
}
catch(SQLException e)
{
System.err.println("db(): " + e.getMessage());
}
}
while(rs2.next()) {
rs2.getXXX();
}
写法有问题,改为
while(rs.next()){
//取数据库中数据
}
这样就应该OK了。
private String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
private String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=BookStore";
应该为:
private String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private String url = "jdbc:sqlserver://localhost:1433;DatabaseName=BookStore";
那么就private String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private String url = "jdbc:sqlserver://localhost:1433;DatabaseName=BookStore";
应该是