【问题标题】:An exception occurred processing JSP page ...The server encountered an internal error that prevented it from fulfilling this request处理 JSP 页面时发生异常...服务器遇到内部错误,导致无法完成此请求
【发布时间】:2017-04-19 05:48:10
【问题描述】:

structure of employee details tableHTTP 状态 500 - 在第 44 行处理 JSP 页面 /call_employee_data.jsp 时发生异常

输入异常报告

消息在第 44 行处理 JSP 页面 /call_employee_data.jsp 时发生异常

描述服务器遇到了一个内部错误,导致它无法完成这个请求。

异常

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

41: <%}
42: %>
43: 
44: <jsp:include page="employee_data.jsp"></jsp:include>
45: <jsp:include page="footer.jsp"></jsp:include>
46: </div>
47: </body>

堆栈跟踪:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:525)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:412)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:321)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

根本原因

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

67:                 out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px'>"+rs.getString(4)+"</td>");
68:                 out.println("<td style='text-align:center; border: solid 1px #000; border-top:none;border-right:none;  width:125px'>"+rs.getString(5)+"</td>");
69:                 out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:175px''>"+rs.getString(6)+"</td>");
70:                 out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:125px''>"+rs.getDate(8)+"</td>");
71:                 out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px''>"+rs.getString(7)+"</td>");
72:                 out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px''>"+rs.getDate(9)+"</td>");
73:                 out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px''>"+rs.getString(10)+"</td>");

堆栈跟踪:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:525)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:412)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:321)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:924)
org.apache.jsp.call_005femployee_005fdata_jsp._jspService(call_005femployee_005fdata_jsp.java:120)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:321)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

根本原因

javax.servlet.ServletException: java.sql.SQLException: Value '' can not be represented as java.sql.Date
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:868)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:797)
org.apache.jsp.employee_005fdata_jsp._jspService(employee_005fdata_jsp.java:152)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:321)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:924)
org.apache.jsp.call_005femployee_005fdata_jsp._jspService(call_005femployee_005fdata_jsp.java:120)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:321)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

根本原因

java.sql.SQLException: Value '' can not be represented as java.sql.Date
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
com.mysql.jdbc.ResultSetRow.getDateFast(ResultSetRow.java:141)
com.mysql.jdbc.ByteArrayRow.getDateFast(ByteArrayRow.java:238)
com.mysql.jdbc.ResultSetImpl.getDate(ResultSetImpl.java:2194)
com.mysql.jdbc.ResultSetImpl.getDate(ResultSetImpl.java:2147)
org.apache.jsp.employee_005fdata_jsp._jspService(employee_005fdata_jsp.java:126)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:321)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:924)
org.apache.jsp.call_005femployee_005fdata_jsp._jspService(call_005femployee_005fdata_jsp.java:120)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:321)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)

请帮忙。这是 call_employee_data.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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">
<link href="stylesheet.css" rel="stylesheet" type="text/css">
<title>Hospital Management System</title>
</head>
<body>
<%
Object a=session.getAttribute("utype");
String usertype=String.valueOf(a);
%>
<div id="div_index">
<jsp:include page="header.jsp"></jsp:include>
<%
if(usertype.equals("admin")){

%>

<jsp:include page="menubar_admin.jsp"></jsp:include>

<%}
else if(usertype.equals("patient")){
%>
    <jsp:include page="menubar_patient.jsp"></jsp:include>

    <%}
    else if(usertype.equals("doctor")){
    %>
    <jsp:include page="menubar_doctor.jsp"></jsp:include>
    <%}

    else if(usertype.equals("staff")){
    %>
    <jsp:include page="menubar_staff.jsp"></jsp:include>
    <%}
    else{%>
    <jsp:include page="menubar.jsp"></jsp:include>
<%}
%>

<jsp:include page="employee_data.jsp"></jsp:include>
<jsp:include page="footer.jsp"></jsp:include>
</div>
</body>
</html>

employee_data.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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>
<link href="stylesheet.css" rel="stylesheet" type="text/css">
</head>

<%@ page import="java.io.*" %>

