2013-12-12 36 views
0

我有一個類來處理我用Hibernate構建的企業,它的工作很棒。如何在JSP文件中使用Hibernate?

例如,如果我想要一個新的業務,我只需撥打addBusiness方法即可。

例子:

package implementations; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 
import entities.*; 

public class Controller { 
    private static SessionFactory sessionFactory = null; 

    public static SessionFactory getSessionFactroy() { 
     if(sessionFactory == null) 
      sessionFactory = new Configuration().configure().buildSessionFactory(); 
     return sessionFactory; 
    } 

    public static void main(String[] args) { 

     // TODO Auto-generated method stub 
     Users users = Users.getInstance(); 

     Businesses.getInstance().addBusiness(new Business(3, "", "", "", 1.1, 1.1)); 
    } 
} 

我有我的管理數據庫的Web應用程序,所以我試圖從JSP文件調用這個函數:

<%@page import="entities.Business"%> 
<%@page import="implementations.Businesses"%> 
<%@page import="entities.Coupon, implementations.Coupons "%> 
<% 
/* String bname = request.getParameter("bname"); 
    String image = request.getParameter("image"); 
    String details = request.getParameter("details"); 
    String latitude = request.getParameter("latitude"); 
    String longitude = request.getParameter("longitude"); 

    if(bname == null || image == null || details == null || latitude == null || longitude == null) { 
     out.println("You have missing arguments!"); 
    } else { 
     Businesses b = Businesses.getInstance(); 
     b.addBusiness(new Business(0, details, image, bname, Double.parseDouble(latitude), Double.parseDouble(longitude))); 
    } 
*/ 
    Businesses.getInstance().addBusiness(new Business(1, "", "", "", 1.1, 1.1)); 
    %> 

我得到這個錯誤的控制檯:

Dec 12, 2013 9:08:24 PM org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\MATLAB\R2011a\runtime\win64;C:\Program Files\MATLAB\R2011a\bin;. 
Dec 12, 2013 9:08:24 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:firstXDw' did not find a matching property. 
Dec 12, 2013 9:08:24 PM org.apache.coyote.AbstractProtocolHandler init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
Dec 12, 2013 9:08:24 PM org.apache.coyote.AbstractProtocolHandler init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
Dec 12, 2013 9:08:24 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 435 ms 
Dec 12, 2013 9:08:24 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Dec 12, 2013 9:08:24 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.12 
Dec 12, 2013 9:08:25 PM org.apache.coyote.AbstractProtocolHandler start 
INFO: Starting ProtocolHandler ["http-bio-8080"] 
Dec 12, 2013 9:08:25 PM org.apache.coyote.AbstractProtocolHandler start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
Dec 12, 2013 9:08:25 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 334 ms 
Dec 12, 2013 9:08:26 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [jsp] in context with path [/firstXDw] threw exception [javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/hibernate/Session] with root cause 
java.lang.ClassNotFoundException: org.hibernate.Session 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) 
    at org.apache.jsp.views.addnewbusiness_jsp._jspService(addnewbusiness_jsp.java:75) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

而這個錯誤在網絡上:

HTTP Status 500 - 

-------------------------------------------------------------------------------- 

type Exception report 

message 

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

exception 

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/hibernate/Session 
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:534) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:442) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 


root cause 

javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/hibernate/Session 
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:911) 
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:840) 
    org.apache.jsp.views.addnewbusiness_jsp._jspService(addnewbusiness_jsp.java:82) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 


root cause 

java.lang.NoClassDefFoundError: org/hibernate/Session 
    org.apache.jsp.views.addnewbusiness_jsp._jspService(addnewbusiness_jsp.java:75) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 


root cause 

java.lang.ClassNotFoundException: org.hibernate.Session 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) 
    org.apache.jsp.views.addnewbusiness_jsp._jspService(addnewbusiness_jsp.java:75) 
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419) 
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391) 
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 


note The full stack trace of the root cause is available in the Apache Tomcat/7.0.12 logs. 


-------------------------------------------------------------------------------- 

Apache Tomcat/7.0.12 

爲什麼是這個問題,我該如何解決它?

這是我的項目層次結構。

enter image description here

回答

0

javax.servlet.ServletException:java.lang.NoClassDefFoundError:組織/休眠/會話

看來你是缺少hibernate.core罐子......

+0

我把源文件移到了錯誤的文件夾中,它嚇壞了我..我知道這是問題,但它讓我生氣並沒有解決它.. – Billie

0

您沒有激活休眠會話/交易開放。看看Open Session In View模式。在這種模式下,您將包裝所有需要訪問Hibernate的請求(使用過濾器,如鏈接示例中所示)。視圖完成呈現後,交易將關閉。

+0

那麼,應該怎麼辦? – Billie

+0

我答案中的鏈接包含設置過濾器的示例代碼。然後將過濾器映射到web.xml中,以便它適用於任何需要使用Hibernate的請求(它也有一個示例web.xml條目)。 –

+0

對不起,但我仍然不明白 – Billie

相關問題