我在进行一个web开发,想用jsp调用后台hibernate类对数据库操作,但是老是失败,请问怎么回事:前台jsp页面:
Login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page isErrorPage="True"%><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'Login.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
  <%--/Home_Auto_Sys_2/src/Servlet.Login--%>
  <body>Welcome to use HAS system:
  <FORM action="Login_ok.jsp" method="post">
  <P align="center">
   用户ID : <INPUT type="text" name="UserID"></P>
<P align="center">
用户名称:<INPUT type="text" name="UserName">  &nbsp;</P>
<P align="center">用户密码:<INPUT type="password" name="Password">&nbsp;</P>
<P align="center"><INPUT type="Submit" name="Submit" value="提交" />&nbsp;
<INPUT type="Reset" name="Reset" value="重置"/></P>
</FORM>
</body>
</html>

解决方案 »

  1.   

    Login_ok.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="java.util.Iterator"%> 
    <%@ page import="DB.Hibernate.*"%>
    <%@ page import="org.hibernate.*"%>
     
    <jsp:useBean id="userBean" scope="page" class="DB.Hibernate.User.Insert_User"/><%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'Login_ok.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
      </head>
      
      <body>
        This is my JSP page. <br>
        <%!
         //userBean=new Customer();
         String UserID=null;
         String UserName=null;
         String Password=null;
         int loginAttempt=1;
         String[] a=new String[10];
        %>
        <%
         UserID=request.getParameter("UserID");
         UserName=request.getParameter("UserName");
         Password=request.getParameter("Password");
         a[0]=UserID;
         a[1]=UserName;
         a[2]=Password;
        
         try{
         userBean.Insert_User(a);
         }catch(Exception ex){}
         if (loginAttempt==0){
         out.println(loginAttempt);
         }else{
         out.println(loginAttempt);
         }
        
        %>
        <%out.println(request.getParameter("UserID"));%>
        <%out.println(request.getParameter("UserName"));%>
        <%out.println(request.getParameter("Password"));%>  
      <FORM action="" method="post">
      <P align="center">
       用户ID : <INPUT type="text" name="UserID"></P>
    <P align="center">
    用户名称:<INPUT type="text" name="UserName">  &nbsp;</P>
    <P align="center">用户密码:<INPUT type="password" name="Password">&nbsp;</P>
    <P align="center"><INPUT type="Submit" name="Submit" value="提交" />&nbsp;
    <INPUT type="Reset" name="Reset" value="重置"/></P>
    </FORM>
        
      </body>
    </html>
      

  2.   

    package DB.Hibernate.User;import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.Transaction;import DB.HibernateSessionFactory;public class Insert_User { public Insert_User() {
    super();
    // TODO Auto-generated constructor stub
    } public int Insert_User(String[] User){
    int i=0;
    User user=new User();
    UserId userid=new UserId();

    userid.setUserId(User[0]);
    userid.setUserName(User[1]);
    user.setPassword(User[2]);
    user.setPrivilege(User[3]);
    user.setEmail(User[4]);
    user.setPhone(User[5]);
    user.setStatus(User[6]);
    user.setDescription(User[7]);
    user.setId(userid);
    //message.setMsg("Hello Hibernate");

    try{
    Session session=HibernateSessionFactory.currentSession();
    Transaction tx = session.beginTransaction();
    session.save(user);
    tx.commit();
    System.out.println("Save successful.");
    i=0;
    }catch (HibernateException e){
    System.out.println("Save failed.");
    i=1;
    }finally{
    try{
    HibernateSessionFactory.closeSession();
    i=1;
    }catch (HibernateException el){
    i=1;
    }
    }
    return i;
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Insert_User a=new Insert_User();
    String[] b=new String[10];
    b[0]="c";
    b[1]="b";
    b[2]="a";
    a.Insert_User(b);

    }}
      

  3.   

    错误情况:
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: org/hibernate/HibernateException
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.lang.NoClassDefFoundError: org/hibernate/HibernateException
    java.lang.Class.getDeclaredConstructors0(Native Method)
    java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)
    java.lang.Class.getConstructor0(Class.java:2671)
    java.lang.Class.getConstructor(Class.java:1629)
    org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1218)
    org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
    org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
    org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
    org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
    org.apache.jasper.compiler.Generator.generate(Generator.java:3270)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:189)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
    --------------------------------------------------------------------------------Apache Tomcat/5.5.9
      

  4.   

    可以公用,但是你配置好xml文件及相关映射hbm。xml
      

  5.   

    先解决你的这个问题 
    然后在看看java.lang.NoClassDefFoundError: org/hibernate/HibernateException
      

  6.   

    当然可以共用了,用hibernate就是让查询变的省事和规范的。比如你先定义个类,然后把表里的字段定义为变量,然后再加映射就是表与你定义类的关系。
      

  7.   

    掺和一把要用 hibernate 的话,只要把 SessionFactory 给造出来,那就行了。
    管他是jsp还是applet或者application,都只是通过 SessionFactory 生产出来的 Session 实例来操作的。
      

  8.   

    我当然知道能共用,可是我不清楚java.lang.NoClassDefFoundError: org/hibernate/HibernateException该怎么解决。谁能告诉我?
      

  9.   

    你的user.hbm.xml和hibernate.cfg.xml配好没?
    网上找本书看吧,比如hibernate_reference.pdf  有好多中文的
      

  10.   

    还有就是看看你的hibernate3.jar和其他相关的jar包,有没有在你应用的web-inf/lib目录下面,或者在tomcat根目录下的common/lib下面也行
      

  11.   

    可以,不过要告诉搂住:hibernate虽然存取数据速度比较快,但是它比较呆板,不如jdbc来的灵活,这点请搂住注意。一般来说都是hibernate和jdbc结合用的,就是同时保留两种数据存取方式的接口,根据情况选择使用。