gpt4 book ai didi

java - 将 HttpServletRequest 对象作为参数传递

转载 作者:行者123 更新时间:2023-11-29 06:12:55 28 4
gpt4 key购买 nike

一般来说,我需要通过调用 servlet 的 html 表单上传一个大文件,然后使用繁重的算法操作该文件并返回一个 xml 文档作为响应。这整个过程需要很多时间,所以为了避免浏览器超时连接,我决定创建一个对象(扩展Thread)来执行耗时的过程(上传文件和操作它)在不同的线程中,这将能够指示进程的进度。为此,我需要将 HttpServletRequest 请求作为参数传递给对象。当我尝试解析请求参数时(我使用的是 apache commons FileUpload),出现以下异常:

"the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is null" .

是否可以将 HttpServletRequest 对象传递给扩展 Thread 的对象?如果是这样,安全操作的正确做法是什么?

最佳答案

你不应该。当在线程中使用请求对象时,请求可能不再有效,并且 Tomcat 可能已将其清除(因此出现异常)(当然,假设您的表单确实是 enctype="multipart/form-data ")

所以为了正确处理这个问题,从请求中提取数据并将其传递给新线程。因此,您不会依赖于请求对象 - 仅依赖于它的内容。

请注意,Servlet 3.0 添加了一个用于异步服务器端处理的选项,这对您来说似乎是一个不错的选择 - check it out .

关于java - 将 HttpServletRequest 对象作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6169228/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com