在你自己的web目录下的web-inf/classes

解决方案 »

  1.   

    同意楼上的 
    补充一下 bean最好带上包 这样在JSP页面中用到bean时就不会出错
      

  2.   

    更改:
    D:\tomcat_5.0.3\webapps\ROOT\test\xmsb\sb\index2.jsp (使用了bean:DBManager)
    结果:
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 4 in the jsp file: /test/xmsb/sb/s_checklogin.jsp
    Generated servlet error:
    D:\tomcat_5.0.3\work\Catalina\localhost\_\org\apache\jsp\test\xmsb\sb\s_005fchecklogin_jsp.java:46: cannot resolve symbol
    symbol  : class DBManager 
    location: class org.apache.jsp.test.xmsb.sb.s_005fchecklogin_jsp
          DBManager s_checklogin = null;
          ^
    An error occurred at line: 4 in the jsp file: /test/xmsb/sb/s_checklogin.jsp
    Generated servlet error:
    D:\tomcat_5.0.3\work\Catalina\localhost\_\org\apache\jsp\test\xmsb\sb\s_005fchecklogin_jsp.java:48: cannot resolve symbol
    symbol  : class DBManager 
    location: class org.apache.jsp.test.xmsb.sb.s_005fchecklogin_jsp
            s_checklogin = (DBManager) _jspx_page_context.getAttribute("s_checklogin", PageContext.PAGE_SCOPE);
                            ^
    An error occurred at line: 4 in the jsp file: /test/xmsb/sb/s_checklogin.jsp
    Generated servlet error:
    D:\tomcat_5.0.3\work\Catalina\localhost\_\org\apache\jsp\test\xmsb\sb\s_005fchecklogin_jsp.java:50: cannot resolve symbol
    symbol  : class DBManager 
    location: class org.apache.jsp.test.xmsb.sb.s_005fchecklogin_jsp
              s_checklogin = new DBManager();
                                 ^
    An error occurred at line: 4 in the jsp file: /test/xmsb/sb/s_checklogin.jsp
    Generated servlet error:
    Note: D:\tomcat_5.0.3\work\Catalina\localhost\_\org\apache\jsp\test\xmsb\sb\s_005fchecklogin_jsp.java uses or overrides a deprecated API.
    Note: Recompile with -deprecation for details.
    3 errors org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
    org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:437)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:497)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:476)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:464)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.
    --------------------------------------------------------------------------------Apache Tomcat/5.0.30请问,是配置问题,还是DBManager类的问题,还是其他??
      

  3.   


    D:\tomcat_5.0.3\webapps\ROOT\test\xmsb\sb\index2.jsp
    --------------------------------------------------------------------------------------
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="erro.jsp" %>
    <!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=gb2312">
    <title>项目申报 - 申报单位登陆</title>
    <!-- 提交前判断文本域是否填入数据 -->
    <script language="JavaScript" type="text/javascript">
    function check(form1) {
        if(form1.tf1.value=="") {
         alert("没有输入单位代码");
    form1.tf1.focus ();
    return false;
        }
        if(form1.tf2.value=="") {
         alert("没有输入密码");
    form1.tf2.focus ();
    return false;
        }
    }
    </script>
    </head>
    <body>
    项目申报 - 申报单位登陆<br>
    <form action="s_checklogin.jsp" method="post" name="form1" onSubmit="return check(this)">
    单位代码<input name="tf1" type="text">
    密码<input name="tf2" type="password">
    <input name="提交" type="submit">
    </form>
    <%
    String s1=(String)session.getValue("login");
        if(s1==null) s1="";
    %>
    <%=s1%>
    </body>
    </html>D:\tomcat_5.0.3\webapps\ROOT\test\xmsb\sb\WEB-INF\classes\DBManager\DBManager.java
    ----------------------------------------------------------------------------------
    package DBManager;
    import java.sql.*;
    public class DBManager { 
    //1.Driver
        String s1="sun.jdbc.odbc.JdbcOdbcDriver";
        //2.DNS
    String s2="jdbc:odbc:DBManager";
        //3.Connection
    Connection con1=null;
        //4.SQL Statement
    Statement stm1=null;
        //5.Result Set
    ResultSet rs1=null;

    //6.Loading JDBC class
        public DBManager() {
         try {
             Class.forName(s1);
         } catch(java.lang.ClassNotFoundException e1) {
                System.err.println("[Exception] DBManagerLsj20041208 \nDBManager.DBManager() :"+e1.getMessage());
            }
        }
    //7.Execute first query. 
    //  Create connection to DNS; [test DNS]
    //  Create statement by connection; [test connection]
    //  Execute query by statement , return result set [execute sql query]
        public ResultSet executeQuery(String s3) {
            rs1=null;
            try {
             con1=DriverManager.getConnection(s2,"sa","sa");
                stm1=con1.createStatement();
                rs1=stm1.executeQuery(s3);
            } catch(SQLException sqle1) {
             System.err.println("[Exception] DBManagerLsj20041208 \nDBManager.executeQuery(String s3) :"+sqle1.getMessage());
            }
            return rs1;
        }
       
    //8.Execute second query. [when db must update] ==7
    //  Create connection to DNS; [test DNS]
    //  Create statement by connection; [test connection]
    //  Execute query by statement , return result set [execute sql query]
        public void executeUpdate(String s4) {
            stm1=null;
            rs1=null;
            try {
             con1=DriverManager.getConnection(s2,"sa","sa");
             stm1=con1.createStatement();
             stm1.executeQuery(s4);
             stm1.close();
             con1.close();
            } catch(SQLException e1) {
                System.err.println("[Exception] DBManagerLsj20041208 \nDBManager.executeUpdate(String s4) :"+e1.getMessage());
            }
        }
        //9.Close statement before close connection [I/O]
        public void closeStm() {
            try {
             stm1.close();
            } catch(SQLException e1) {
             e1.printStackTrace();
            }
        }
    //10.Close connection [I/O]
        public void closeCon() {
        try {
        con1.close();
        } catch(SQLException e1) {
        e1.printStackTrace();
        }
        }
    }D:\tomcat_5.0.3\webapps\ROOT\test\xmsb\sb\s_checklogin.jsp
    ------------------------------------------------------------------------------------
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
    <!-- Use bean -->
    <jsp:useBean id="s_checklogin" scope="page" class="DBManager"></jsp:useBean>
    <% 
    //Get the id and password 
    String s1=request.getParameter("tf1");
    String s2=request.getParameter("tf2");
    //Form sql statement
    String s3="SELECT * FROM i_s_login WHERE unit_id='"+s1+"' AND password='"+s2+"'";
    //Use the class : DBManager.executeQuery(String s3) 
    ResultSet rs1=s_checklogin.executeQuery(s3);
    //check the id and password from DB
    if(rs1.next()) {
    //[I/O]
    //1.Close the ResultSet
    rs1.close();
    //2.Close the s_checklogin's statement
    s_checklogin.closeStm();
    //3.Close the s_checklogin's connection
    s_checklogin.closeCon();
    //4.Creat session
    session.putValue("login","ok");
    session.putValue("unit_id",s1);
    //5.Rdirect user to new page (login successful)
    response.sendRedirect("s_index.jsp");
    }
    else {
    //1.Close the ResultSet
    rs1.close();
    //2.Close the s_checklogin's statement
    s_checklogin.closeStm();
    //3.Close the s_checklogin's connection
    s_checklogin.closeCon();
    //4.Creat session
    session.putValue("login","单位代码或密码错误");
    //5.Rdirect user to new page (new login)
    response.sendRedirect("index2.jsp");
    }
    %>请各位再帮忙看看。
      

  4.   

    其实你也可以自己在webapps下建自己的目录,不要什么都放在ROOT下,在自己的目录下建立CLASSES文件夹,把类文件放在下面也可以呀
      

  5.   

    谢谢 xiaoyaozgc() 和各位,我在 Root 下建立了 test 目录,其中两个子目录sb和Web-inf;
    http://localhost:8080/test/sb/s_checklogin.jsp 运行后提示HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: /test/sb/s_checklogin.jsp(4,0) The value for the useBean class attribute DBManager.DBManager is invalid.
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:150)
    org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1227)
    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:3272)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:244)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:495)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:476)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:464)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.
    --------------------------------------------------------------------------------Apache Tomcat/5.0.30
      

  6.   

    <jsp:useBean id="s_checklogin" scope="page" class="DBManager.DBManager"></jsp:useBean>
      

  7.   

    学习一下,遗忘了jsp,现在来补课了。
    ^_^
      

  8.   

    请教:bean的class文件放在tomcat5的什么位置  
    s_checklogin.jsp------------------------------------------------------
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><!-- Use bean -->
    <jsp:useBean id="dbm1" scope="page" class="DBManager.DBManager"></jsp:useBean>
    <% 
    //Get the id and password 
    String s1=request.getParameter("tf1");
    String s2=request.getParameter("tf2");

    //Form sql statement
    String s3="SELECT * FROM i_s_login WHERE unit_id='"+s1+"' AND password='"+s2+"'";

    //Use the class : DBManager.executeQuery(String s3) 
    ResultSet rs1=s_checklogin.executeQuery(s3);

    //check the id and password from DB
    if(rs1.next()) {
    //[I/O]
    //1.Close the ResultSet
    rs1.close();
    //2.Close the s_checklogin's statement
    dbm1.closeStm();
    //3.Close the s_checklogin's connection
    dbm1.closeCon();

    //4.Creat session
    session.putValue("login","ok");
    session.putValue("unit_id",s1);

    //5.Rdirect user to new page (login successful)
    response.sendRedirect("s_index.jsp");
    }
    else {
    //1.Close the ResultSet
    rs1.close();
    //2.Close the s_checklogin's statement
    dbm1.closeStm();
    //3.Close the s_checklogin's connection
    dbm1.closeCon();

    //4.Creat session
    session.putValue("login","单位代码或密码错误");

    //5.Rdirect user to new page (new login)
    response.sendRedirect("index2.jsp");
    }
    %>
    DBManager.java----------------------------------------------------------
    package DBManager;import java.sql.*;public class DBManager { 
    //1.Driver
        String s1="sun.jdbc.odbc.JdbcOdbcDriver";
        //2.DNS
    String s2="jdbc:odbc:DBManager";
        //3.Connection
    Connection con1=null;
        //4.SQL Statement
    Statement stm1=null;
        //5.Result Set
    ResultSet rs1=null;

    //6.Loading JDBC class
        public DBManager() {
         try {
             Class.forName(s1);
         } catch(java.lang.ClassNotFoundException e1) {
                System.err.println("[Exception] DBManagerLsj20041208 \nDBManager.DBManager() :"+e1.getMessage());
            }
        } //7.Execute first query. 
    //  Create connection to DNS; [test DNS]
    //  Create statement by connection; [test connection]
    //  Execute query by statement , return result set [execute sql query]
        public ResultSet executeQuery(String s3) {
            rs1=null;
            try {
             con1=DriverManager.getConnection(s2,"sa","sa");
                stm1=con1.createStatement();
                rs1=stm1.executeQuery(s3);
            } catch(SQLException sqle1) {
             System.err.println("[Exception] DBManagerLsj20041208 \nDBManager.executeQuery(String s3) :"+sqle1.getMessage());
            }
            return rs1;
        }
       
    //8.Execute second query. [when db must update] ==7
    //  Create connection to DNS; [test DNS]
    //  Create statement by connection; [test connection]
    //  Execute query by statement , return result set [execute sql query]
        public void executeUpdate(String s4) {
            stm1=null;
            rs1=null;
            try {
             con1=DriverManager.getConnection(s2,"sa","sa");
             stm1=con1.createStatement();
             stm1.executeQuery(s4);
             stm1.close();
             con1.close();
            } catch(SQLException e1) {
                System.err.println("[Exception] DBManagerLsj20041208 \nDBManager.executeUpdate(String s4) :"+e1.getMessage());
            }
        }
        
        //9.Close statement before close connection [I/O]
        public void closeStm() {
            try {
             stm1.close();
            } catch(SQLException e1) {
             e1.printStackTrace();
            }
        } //10.Close connection [I/O]
        public void closeCon() {
        try {
        con1.close();
        } catch(SQLException e1) {
        e1.printStackTrace();
        }
        }
    }
    s_checklogin.jsp---------------------erro---------------erro---------
    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: /test/sb/s_checklogin.jsp(4,0) The value for the useBean class attribute DBManager.DBManager is invalid.
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:150)
    org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1227)
    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:3272)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:244)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:495)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:476)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:464)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.
    ----------------------------------------------------------------------请帮忙看看。谢谢。
      

  9.   

    如果是.class文件,直接放在根目录的/WEB-INF/classes目录下,注意目录的大小写。
    如果是打包成.jar了,放在/WEB-INF/lib目录下。
      

  10.   

    webapps
        |
        ---test
              |
        ------|WEB-INF
              |       |
              |      classes
              |            |
              |             DBManager.java
              |             DBManager
              |                     |
              |                     DBManager.class 
              |sb
                 |
                  s_checklogin.jsp