通过JSP页面上传CSV文件并使用Servlet打印其内容..?

时间:2015-07-03 11:56:56

标签: java jsp servlets

我需要设计一个JSP页面,用户通过该页面上传CSV文件,然后我需要通过Servlet在屏幕上打印其内容。

HTML代码喜欢这个

<form action="decode" enctype="multipart/form-data" method="post>
    <input type="file" name="record" />
    <input type="submit" />
</form>

现在在decode.java中,

DiskFileItemFactory fi = new DiskFileItemFactory();
ServletContext sc = this.getServletConfig().getServletContext();
File file = (File) sc.getAttribute("javax.servlet.context.tempdir");
fi.setRepository(file);
ServletFileUpload upload = new ServletFileUpload(fi);
List<FileItem> items = upload.parseRequest(request);

接下来我应该怎么做才能阅读上传的CSV文件中的每一个字......? 我不想将CSV文件存储在任何地方。只想阅读其内容并打印出来。

2 个答案:

答案 0 :(得分:0)

您可以使用Apache的JAVA CSV解析器库读取CSV文件。

然后在类路径中导入库后,您只需将其用作

即可
Reader in = new FileReader(file); //The file is the file which you get from the request(java.io.File)
Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
for (CSVRecord record : records) {
    //Do something with the records
}

有关详细信息,请查看https://commons.apache.org/proper/commons-csv/index.html

答案 1 :(得分:0)

我也有类似的要求,我需要通过jsp上传一个jsp文件并通过Servlet处理它

因此在这里,我使用了Apache称为opencsv的库。

  

upload.jsp

#dashboard[_ngcontent-xsb-c0]
  

UploadServlet.java

<form action="./upload" method="post" enctype="multipart/form-data">
    <input type="text" name="description" />
    <input type="file" name="file" />
    <input type="submit" />
</form>
  

其他

在开发上述要求时,我还遇到了一个问题,在抛出异常时指定了ClassNotFound ....(将输入流转换为CSVReader实例时)

这是因为即使已正确地将库附加到开发环境,该库也未附加到运行时环境。

解决方案:

将库文件复制到服务器位置的lib文件夹中,然后重新启动服务器(先关闭然后再启动)。 通过这样做,我能够解决问题

另一个更好的选择是使用gradle或maven之类的Build工具,而不是使用JSP / Servlet(我个人的观点)