DAO
————————————————————————
public ArrayList queryUserById(int id) {

    ResultSet rs = null;
    ArrayList<TeacherDto> list =new ArrayList<TeacherDto>(); try {
// 获得Connection连接对象
conn = DBConnection.getConnection();
ps = conn.prepareStatement("select * from user_info where id = ?");
ps.setInt(1, id);
//System.out.println(ps);
rs = ps.executeQuery();

          while (rs.next()) {
TeacherDto teacherDto = new TeacherDto();
teacherDto.setId(rs.getInt("id"));
teacherDto.setUserName(rs.getString("user_name"));
teacherDto.setPassword(rs.getString("password"));
teacherDto.setAge(rs.getInt("age"));
list.add(teacherDto); }
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据库操作错误");
} finally {
// 释放资源
DBConnection.clear(conn, ps, rs);
}
return list;
}
————————————————————————————————————
servletpackage com;import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class QueryRsServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("gbk");
response.setContentType("text/html;charset=gbk");
//String sid = request.getParameter("id");
int id = Integer.parseInt(request.getParameter("id"));
TeacherDao teacherDao = new TeacherDao(); 
ArrayList list = teacherDao.queryUserById(id); 
request.setAttribute("list",list); 
//request.getRequestDispatcher("queryRs.jsp").forward(request,response);
response.sendRedirect("login_failure.jsp");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doGet(request,response);
}}
_____________________________________________________________________________________jsp1:<%@ page language="java" contentType="text/html; charset=gbk"
    pageEncoding="gbk"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>查询信息</title>
<script type="text/javascript" language="javascript">
    function validate4(){
       var uid = form4.id.value;
                if(uid!="")
                  {
                          return true;
                  }else{
                        alert("用户id信息不能为空");
                        form4.id.focus();
                            return false;             
          
                }
    }</script >
</head>
<body>
<center>
<h1>请输入要查询信息的ID</h1>
<hr>
<br>
<br>
<form name="form4" action="QueryRsServlet" method="get" onsubmit="return validate4();">
<table>
<tr>
<td>信息ID:</td>
<td><input type="text" name="id"></td>
</tr>

<tr>
<td colspan="3"  align="center" >
<input type="submit" value="提交">
<input type="reset" value="重置">
<input type="button" value="返回" onClick="javacript:window.location.href='ok.jsp';">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
________________________________________________________________
______________________________________________________________
jsp2:<%@ page language="java" contentType="text/html; charset=gbk"
    pageEncoding="gbk"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>查询结果</title>
</head>
<body>
<center>
<h1>查询得到的信息</h1>
<hr>
<br>
<br>
<form name="form4" action="InsertServlet" method="get" onsubmit="return validate4();">
<table>
<c:forEach var="list" items="${list}">
<tr>
<td>I&nbsp;&nbsp;D:<h4><font color="red" size="5">${list.id }</font></h4></td>
</tr>
<tr>
<td>用户名:<h4><font color="red" size="5">${list.userName }</font></h4></td>
</tr>
<tr>
<td>密&nbsp;&nbsp;码:<h4><font color="red" size="5">${list.password }</font></h4></td>
</tr>
<tr>
<td>年&nbsp;&nbsp;龄:<h4><font color="red" size="5">${list.age }</font></h4> </td>
</tr>
</c:forEach>
<tr>
<td colspan="3"  align="center" >
<input type="submit" value="提交">
<input type="reset" value="重置">
<input type="button" value="返回" onClick="javacript:window.location.href='ok.jsp';">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>

解决方案 »

  1.   

    调试出现的错误是:
    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: java.lang.NumberFormatException: For input string: "id"
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    com.QueryRsServlet.doGet(QueryRsServlet.java:24)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    root cause java.lang.NumberFormatException: For input string: "id"
    java.lang.NumberFormatException.forInputString(Unknown Source)
    java.lang.Integer.parseInt(Unknown Source)
    java.lang.Integer.parseInt(Unknown Source)
    javax.el.ListELResolver.coerce(ListELResolver.java:166)
    javax.el.ListELResolver.getValue(ListELResolver.java:51)
    javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
    org.apache.el.parser.AstValue.getValue(AstValue.java:97)
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:923)
    org.apache.jsp.queryRs_jsp._jspService(queryRs_jsp.java:73)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    com.QueryRsServlet.doGet(QueryRsServlet.java:24)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
    --------------------------------------------------------------------------------Apache Tomcat/6.0.14
      

  2.   

    int id = Integer.parseInt(request.getParameter("id")); 
    这里的request.getParameter("id")可能是null也可能是空字符串也可能是非数字字符串。楼主先取出来作下非空判断,总之就是这里不对,数字格式化错误。
      

  3.   

    我今天也遇到了这个错误,回来看一下源码才发观,不过跟你的不同。
    你的应该没有循环进去,建议你看一下jstl的循环标签。
    另外说一下让别人搜索到的另一种情况:就是当你的窗口类实现了List接口后,el会把第二个字符解析为list的序列index,所以转换数字,所以就出错了
    具体代码:
    private final static int coerce(Object property) {
    if (property instanceof Number) {
    return ((Number) property).intValue();
    }
    if (property instanceof Character) {
    return ((Character) property).charValue();
    }
    if (property instanceof Boolean) {
    return (((Boolean) property).booleanValue() ? 1 : 0);
    }
            if (property instanceof String) {
                return Integer.parseInt((String) property);
            }
    throw new IllegalArgumentException(property != null ? property
    .toString() : "null");
    }