我的一段程序不知怎么突然出现这种错误,记得曾今调试成功过啊,可能修改了什么!但是找不到原因在哪。请各位高手帮忙。通过设定断点我发现错误主要出在如下红色部分,但是什么错误还不清楚!
<%@ page contentType="text/html;charset=gb2312"%><%@ page import="com.jspsmart.upload.*" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%@ page import="com.hubin.bean.DataBean"%>
<%--@ page import="DBstep.iDBManager2000.*"--%>
<%
   //upload bean
    com.jspsmart.upload.SmartUpload mySmartUpload=new com.jspsmart.upload.SmartUpload();
    //initialization
    mySmartUpload.initialize(pageContext); 
    //set the maximum of upload
    mySmartUpload.setMaxFileSize(500 * 1024*1024);
    //upload file
    mySmartUpload.upload();
   //get the upload file
   com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
   
   // get the other information (String)mySmartUpload.getRequest()
    String classid = mySmartUpload.getRequest().getParameter("classid") == null ? "" : (String)mySmartUpload.getRequest().getParameter("classid");
String classs = mySmartUpload.getRequest().getParameter("classs") == null ? "": (String)mySmartUpload.getRequest().getParameter("classs");
String catalog = mySmartUpload.getRequest().getParameter("catalog") == null ? "": (String)mySmartUpload.getRequest().getParameter("catalog");
String descriptions = mySmartUpload.getRequest().getParameter("descriptions") == null ? "": (String)mySmartUpload.getRequest().getParameter("descriptions");
String program = mySmartUpload.getRequest().getParameter("program") == null ? "": (String)mySmartUpload.getRequest().getParameter("program");
String colors = mySmartUpload.getRequest().getParameter("colors") == null ? "": (String)mySmartUpload.getRequest().getParameter("colors");
String views = mySmartUpload.getRequest().getParameter("views") == null ? "" : (String)mySmartUpload.getRequest().getParameter("views");
String myFileName = "";
//String fullName = "";
String editor = (String) request.getSession().getAttribute("logUserName");

java.io.File file = null;
java.io.FileInputStream fis = null;
  
   if (!myFile.isMissing())
    {
   //get the name of the upload file
    myFileName = myFile.getFileName();
    //store the path
    //String aa=getServletContext().getRealPath("/")+"jsp\\";
    String aa = request.getRealPath("/")+"temp\\";
    String trace=aa+  myFileName;
    System.out.println("trace = " + trace);
    //store the file in server 
    myFile.saveAs(trace,mySmartUpload.SAVE_PHYSICAL);
    
    //store the upload file in the databank
     
    file = new java.io.File(trace);
    fis = new java.io.FileInputStream(file);
   }
    //open the databank
    Connection con = null; PreparedStatement stmt = null;
Statement stmt2 = null;
try{
String url = "jdbc:mysql://localhost:3306/graphicslibrary?user=root&password=19821010&useUnicode=true&characterEncoding=8859_1";
con = DriverManager.getConnection(url);

stmt2 = con.createStatement(); ResultSet rs = null;
//-- if the classid is null, then add, otherweise modify
if (classid == null || "".equals(classid)) {
String sql_1 = "select max(classid)+1 as classid2 from graphicslibrary";
rs = stmt2.executeQuery(sql_1);
if (rs.next()) {
classid = String.valueOf(rs.getInt("classid2"));
}
System.out.println("classid ====== "+classid);
if(fis != null){
String sql = " insert into graphicslibrary (classid, class, catalog, descriptions, program, colors, views, picturename, picture, editor, edittime ) "+
  " values (?,?,?,?,?,?,?,?,?,?, now() ) ";
stmt = con.prepareStatement(sql);
stmt.setString(1,classid);
stmt.setString(2,classs);
stmt.setString(3,catalog);
stmt.setString(4,descriptions);
stmt.setString(5,program);
stmt.setString(6,colors);
stmt.setString(7,views);
stmt.setString(8,myFileName);
stmt.setBinaryStream(9,fis,(int)file.length());
stmt.setString(10,editor);
}else{
String sql = " insert into graphicslibrary (classid, class, catalog, descriptions, program, colors, views, editor, edittime ) "+
  " values (?,?,?,?,?,?,?,?, now() ) ";
stmt = con.prepareStatement(sql);
stmt.setString(1,classid);
stmt.setString(2,classs);
stmt.setString(3,catalog);
stmt.setString(4,descriptions);
stmt.setString(5,program);
stmt.setString(6,colors);
stmt.setString(7,views);
stmt.setString(8,editor);
}
System.out.println("+++++++++++++++++++");
stmt.executeUpdate();
}
//-- modify
else {
if(fis != null){
String sql = " update graphicslibrary set class=?, catalog=?, descriptions=?, program=?, colors=?, views=?, picturename=?, picture=?, editor=?, edittime = now()  "+
 " where classid = " + classid ;
stmt = con.prepareStatement(sql);
stmt.setString(1,classs);
stmt.setString(2,catalog);
stmt.setString(3,descriptions);
stmt.setString(4,program);
stmt.setString(5,colors);
stmt.setString(6,views);
stmt.setString(7,myFileName);
stmt.setBinaryStream(8,fis,(int)file.length());
stmt.setString(9,editor);
}else{
String sql = " update graphicslibrary set class=?, catalog=?, descriptions=?, program=?, colors=?, views=?, editor=?, edittime = now()  "+
 " where classid = " + classid ;
stmt = con.prepareStatement(sql);
stmt.setString(1,classs);
stmt.setString(2,catalog);
stmt.setString(3,descriptions);
stmt.setString(4,program);
stmt.setString(5,colors);
stmt.setString(6,views);
stmt.setString(7,editor);
}
System.out.println("---------------------------"); stmt.executeUpdate();
}


        

//-- after store show the records in the page
String sql_3 = "select * from graphicslibrary where classid = "+ classid;
rs = stmt2.executeQuery(sql_3);
DataBean dataBean = new DataBean(); if (rs.next()) {
dataBean.setClassid(rs.getString("classid"));
dataBean.setClasss(rs.getString("class"));
dataBean.setCatalog(rs.getString("catalog"));
dataBean.setProgram(rs.getString("program"));
dataBean.setDescriptions(rs.getString("descriptions"));
dataBean.setPicturename(rs.getString("picturename"));
dataBean.setColors(rs.getString("colors"));
dataBean.setViews(rs.getString("views"));
dataBean.setEditor(rs.getString("editor"));
dataBean.setEditTime(rs.getString("edittime"));
}
rs.close();
stmt2.close();
stmt.close();
con.close();
fis.close();        if (file.exists()) {  
  boolean flag = file.delete(); 
  if(!flag){            
          System.out.println("Deletion failed ");
          }
         } request.getSession().setAttribute("dataBean", dataBean);
response.sendRedirect("bankdetail.jsp");
}catch(Exception e){
e.printStackTrace();
}
   out.println(("fail to upload!!!").toString());%>

解决方案 »

  1.   

    异常内容:
    java.lang.NullPointerException
    at org.apache.jsp.upload_jsp._jspService(upload_jsp.java:217)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:534)
      

  2.   

    我找到错误的原因了,错误在:fis.close();其中fis = new java.io.FileInputStream(file);但是我操作的记录里上传的文件是空,所以fis也就为空了。可是应该如果修改才能避免这个错误呢?
      

  3.   

    关闭这个流之前加一条判断语句啊:
    if (fis != null) {
        fis.close();
    }