以编程方式访问 Servlet 3.0 中的 MultiPartConfig

2023-12-31

我使用Servlet 3@MultiPartConfig在我的应用程序中实现文件上传的注释。我需要在运行时设置多部分配置位置参数(而不是在注释参数中硬编码)。是否有任何 API 可用于以编程方式访问 servlet 的多部分配置?

Thanks


@MultiPartConfig 实际上只是容器的一个标记接口。当 servlet 初始化时,提供的注释值将通过代理对象映射到它。当传入请求是多部分/表单数据时,上传的部分将映射到请求,并且容器根据注释中的值和请求的部分执行必要的工作。您无法拦截此过程,因为这一切都发生在容器内部。然而,还有一种选择。它需要第二次执行文件系统操作。由于您拥有所有部分,因此您可以重建文件并将其“重新上传”到您选择的位置。它可能类似于下面的方法。请记住,虽然我在自己的 servlet 中快速测试了这一点以演示该概念,但它显然还没有完成代码:

@Override
protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
        throws ServletException, IOException {

    httpServletResponse.setContentType("text/html");
    PrintWriter printWriter = httpServletResponse.getWriter();

    InputStream inputStream;
    FileOutputStream fileOutputStream;

    for (Part part : httpServletRequest.getParts()) {

        inputStream = httpServletRequest.getPart(part.getName()).getInputStream();
        int i = inputStream.available();
        byte[] b = new byte[i];
        inputStream.read(b);
        String fileName = "";

        for (String temp : part.getHeader("content-disposition").split(";")) {
            if (temp.trim().startsWith("filename")) {
                fileName = temp.substring(temp.indexOf('=') + 1).trim().replace("\"", "");
            }
        }

        String uploadDir = "/temp";
        fileOutputStream = new FileOutputStream(uploadDir + "/" + fileName);
        fileOutputStream.write(b);
        inputStream.close();
        fileOutputStream.close();

        printWriter.write("Uploaded file " + uploadDir + "/" + fileName + ".");
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式访问 Servlet 3.0 中的 MultiPartConfig 的相关文章

  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O

随机推荐

  • QGraphicsView / QGraphicsScene 尺寸匹配

    如何制作具有指定大小的 QGraphicsScene 和 QGraphicsView 来监视具有相同大小的场景 这听起来像是一个愚蠢的问题 但请考虑以下测试代码 1 import sys from PyQt4 import QtGui Qt
  • 执行 GET 请求并构建查询字符串

    我对 Go 还很陌生 还不太了解一切 在许多现代语言 Node js Angular jQuery PHP 中 您可以使用附加查询字符串参数执行 GET 请求 在 Go 中执行此操作并不像看起来那么简单 而且我还无法真正弄清楚 我真的不想为
  • 从快捷方式打开特定目录中的 Powershell

    如何制作一个将 Powershell 打开到特定目录的 Windows 快捷方式 比如目标 SystemRoot system32 WindowsPowerShell v1 0 powershell exe noexit command c
  • Fiddler - 通过隧道传输 http 请求到端口 443

    我有 Fiddler 来解密 https 流量 效果很好 http fiddler2 com documentation Configure Fiddler Tasks DecryptHTTPS http fiddler2 com docu
  • Django 基于类的视图,get_absolute_url 不起作用

    我购买并正在阅读 Two Scoops of Django Best Practices for Django 1 5 一书 其中有一个基于类的视图的示例 执行此操作后 我在提交表单后收到错误 ImproperlyConfigured at
  • Eventmachine gem 安装失败

    我无法安装 eventmachine 好吧 我知道这个问题已经被问了很多 但到目前为止 我发现没有任何解决方案对我有帮助 所以我在这里发布作为最后的手段 I use windows 8 x64 using ruby 2 0 0p195 x6
  • 将图标作为资源嵌入到 WPF 应用程序中

    我正在尝试将一个图标嵌入到我的 WPF 应用程序中 以便我可以使用以下代码将其拉出以用作 Windows 7 JumpList 中的图标 newScene IconResourcePath System Reflection Assembl
  • 不区分大小写的正则表达式

    在 Haskell 中使用带有选项 标志 的正则表达式的最佳方法是什么 I use Text Regex PCRE 该文档列出了一些有趣的选项 例如 compCaseless compUTF8 但我不知道如何使用它们 All the Tex
  • 如何使用 lodash 比较对象而不考虑其顺序

    我正在尝试使用 lodash 比较两个对象 如下所示 问题是它总是返回 false 我认为问题在于对象具有不同的键和值顺序 然而 无论订单如何 我都找不到如何比较它的解决方案 如何忽略顺序并正确比较两个对象 var obj1 event p
  • 是否可以更改 sendEmail 中的“发件人电子邮件”?

    我目前正在编写一个脚本 如果 Excel 已更新 该脚本会向用户发送电子邮件 我能够发送电子邮件 但是 在测试时 我注意到 发件人 电子邮件是我的电子邮件 我想将 发件人 电子邮件更改为另一个电子邮件 电子邮件受保护 cdn cgi l e
  • 如何在 k8s 集群中更新 Prometheus 配置

    我在 k8s 中运行 Prometheus 你能告诉我如何更改运行配置吗prometheus yaml在集群中 我只想简单地改变 scrape configs job name my exporter scrape interval 15s
  • Javascript:让用户选择像 Firebug 这样的 HTML 元素?

    我想编写一个浏览器 Chrome FF 扩展 需要选择网页上的元素 我希望它的行为像 Firebug 的元素检查器那样 单击检查箭头 然后可以悬停 突出显示元素 当您单击所需的元素时 系统会检查该元素 我只是对允许用户选择元素的代码感兴趣
  • jOOQ:在单个对象中返回带有 join、groupby 和 count 的列表

    核心问题 如何正确地将查询中的信息获取到对象中 Idea我正在 DAO 中创建函数 这可以归结为以下查询 select A count from A left join B on B aId A aId group by A 我正在寻找一种
  • RXTX gnu.io.PortInUseException:&警告:RXTX 版本不匹配

    我正在尝试使用 RXTX API 通过 Java Marine API 从 NMEA 0183 GPS 获取 GPS 数据 运行 Java Marine 提供的 SerialPortExample java 我返回两个错误 也许它们是相关的
  • Unity脚本执行顺序和Start()

    Unity的文档中有这样一行 默认情况下 不同脚本的Awake OnEnable和Update函数按照脚本加载的顺序 任意 被调用 所以我在这里有两个问题 在这种情况下 任意 是什么意思 是随机的吗 这是否还包括 Start 和 Awake
  • 如何在node.js中使用集群?

    我对 Node js 和 Express 非常陌生 我目前正在通过构建自己的服务来学习它 我最近读到了有关集群的内容 我明白了集群的作用 我无法理解的是如何在生产应用程序中使用集群 我能想到的一种方法是使用主进程坐在前面 并以循环方式将传入
  • 通过c++接口导出整个类

    好的 我会重写问题 1 做的够吗 class declspec dllexport CXyz public int Food printf Food n 这样该类就可以在 exe 中像这样使用 include CXyz h CXyz obj
  • Imageview 和 PagerAdapter

    我想将图像放在 ViewPager 的每个页面中 就像一本书 这些图像来自 url 列表 我的适配器看起来像这样 private class MyPagerAdapter extends PagerAdapter Override publ
  • 警告:基类“A”应该在复制构造函数中显式初始化

    我有以下类结构 class A A A const A src class B virtual A B A B const B src A src class C virtual A C A C const C src A src clas
  • 以编程方式访问 Servlet 3.0 中的 MultiPartConfig

    我使用Servlet 3 MultiPartConfig在我的应用程序中实现文件上传的注释 我需要在运行时设置多部分配置位置参数 而不是在注释参数中硬编码 是否有任何 API 可用于以编程方式访问 servlet 的多部分配置 Thanks