【java】利用servlet解析报文,上传文件

简介: 由于工作需要,需要做一个excel导入的功能,这就需要上传excel文件到服务器,服务器做逻辑判断此文件是否是excel文件,接着利用poi的api就可以将内容转化为利用jdbc插入到数据库,达到批量数据导入的功能。


img_d9c8e817a9b72e74d95ffb3f10615ec2.jpg



由于工作需要,需要做一个excel导入的功能,这就需要上传excel文件到服务器,服务器做逻辑判断此文件是否是excel文件,接着利用poi的api就可以将内容转化为利用jdbc插入到数据库,达到批量数据导入的功能。


废话不多说,这其中上传文件有两种实现方式,一种是直接接到输入流,解析这个输入流,将里面的报文数据剔除,将剩下的文件写入到文件流,放到服务器上,这个是很早之前的解决思路,我们已经很少使用了,它不停的在操作数组,但是网上研究这个输入流的文章不多,写下来,没准对有兴趣的童鞋来说也是一件好事。二是我们采取的是apache的旗下一款上传组件,利用两个jar包,即可解决所有上传问题,还能够表单文件混合提交,多文件上传等,这里都将做说明,除此之外,我还从网上寻找了我认为对对此有兴趣的童鞋感兴趣的别人的优秀文章,希望大家能取其精华。


1,解析报文


所谓报文,就是指你的浏览器上传文件的时候,要把文件进行封装,此时如果你将输入流,在servlet里输出的话,里面会在输入流最前面加入文件标示信息,比如


------WebKitFormBoundaryoTPsEUl96q3GhQ0o


Content-Disposition: form-data; name="name"


------WebKitFormBoundaryoTPsEUl96q3GhQ0o


Content-Disposition: form-data; name="file2"; filename="text.txt"


Content-Type: text/plain


------WebKitFormBoundaryoTPsEUl96q3GhQ0o--


这些信息,就是所谓的输入流里读出来的,采用如下代码




目录
相关文章
|
1天前
|
Java 测试技术 API
《手把手教你》系列技巧篇(五十五)-java+ selenium自动化测试-上传文件-下篇(详细教程)
【5月更文挑战第19天】本文介绍了在Web自动化中处理文件上传的挑战,由于Selenium WebDriver不直接支持文件上传,因此需要借助外部工具。文章提到了两种主要的上传方式:基于input框的上传和非input控件的上传。对于非input控件的上传,推荐使用AutoIt,这是一个支持Windows GUI自动化的工具。
24 9
|
2天前
|
Java 开发者
探索Java并发编程:Fork/Join框架的深度解析
【5月更文挑战第25天】在多核处理器日益普及的今天,并发编程成为了提升应用性能的关键。Java语言提供了多种并发工具,其中Fork/Join框架是一个高效且强大的工具,用于处理分而治之的任务。本文将深入探讨Fork/Join框架的原理、使用及其在实际应用中的优化策略,旨在帮助开发者更好地利用这一框架以解决复杂的并发问题。
|
2天前
|
Web App开发 机器人 Java
《手把手教你》系列技巧篇(五十四)-java+ selenium自动化测试-上传文件-中篇(详细教程)
【5月更文挑战第18天】本文介绍了在Web自动化测试中处理文件上传的几种方法,特别是针对非`input`控件上传的场景。由于Selenium WebDriver无法操作系统级窗口,因此不能直接支持文件上传。作者提到了四种解决策略:AutoIT、Python的pywin32库、SendKeys库和keybd_event。文章以Java为例,详细阐述了使用Robot类模拟键盘操作来实现非`input`控件的文件上传,包括代码示例和实际项目中的应用。最后,作者分享了一个使用Python和Robot类处理百度图片搜索上传图片的实战案例,并指出有时Chrome浏览器可能需要特定条件才能成功模拟上传。
10 2
|
2天前
|
存储 算法 Java
深入解析Java虚拟机(JVM):技术原理与性能优化
深入解析Java虚拟机(JVM):技术原理与性能优化
17 1
|
3天前
|
Java 编译器 开发者
Java注解(Annotation)技术深入解析
Java注解(Annotation)技术深入解析
277 1
|
3天前
|
存储 Java
Java语言中的类与对象:深入解析与实战应用
Java语言中的类与对象:深入解析与实战应用
|
1天前
|
缓存 Java
Java并发编程:深入理解线程池
【5月更文挑战第26天】本文将深入探讨Java并发编程中的一个重要概念——线程池。我们将了解线程池的基本概念,它的工作原理,以及如何在Java中使用线程池。此外,我们还将讨论线程池的优点和缺点,以及在实际应用中如何选择合适的线程池策略。
|
1天前
|
Java 开发者
Java中的多线程编程:基础知识与实践
【5月更文挑战第26天】 在现代计算机科学中,多线程编程是一个复杂且强大的概念。Java作为一种广泛使用的编程语言,其对多线程的支持使得开发者能够创建出更为复杂、高效和响应迅速的应用程序。本文将深入探讨Java中的多线程编程,从基础概念到实际编程技巧,为读者提供全面的理解和实践指导。
|
1天前
|
Java 调度 开发者
Java并发编程:深入理解线程池
【5月更文挑战第26天】在Java中,线程池是处理并发任务的高效工具。本文将深入探讨Java线程池的原理、使用及性能优化,帮助开发者更好地理解和应用线程池技术。
|
1天前
|
安全 Java 开发者
探索Java中的多线程编程与并发控制
多线程编程是Java编程中不可或缺的一部分,它允许程序同时执行多个任务,从而显著提高程序的整体性能。然而,多线程编程也带来了诸如数据不一致、死锁等并发问题。本文将深入探讨Java中的多线程编程技术,包括线程的创建、同步与通信,并介绍几种常用的并发控制策略,旨在帮助读者更好地理解并发编程的复杂性和挑战,并学会如何编写高效、安全的并发程序。

推荐镜像

更多