一个BBS练习 请大家帮忙 在ShowArticleDetail.jsp 里String strId=request.getParameter("id"); 获得的id是NULL
 
ShowArticleTree.jsp
<%@ page language="java" import="java.util.*" contentType ="text/html; charset = gbk "
    pageEncoding="gbk"%>
<%@ page import = "java.sql.*" %>
<%!String str = ""; private void tree(Connection conn, int id, int level) {
Statement stmt = null;
ResultSet rs = null;
String preStr = "";
for (int i = 0; i < level; i++) {
preStr += "----";
}
try {
stmt = conn.createStatement();
String sql = "select * from article where pid = " + id;
rs = stmt.executeQuery(sql);
while (rs.next()) {
str += "<tr><td>" + rs.getInt("id") + "</td><td>" + 
preStr + "<a href='ShowArticleDetail.jsp?id =" + rs.getInt("id") + "'>" + rs.getString("title") +"</a>" + "</td></tr>";
if (rs.getInt("isleaf") != 0) {
tree(conn, rs.getInt("id"), level + 1);
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<%
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/bbs?user=root&password=root";
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt
.executeQuery("select * from article where pid = 0");
while (rs.next()) {
str += "<tr><td>" + rs.getInt("id") + "</td><td>"+ "<a href='ShowArticleDetail.jsp?id =" + rs.getInt("id") + "'>" + rs.getString("title") +"</a>" + "</td></tr>";
if (rs.getInt("isleaf") != 0) {
tree(conn, rs.getInt("id"), 1);
} }
rs.close();
stmt.close();
conn.close();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'ShowArticleTree.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<table border="1">
<%=str%>
<% str="";%>
</table>
</body>
</html>ShowArticleDetail.jsp<%@ page language="java" import="java.util.*" contentType ="text/html; charset = gbk "
    pageEncoding="gbk"%><%@ page import = "java.sql.*" %>
<%

String strId=request.getParameter("id"); “获得的id值是NULl”
int id = Integer.parseInt(strId);
Class.forName("com.mysql.jdbc.driver");
String url = "jdbc:mysql://localhost:bbs?user=root&password=root";
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from article where id =" + id);


%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'ShowArticleDetail.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->  </head>
  
  <body>
    <%
    if(rs.next()) {
    %>
<table border = "1">
<tr>
<td>ID</td>
<td><%=rs.getInt("id") %></td>
</tr>
<tr>
<td>title</td>
<td><%=rs.getString("title") %></td>
</tr>
<tr>
<td>count</td>
<td><%=rs.getString("count") %></td>
</tr>
</table>
<%
 rs.close();
 stmt.close();
 conn.close();
 }
%>
  </body>
</html>
错误提示
org.apache.jasper.JasperException: An exception occurred processing JSP page /ShowArticleDetail.jsp at line 85: <%
6: 
7:  String strId=request.getParameter("id"); 
8:  int id = Integer.parseInt(strId);
9:  Class.forName("com.mysql.jdbc.driver");
10:  String url = "jdbc:mysql://localhost:bbs?user=root&password=root";
11:  Connection conn = DriverManager.getConnection(url);
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
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)
root cause java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Unknown Source)
java.lang.Integer.parseInt(Unknown Source)
org.apache.jsp.ShowArticleDetail_jsp._jspService(ShowArticleDetail_jsp.java:61)
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)

解决方案 »

  1.   

    String strId=request.getParameter("id");   没有给这个ID值吧.
      

  2.   

    确定rs.getInt("id")获取了吗,地址栏的id=xxxx有值吗
    rs.getInt("ID")试试
      

  3.   

    str += " <tr> <td>" + rs.getInt("id") + " </td> <td>"+ " <a href='ShowArticleDetail.jsp?id =" + rs.getInt("id") + "'>" + rs.getString("title") +" </a>" + " </td> </tr>"; 页面可有值?
    在找找吧
      

  4.   

    ShowArticleTree.jsp的第55行:
    ……" <a href='ShowArticleDetail.jsp?id =" ……这一部分中去掉id后面的空格试试
      

  5.   

    <a href='ShowArticleDetail.jsp?id =" + rs.getInt("id") + "'>" + rs.getString("title") +" </a>确定你的ID有值?
    再不行,id转成sting的试试
      

  6.   

    rs.getInt("id")获取了,地址栏的id=1 =2.....有值去掉空格也不行 还是那个问题
      

  7.   

    String strId=request.getParameter("id"); “获得的id值是NULl”
    你这个值从哪里传过来? 根本没name=id的控件,或者表单传值额,怎么会有值呢?
      

  8.   

    汗,么看到传值的地方,代码真长," <a href='ShowArticleDetail.jsp?id =" + rs.getInt("id") + "' 检查一下这里有没有值呢?如果没有,说明没取出来。有的话,就是传的过程中有问题。
      

  9.   

    request.setAttribute("id",id)   - id  通过点连接传过来的 。   呵呵 我没看代码  就是提个思路
      

  10.   

    这个语句传的id值
    " <a href='ShowArticleDetail.jsp?id =" + rs.getInt("id") + "'>" + rs.getString("title") +" </a>"
    应该是传的过程中出的问题 
    麻烦大家了
      

  11.   

    仔细检查你的文件,里面有类似 " <a href='ShowArticleDetail.jsp?id =" 的地方都需要把参数名“id”及等号之间的空格去除!
      

  12.   

    rs.getInt("id") 看一下这个有没有值
      

  13.   

    str += " <tr> <td>" + rs.getInt("id") + " </td> <td>"+ " <a href='ShowArticleDetail.jsp?id =" + rs.getInt("id") + "'>" + rs.getString("title") +" </a>" + " </td> </tr>"; 这句话太麻烦了,分开写试试。
      

  14.   

    看到页面后,右键查看源代码,查看对应链接的地方.看看那个href是不是正确的