大家好,我用:
Java EE 6
Tomcat 7
Hibernate 4.1.10.Final
Mysql-connector 5.1.10
Mysql 5.6.10
这是我第一个使用 Hibernate 的 Web 应用程序。我想使用 Hibernate 将字符串值添加到我的数据库中。但是,从 Tomcat 得到这样的错误:
type Exception report
message An exception occurred processing JSP page /doPayment.jsp at line 73
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 /doPayment.jsp at line 73
70: // hiberUtil.saveDB(read);
71: Transaction transaction = new Transaction();
72: transaction.setTransaction(read);
73: Factory.getInstance().getTransactionDAO().addTransaction(transaction);
74:
75: List<Transaction> transactions = Factory.getInstance().getTransactionDAO().getAllTransactions();
76: System.out.println("========Все трансакции=========");
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause
javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
org.apache.jsp.doPayment_jsp._jspService(doPayment_jsp.java:167)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause
java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration
us.test.HiberUtil.<clinit>(HiberUtil.java:26)
us.test.TransactionDAOImpl.addTransaction(TransactionDAOImpl.java:21)
org.apache.jsp.doPayment_jsp._jspService(doPayment_jsp.java:138)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause
java.lang.ClassNotFoundException: org.hibernate.cfg.Configuration
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
us.test.HiberUtil.<clinit>(HiberUtil.java:26)
us.test.TransactionDAOImpl.addTransaction(TransactionDAOImpl.java:21)
org.apache.jsp.doPayment_jsp._jspService(doPayment_jsp.java:138)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
什么可能是此错误的根源?
这是我的 JSP 文件:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<%
Token tk = new Token();
String read;
response.setContentType("text/html");
String payerid = request.getParameter("PayerID");
System.out.println(" Raw Token in DoPayment " + tk.raw_token);
try {
System.out.println("Sending form");
URL url = new URL(tk.APIEndpoint);
HttpURLConnection hConnection = (HttpURLConnection) url.openConnection();
HttpURLConnection.setFollowRedirects(true);
hConnection.setDoOutput(true);
hConnection.setRequestMethod("POST");
String token = request.getParameter("TOKEN");
System.out.println("Token in HttpURLConnection" + token);
PrintStream ps = new PrintStream(hConnection.getOutputStream());
hConnection.connect();
ps.print("USER=my_user&PWD=my_pwd&" +
"SIGNATURE=my_signature&" +
"VERSION=98.0&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_AMT=1.00&" +
"PaymentActionSpecified=true&" +
"PAYERID="+payerid+"&TOKEN=" + request.getParameter("token").replaceAll("-", "%2d") + "&" +
"METHOD=DoExpressCheckoutPayment");
ps.close();
System.out.println("Form sent");
if(HttpURLConnection.HTTP_OK == hConnection.getResponseCode()){
System.out.println(hConnection.getContentType());
InputStream is = hConnection.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(isr);
read = br.readLine();
while(read != null){
sb.append(read);
read = br.readLine();
}
// Save String to Database
Transaction transaction = new Transaction();
transaction.setTransaction(read);
Factory.getInstance().getTransactionDAO().addTransaction(transaction);
List<Transaction> transactions = Factory.getInstance().getTransactionDAO().getAllTransactions();
System.out.println("========All transactions=========");
for(int i = 0; i < transactions.size(); ++i) {
System.out.println("Transaction : " + transactions.get(i).getTransaction());
System.out.println("=============================");
}
System.out.println(sb.toString());
hConnection.disconnect();
System.out.println("Connection closed.");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
%>
</body>
</html>
这是我的项目的屏幕截图:
Ps 请不要告诉我“在 JSP 中使用 scriplets 是个坏主意” :) 我理解。尝试从一开始就了解它的工作原理,然后改进代码。