2015-10-16 39 views
-1

我想使用jsp從數據庫檢索數據並在jsp上顯示它。我嘗試過使用jsp和servlet,它正在工作,但是當我只想使用jsp來處理這個錯誤時。使用jsp從數據庫檢索數據

retrieve.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body> 
    <h4>Enter Employee ID and the dates</h4> 
    <form name="retrieve form" action="display.jsp" method="POST"> 
     <table border="0"> 

      <tbody> 
       <tr> 
        <td>Employee ID</td> 
        <td><input type="text" name="Emp_id" required="required"/></td> 
       </tr> 
       <tr> 
        <td>From Date:</td> 
        <td><input type="date" name="From" value="yyyy/MM/dd" required="required"/></td> 
       </tr> 
       <tr> 
        <td>To Date:</td> 
        <td><input type="date" name="To" value="yyyy/MM/dd" required="required"/></td> 
       </tr> 
      </tbody> 
     </table> 
     <input type="reset" value="Clear" name="clear" /> 
     <input type="submit" value="Submit" name="submit" /> 
    </form> 
</body> 
</html> 

Display.jsp:

<%@page import="java.sql.*"%> 
<%@page import="com.eis.bean.ConnectionProvider" %> 
<%@page import="com.eis.bean.Provider" %> 
<%@page import="java.util.Date"%> 

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body> 
    <%! 
     public class RD{ 


     PreparedStatement ps = null; 
     ResultSet rs = null; 
     public RD(){ 
      try{ 
     Connection conn=ConnectionProvider.getConn(); 
     ps = conn.prepareStatement("SELECT * FROM timsheetdb.logintable WHERE Emp_id=? and LoginDate BETWEEN ? AND ?; "); 

      } 
      catch(Exception e){ 
       e.printStackTrace(); 
      } 
     } 

     public ResultSet getRD(String Emp_id, String from, String to){ 
      try{ 
       ps.setString(1,Emp_id); 
       ps.setString(2,from); 
       ps.setString(3,to); 

      } 
      catch(Exception e){ 
       e.printStackTrace(); 
      } 
      return rs; 
     } 
     } 
%> 
<% String employeeid= new String(); 
String date1= new String(); 
String date2= new String(); 

if(request.getParameter("Emp_id")!=null){ 
    employeeid= request.getParameter("Emp_id"); 
} 

if(request.getParameter("from")!=null){ 
    date1= request.getParameter("from"); 
} 

if(request.getParameter("to")!=null){ 
    date2= request.getParameter("to"); 
} 

RD rd= new RD(); 
ResultSet table= rd.getRD(employeeid,date1,date2); 
    %> 
    <table border="0"> 
      <tbody> 
       <tr> 
        <td>Emp_id</td> 
        <td>Login Date</td> 
        <td>Login Time</td> 
        <td>Logout Time</td> 
        <td>Task</td> 
        <td>Total</td> 
        <td>Overtime</td> 
       </tr> 
       <% while (table.next()){ 
       %> <tr> 
        <td><%=table.getString("Emp_id") %></td> 
        <td><%=table.getString("LoginDate") %></td> 
        <td><%=table.getString("LoginTime") %></td> 
        <td><%=table.getString("LogoutTime") %></td> 
        <td><%=table.getString("task") %></td> 
        <td><%=table.getString("Total") %></td> 
        <td><%=table.getString("Overtime") %></td> 
       </tr> 
       <% } %> 
      </tbody> 
     </table> 
</body> 
</html> 
下面

是我得到的錯誤:

HTTP Status 500 - An exception occurred processing JSP page /display.jsp at line 80 

type Exception report 

message An exception occurred processing JSP page /display.jsp at line 80 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

org.apache.jasper.JasperException: An exception occurred processing JSP page  /display.jsp at line 80 

77:       <td>Total</td> 
78:       <td>Overtime</td> 
79:      </tr> 
80:      <% while (rs.next()){ 
81:     %> <tr> 
82:       <td><%=rs.getString("Emp_id") %></td> 
83:       <td><%=rs.getString("LoginDate") %></td> 
Stacktrace: 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:574) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
root cause 

java.lang.NullPointerException 
org.apache.jsp.display_jsp._jspService(display_jsp.java:178) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
note The full stack trace of the root cause is available in the Apache  Tomcat/8.0.26 logs. 

請讓我知道我可以我解決這個。

+1

在JSP中放入SQL代碼或任何與數據庫相關的代碼是個好主意。 –

+0

你可以發佈你的getter和setter? – bmarkham

+0

thanks @WeareBorg我知道我已經創建了dao和servlet頁面......但是我想知道爲什麼這個錯誤會出現在這個 – dpk12

回答

0
80:      <% while (rs.next()){ 

<% while (table.next()){ 

不存在同樣的事情,也許你沒有部署最新版本的代碼。

,但所有的一切錯誤

java.lang.NullPointerException 

你需要檢查,如果RS(或表)使用前設置。

if(rs!=null) 

We are borg一樣,不要在jsp中做sql,只是不要。

0

改變你的方法是這樣

public ResultSet getRD(String Emp_id, String from, String to){ 
       try{ 
        ps.setString(1,Emp_id); 
        ps.setString(2,from); 
        ps.setString(3,to); 
        rs = ps.executeQuery(); 
       } 
       catch(Exception e){ 
        e.printStackTrace(); 
       } 
       return rs; 
      } 

早些時候你剛纔設置在準備好的聲明的參數和你不執行準備statement.You簡單地恢復你已經初步保持零和從不更新RS你的code.Thats爲什麼它失敗nullpointerexception。 我希望它會給你一個指向正確方向的指針。