2011-05-06 159 views
-1

我无法从数据库检索值。请通过代码,并引导我解决它无法从数据库检索值

public ArrayList getReqResInfo(String id) 
{ 
    String methodname="createConnection"; 
    Connection conn = null; 
    ResultSet rs=null; 
    PreparedStatement psmt; 
    int req_id=0; 
    String reqid=id; 
    ArrayList resList=new ArrayList(); 
    try { 
     conn = DBConnection.getJNDIConnection(); 
     System.out.println("getReqResInfo id=="+reqid); 
     psmt= conn.prepareStatement("select * from CR_REQUEST_RESOURCE_INFO where REQUEST_ID=?"); 
     psmt.setInt(1,Integer.parseInt(id)); 
     rs= psmt.executeQuery(); 
     System.out.println("getReqResInfo"); 

     while(rs.next()) 
     { 
      System.out.println(rs.getString("RES_LEVEL") +" " + rs.getString("NOOF_RES") +" " + rs.getString("RES_PRIMARY_SKILL") +" " + rs.getString("RES_QUALIFICATION") +" " + rs.getString("RES_SECONDARY_SKILL") +" " + rs.getString("RES_EXP"));    
      ReqResourceVO resourceVO=new ReqResourceVO(); 
      resourceVO.setLevel(rs.getString("RES_LEVEL")); 
      resourceVO.setNumres(rs.getString("NOOF_RES")); 
      resourceVO.setPrimary(rs.getString("RES_PRIMARY_SKILL")); 
      resourceVO.setQualification(rs.getString("RES_QUALIFICATION")); 
      resourceVO.setSecondary(rs.getString("RES_SECONDARY_SKILL")); 
      resourceVO.setYear(rs.getString("RES_EXP")); 

      resList.add(resourceVO); 
     } 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     try { 
      conn.close(); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    return resList; 
} 

在下面所提到我调用这个函数的servlet

if(action.equals("view")) 
{ 
    try 
    { 
     String reqid=req.getParameter("id"); 
     System.out.println("id "+reqid); 
     ReqProjVO reqProjVO=new ReqProjVO(); 
     reqProjVO.setRequestid(reqid); 
     ReqResDAO reqresDAO=new ReqResDAO(); 
     reqProjVO=reqresDAO.getReqProjInfo(reqProjVO); 
     ArrayList resVOList=reqresDAO.getReqResInfo(reqid); 
     req.setAttribute("projVO", reqProjVO); 
     HttpSession session = req.getSession(true); 
     session.setAttribute("resVOList", resVOList); 

     ReqProjDAO reqprojDAO=new ReqProjDAO(); 
     ArrayList projList=reqprojDAO.Project(); 
     req.setAttribute("projList", projList); 
     System.out.println("in request resource servlet"); 
     RequestDispatcher rd= req.getRequestDispatcher("jsp/manager/RequestforResource.jsp"); 
     rd.forward(req,res); 
     System.out.println("in request resource servlet"); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

价值观正在从数据库中取出,并将其打印在控制台上但它不会转发到相关的JSP页面,而是转到JSP页面中的日志,并且我收到了这个巨大的错误。我不知道该怎么办......

java.net.SocketException: Connection reset by peer: socket write error 
    at java.net.SocketOutputStream.socketWrite0(Native Method) 
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
    at weblogic.utils.io.ChunkedOutputStream.writeTo(ChunkedOutputStream.java:193) 
    at weblogic.servlet.internal.ResponseHeaders.writeHeaders(ResponseHeaders.java:434) 
    at weblogic.servlet.internal.ServletResponseImpl.writeHeaders (ServletResponseImpl.java:1256) 
    at weblogic.servlet.internal.ServletOutputStreamImpl.sendHeaders(Servlet OutputStreamImpl.java:244) 
    at weblogic.servlet.internal.ChunkOutput.flush(ChunkOutput.java:379) 
    at weblogic.servlet.internal.ChunkOutput.checkForFlush(ChunkOutput.java:469) 
    at weblogic.servlet.internal.ChunkOutput.write(ChunkOutput.java:304) 
    at weblogic.servlet.internal.ChunkOutputWrapper.write(ChunkOutputWrapper.java:139) 
    at weblogic.servlet.jsp.JspWriterImpl.write(JspWriterImpl.java:274) 
    at jsp_servlet._jsp._manager.__requestforresource._jspService(__requestforresource.java:237) 
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:34) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run (StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 
    at weblogic.servlet.internal.ServletStubImpl.onAddToMapException(ServletStubImpl.java:408) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:318) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175) 
    at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:505) 
    at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:251) 
    at manager.RequestResourceServlet.doPost(RequestResourceServlet.java:181) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3498) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(Unknown Source) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 

回答

3

的方法,你对我们(getReqResInfo())不会出现在堆栈跟踪。似乎在您自己的代码中堆栈跟踪的唯一部分是manager.RequestResourceServlet.doPost(),所以问题可能出在那里。如果你可以在RequestResourceServlet.java:181自己找到问题,那么太棒了!否则,提供更多的代码。你

额外有用的建议:

你的方法返回一个ArrayList。最好指定接口类型List(最佳实践:编程为接口而不是具体类型,以便稍后可以轻松更改)。此外,请注意List是通用的。您应该指定您的列表是ReqResourceVO的列表,因此请编写List<ReqResourceVO>。使用泛型意味着您的集合是类型安全的,并且以后不需要额外的投射。

很高兴看到您知道如何使用finally在最后关闭连接,但不要忘记关闭结果集和语句。 :)

+0

我已经添加了servlet编码请通过它并帮我解决这个问题。几乎从昨天开始,我一直在努力... ... – Akshatha 2011-05-06 10:30:55

+0

sop in while循环未在控制台中打印为什么它如此....... – Akshatha 2011-05-06 10:32:22

+0

如果仔细查看堆栈跟踪,您调用的方法在你的'doPost()'方法中被称为'forward()',并且你在你的代码中调用'rd.forward(req,res);'。我不是servlet的专家,但问题必须与调度员有关。 – BoffinbraiN 2011-05-06 10:59:35

2

当客户提出的要求,就会出现此异常,并接受充分反应之前,无论下面的事情发生了:

  1. 客户端浏览器已被关闭。
  2. 客户端的连接已断开。
  3. 客户端按下停止按钮。

More info

+0

+1从未听说过这些可能性。 – asgs 2011-05-12 05:00:12

0

在req.getRequestDispatcher中调用我的兴趣点到jsp页面的路径。你应该尝试用斜线开始吗?就像我发现的很多例子都开始了吗?所以它启动/ jsp /而不是普通的jsp/

+0

路径工作正常,所有的模块没有问题。我想有一些数据库的概率,但我无法识别它。 – Akshatha 2011-05-16 06:52:08