奇怪,我把jspsmartupload下的WEB-INF/classes/下的文件全部烤到examples下的WEB-INF/classes/下后,不再报package com.jspsmart.upload does not exist
错误。
但是如果我把相应的东西烤到root目录下的WEB-INF/下确不行(root下的WEB-INF没有子目录classes,只好新建一个classes,烤到classes里面的文件也和先前examples环境下是一样),为什么这样确仍旧会报package com.jspsmart.upload does not exist
难道是我没有在server.xml和web.xml里设置一个文件夹作为整个jsp的文件夹,还是什么原因?

解决方案 »

  1.   

    有两个方法可以解决这个问题
    1。把jspsmartupload下的WEB-INF/classes/下的文件(com目录)全部拷到tomcat_home/common/classes/下2。是把jspsmartupload下的WEB-INF/classes/下的文件(com目录)全部拷到root下的classes之后要修改tomcat_home/conf/server.xml文件,去掉
     <!--
              <Context path="" docBase="ROOT" debug="0"/>
     -->
    两边的注释符号,再还可能要修改tomcat_home/conf/web.xml去掉
    <!--
        <servlet-mapping>
            <servlet-name>invoker</servlet-name>
            <url-pattern>/servlet/*</url-pattern>
        </servlet-mapping>
    -->
    两边的注释
      

  2.   

    谢谢楼上的,按你说的配置问题可用了。
    但是,还有别的错误:
    C:\jakarta-tomcat-4.1.24\work\Standalone\localhost\_\1\upload_jsp.java:9: package DBstep.iDBManager2000 does not exist
        [javac] import DBstep.iDBManager2000.*;
        [javac] ^
        [javac] C:\jakarta-tomcat-4.1.24\work\Standalone\localhost\_\1\upload_jsp.java:88: package DBstep does not exist
        [javac]    DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
        [javac]          ^
        [javac] C:\jakarta-tomcat-4.1.24\work\Standalone\localhost\_\1\upload_jsp.java:88: package DBstep does not exist
        [javac]    DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
        [javac]                                           ^
        [javac] 3 errors
    不知道,iDBManager2000();是什么,我是按在别人的例子代码写的。
      

  3.   

    将iDBManager2000改成你自己的数据库名
      

  4.   

    iDBManager2000应该是自定义的连接数据库的类吧
    你自己写一个,然后名字改成你自己的
    package DBstep does not exist表示你自己的环境里没有这个目录或者你没有打这样一个包,所以如果你没有DBstep这个目录的话,就不要照着别人的写,自己新建目录就行了。
      

  5.   

    那insert into list (name,password,size,date,MarkBody) values (?,?,?,?,?)";
    这里为何用“?”
    还有,prestmt.setString(1, "aaa1");为何两个参数,各表示什么
       prestmt.setString(2, "0000");为何两个参数,各表示什么
       prestmt.setInt(3, fileSize);为何两个参数,各表示什么
       prestmt.setString(4, DbaObj.GetDateTime());
       prestmt.setBinaryStream(5,fis,(int)file.length());怎么三个参数,各表示什么含义?
      

  6.   

    有没有高人帮个忙,<%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="com.jspsmart.upload.*" %>
    <%@ page import="DBstep.iDBManager2000.*"%>
    <%
       //实例化上载bean
        com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload();
        //初始化
        mySmartUpload.initialize(pageContext); 
        //设置上载的最大值
        mySmartUpload.setMaxFileSize(500 * 1024*1024);
        //上载文件
        mySmartUpload.upload();
       //循环取得所有上载的文件
       for (int i=0;i<mySmartUpload.getFiles().getCount();i++){
       //取得上载的文件
       com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);
       if (!myFile.isMissing())
        {
       //取得上载的文件的文件名
        String myFileName=myFile.getFileName();
        //取得不带后缀的文件名
        String  suffix=myFileName.substring(0,myFileName.lastIndexOf('.'));
        //取得后缀名
        String  ext= mySmartUpload.getFiles().getFile(0).getFileExt();  
        //取得文件的大小  
        int fileSize=myFile.getSize();
        //保存路径
        String aa=getServletContext().getRealPath("/")+"jsp\\";
        String trace=aa+myFileName;
        //取得别的参数
        String explain=(String)mySmartUpload.getRequest().getParameter("text");
        String send=(String)mySmartUpload.getRequest().getParameter("send");
        //将文件保存在服务器端 
        myFile.saveAs(trace,mySmartUpload.SAVE_PHYSICAL);
        //下面的是将上载的文件保存到数据库中
        //将文件读到流中 
        java.io.File file = new java.io.File(trace);
        java.io.FileInputStream fis = new java.io.FileInputStream(file);
      out.println(file.length());
       //打开数据库
       ResultSet result=null;
       String mSql=null;
       PreparedStatement prestmt=null; 
       DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
       DbaObj.OpenConnection();
       //将文件写到数据库中
       mSql="insert into list (name,password,size,date,MarkBody) values (?,?,?,?,?)";
       prestmt =DbaObj.Conn.prepareStatement(mSql);
       prestmt.setString(1, "aaa1");
       prestmt.setString(2, "0000");
       prestmt.setInt(3, fileSize);
       prestmt.setString(4, DbaObj.GetDateTime());
       prestmt.setBinaryStream(5,fis,(int)file.length());
       DbaObj.Conn.setAutoCommit(true) ;
       prestmt.executeUpdate();
       DbaObj.Conn.commit();
       out.println(("上载成功!!!").toString());
       }
       else 
       { out.println(("上载失败!!!").toString()); } 
       }//与前面的if对应
    %>这里面哪个是数据库的名称,用户和口令。
    还有   prestmt.setBinaryStream(5,fis,(int)file.length());中的fis是什么东西,没有看到那里有定义么?
      

  7.   

    ResultSet result=null;
       String mSql=null;
       PreparedStatement prestmt=null; 
       DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();
       DbaObj.OpenConnection();
    怎么没有数据库名和口令用户?