为什么我的列表不能正确显示
出现的错误:
我的服务器报错:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | java.lang.NullPointerException at org.imooc.util.FileUtil.save(FileUtil.java: 19 ) at org.imooc.service.ExcelService.imp(ExcelService.java: 29 ) at org.imooc.servlet.ImportExcelServlet.doPost(ImportExcelServlet.java: 38 ) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 650 ) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 731 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: 303 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 208 ) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java: 52 ) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: 241 ) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 208 ) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 219 ) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: 110 ) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java: 494 ) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: 169 ) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: 104 ) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java: 1025 ) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java: 116 ) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: 445 ) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java: 1136 ) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java: 637 ) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java: 2555 ) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java: 2544 ) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: 1149 ) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java: 624 ) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java: 61 ) at java.lang.Thread.run(Thread.java: 748 ) |
相关的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package org.imooc.util; import org.apache.commons.fileupload.FileItem; import java.io.File; public class FileUtil { /* * * 上传文件的保存路径 * */ public static final String SAVE_PATH = "d:/upload/"; /* * * 保存上传的文件 * */ public static String save(FileItem fileItem,String path) throws Exception { String fileName = System.currentTimeMillis() + "_" + fileItem.getName(); fileItem.write( new File(path + fileName)); return fileName; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | package org.imooc.service; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.imooc.dto.ImportExcelParamDto; import org.imooc.dto.ImportExcelResultDto; import org.imooc.entity.Student; import org.imooc.util.FileUtil; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class ExcelService { public ImportExcelResultDto imp(ImportExcelParamDto dto){ ImportExcelResultDto result = new ImportExcelResultDto(); result.setTitle(dto.getTitle()); List<Student> studentList = new ArrayList<>(); result.setStudentList(studentList); String fileName = null ; try { fileName = FileUtil.save(dto.getExcel(),FileUtil.SAVE_PATH); } catch (Exception e) { e.printStackTrace(); result.setMsg( "保存上传文件失败" ); } if (fileName != null ) { //创建workbook,即取到一个Excel表 try { Workbook workbook = WorkbookFactory.create( new File(FileUtil.SAVE_PATH + fileName)); //然后我们取里面的sheet,我们取的是第一个sheet Sheet sheet = workbook.getSheetAt( 0 ); //接下来,我们取行,然后我们看有效的数据最后一行在哪 int rowNum = sheet.getLastRowNum(); for ( int i = 1 ; i <= rowNum; i++) { //取每一行 Row row = sheet.getRow(i); //取每一行里面的单元格 Student student = new Student(); studentList.add(student); student.setName(row.getCell( 0 ).getStringCellValue()); student.setAge(( int )row.getCell( 1 ).getNumericCellValue()); student.setTime( row.getCell( 2 ).getDateCellValue()); } } catch (Exception e) { e.printStackTrace(); result.setMsg( "解析Excel失败" ); } } return result; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | package org.imooc.servlet; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.imooc.dto.ImportExcelParamDto; import org.imooc.dto.ImportExcelResultDto; import org.imooc.dto.ParamDto; import org.imooc.service.ExcelService; import org.imooc.util.RequestUtil; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.util.List; public class ImportExcelServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this .doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //判断request流中的内容是普通的表单还是文件类型的 if (ServletFileUpload.isMultipartContent(req)){ ParamDto dto = RequestUtil.parseParam(req); ImportExcelParamDto paramDto = new ImportExcelParamDto(); paramDto.setTitle(dto.getParamMap().get( "title" )); paramDto.setExcel(dto.getFileMap().get( "excle" )); ExcelService service = new ExcelService(); ImportExcelResultDto resultDto = service.imp(paramDto); req.setAttribute( "result" ,resultDto); } else { } req.getRequestDispatcher( "WEB-INF/jsp/importExcelResult.jsp" ).forward(req,resp); } } |
0
收起
正在回答
2回答
经测试,在ImportExcelServlet类中,你的excle应该改为excel,因为名字单词写错了,所以获取的excel为null,修订之后的代码如下图,祝学习愉快~
chrismorgen
2018-09-06 12:03:14
FileUtil类中的第19行代码出现空指针制针异常,同学的代码是根据老师的视频一起敲的么?
从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