<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="package_clsdal.*;" %>
<body>
<div id="grid">
<table align="center" cellspacing="2" cellpadding="2">

     <%      
      clsdal obj_clsdal=new clsdal();
            ResultSet rs = null ; 
            ResultSetMetaData rmd = null ; 
            obj_clsdal.connect();
            int colcount,coll;

             rs=obj_clsdal.execSQL("select * from employee_details");
            rmd=rs.getMetaData();
            colcount=rmd.getColumnCount();



             if(rs!=null)
            {
            rmd=rs.getMetaData();
           coll=rmd.getColumnCount();
//            out.println("<br> <br>");
            out.println("<table style='width: auto; height: auto;' align='center' border='0' cellspacing='0' cellpadding='0'>");
            out.println("<p align='center' style='font-size:20px;'><b>Employee Details</b></p>");
           for(int i=1;i<=coll;i++)
               {

               out.println("<th style='text-align:center; border: solid 1px #000; border-bottom:none; background-color:#072933 '><font color=#FFFFFF>"+rmd.getColumnLabel(i)+"</font></th>"); 

           }

            int i=1;
           while(rs.next())
           {
               i++;
               for(int n=i;n<=i;n++)
                 {

                 if(i%2==0)
                 {
                     out.println(" <tr>");
                 }
                 else
                 {
                     out.println(" <tr>");
                 }                   

               //out.println("<tr>"); 
                out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:75px'>"+rs.getString(1)+"</td>");
                out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px'>"+rs.getString(2)+"</td>");
                out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px'>"+rs.getString(3)+"</td>");
                out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px'>"+rs.getString(4)+"</td>");
                out.println("<td style='text-align:center; border: solid 1px #000; border-top:none;border-right:none;  width:125px'>"+rs.getString(5)+"</td>");
                out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:175px''>"+rs.getString(6)+"</td>");
                out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:125px''>"+rs.getDate(8)+"</td>");
                out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px''>"+rs.getString(7)+"</td>");
                out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px''>"+rs.getDate(9)+"</td>");
                out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px''>"+rs.getString(10)+"</td>");
                out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px''>"+rs.getString(11)+"</td>");
                out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; width:100px''>"+rs.getString(11)+"</td>");
            out.println("</tr>");
             }
           }

            out.println("</table>");
           }



     %>
 </table>

</div>
</body>

【问题讨论】:

  • 您有几个这样的调用rs.getDate(index),错误消息通知您某些或所有行中的这些列(8 和 9)中的值不能表示为 java.sql.Date对象。
  • 此外,根据错误消息Value '' can not be represented as java.sql.Date,这些日期值似乎为空
  • 能贴一下employee_details表的结构吗?
  • 添加了结构。图片文件

标签: java html jsp


【解决方案1】:

<c:if test="${not empty rs.getDate(8)}"> out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:125px''>"+rs.getDate(8)+"</td>"); </c:if>

【讨论】:

    【解决方案2】:

    以下是我观察到的几件事。

    1. 查看employee_data.jsp 中的rs.getXXX()。你没有遵守命令。对于select * from employee_details,在调用rs.getXXX() 时应使用resultset 的正确方法。如果您查看您的表格,您只有第 9 和第 10 作为日期,所以 rs.getDate(8) 不正确。仅对第 9 列和第 11 列使用 rs.getDate(),即 rs.getDate(9)rs.getDate(11)

          out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:125px''>"+rs.getDate(8)+"</td>"); //???
          out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px''>"+rs.getString(7)+"</td>"); //??
          out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px''>"+rs.getDate(9)+"</td>");
          out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px''>"+rs.getString(10)+"</td>");
          out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; border-right:none; width:100px''>"+rs.getString(11)+"</td>");
          out.println("<td style='text-align:center; border: solid 1px #000; border-top:none; width:100px''>"+rs.getString(11)+"</td>"); //????
      
    2. 不要使用select *。这是一种不好的做法。将来,如果您的 employee_details 有更多列,那么您必须更改代码以适应这些新列。使用select EmployeeID,Password,&lt;otherfield&gt; from employee_details

    3. 使用rs.getXXX(index) 中的索引时要小心。您可能会犯错误。相反,您可以使用rs.getXXX(columnnameintbl)。例如,您可以使用rs.getString("EmployeeID"),而不是rs.getString(1)

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2016-01-24
      • 1970-01-01
      • 2017-04-05
      • 2017-05-14
      • 2012-04-18
      • 2012-01-20
      • 2015-09-21
      • 2014-07-25
      相关资源
      最近更新 更多