package com.shine.struts.action;import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;import com.shine.model.FileList;
import com.shine.server.IFileImportServer;
import com.shine.struts.form.FileUploadForm;/**
 * 
 * @author luhaihua
 * 这个Action 是实现文件的上传功能,采用了Struts自带的upload的功能
 *
 */
public class FileUploadAction extends Action {
    
//IFileImportServer对象的注入
public IFileImportServer iFileImportServer; public void setFileImportServer(IFileImportServer fileImportServer) {
iFileImportServer = fileImportServer;
} public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//FileUploadForm 的初始化
FileUploadForm uploadForm = (FileUploadForm) form;
//FileList对象的初始化
FileList fileList = new FileList();
//文件流输出的初始化
FileOutputStream fo = null;
byte[] buff = null;
//获取上传文件的信息对象
FormFile uploadfile = uploadForm.getUploadfile();
//获取上传文件的文件名
String fileName = null;
fileName = uploadfile.getFileName();
//保存到hibernate映射表的对象
fileList.setFilename(fileName); ServletContext sc = servlet.getServletContext();
//获取文件上传的完全路径
String realpath = sc.getRealPath("/upload/" + fileName);
//保存到对象中
fileList.setFilepath(realpath);
//文件的创建
File WriteFile = new File(realpath);
try {
//根据File初始化IO
fo = new FileOutputStream(WriteFile);
//把文件的数据封装到byte[]
buff = uploadfile.getFileData();
//文件的写入数据
fo.write(buff);
//缓存的同步IO和系统
fo.flush();
//文件上传成功,保存数据到数据库
iFileImportServer.importFile(fileList);
} catch (FileNotFoundException e) {
            //抛出异常FileNotFoundException
e.printStackTrace();
} catch (IOException e) {
//抛出异常IO
e.printStackTrace();
}
//页面跳转到/form/read.jsp
return mapping.findForward("read");
}
}报严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.shine.struts.action.FileUploadAction.execute(FileUploadAction.java:71)
但是我检查这一行,看不出什么错误,请高手帮我看看!!!

解决方案 »

  1.   

    如果是 “iFileImportServer.importFile(fileList);”报错,应该是iFileImportServer空指针。
      

  2.   

    //IFileImportServer对象的注入 
    public IFileImportServer iFileImportServer; public void setFileImportServer(IFileImportServer fileImportServer) { 
    iFileImportServer = fileImportServer; 

    应该是iFileImportServer没有注入,检查你的spring配置文件。
      

  3.   

    捧场,debug一下,看看哪里空了
      

  4.   

    用debug调试,也可以用打印输出,判断这个对象是否为空?
      

  5.   

    nullpointerException是比较好找的一个错误