本文档主要介绍了如何在Struts 2应用中实现多文件上传的功能。首先,开发者需要在项目的WEB-INF/lib目录下引入两个必要的库文件:commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar,这两个库是文件上传功能的基础。确保下载这两个文件并将其添加到项目的类路径中。
在HTML表单方面,关键在于设置enctype属性为"multipart/form-data",这样可以让表单支持文件上传。表单中包含两个<input type="file">元素,允许用户同时选择多个文件。当用户提交表单时,表单数据会被发送到指定的action URL(例如:${pageContext.request.contextPath}/xxx.action)。
在Struts 2的Action类中,创建相应的属性来接收上传的文件,如File[] uploadImages数组用于存储所有上传的文件,String[] uploadImagesContentType存储文件类型,String[] uploadImagesFileName则存储文件名。在saveFiles()方法中,通过FileUtils.copyFile()方法将上传的文件复制到服务器的指定目录(默认为/images),并返回处理结果,如"success"。
Struts 2作为一个MVC框架,提供了许多与Struts 1不同的优势。比如,Struts 2采用无侵入式设计,使得应用程序对Servlet API和Struts API的依赖性降低,这增强了其灵活性和扩展性。它还引入了拦截器机制,允许实现面向切面编程(AOP),例如权限控制。Struts 2支持类型转换器,可以在请求参数与目标类型之间自动转换,避免了在Struts 1中手动注册类型转换器的繁琐。此外,Struts 2支持多种表现层技术,如JSP、FreeMarker和Velocity,这增加了开发者选择合适模板语言的灵活性。
在升级Struts 1应用到Struts 2时,需要注意的是,Struts 2并非Struts 1的简单扩展,而是WebWork框架的重构。从Struts 1升级到Struts 2涉及的工作可能包括调整配置、更新Action和拦截器逻辑,以及熟悉新的设计理念和API。Struts 2的架构变化可能需要对既有代码进行一定的重构,以适应其模块化和声明式编程的特性。
这篇文档为开发者提供了在Struts 2环境中实现多文件上传的基本步骤,以及Struts 2框架相对于Struts 1的改进和优势,有助于理解和迁移到更现代的MVC框架。